วิธีการใช้ MFC เพื่อทำให้ Excel และกรอกข้อมูลช่วงที่ มีแถวลำดับ

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 186120 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความนี้อธิบายวิธีการทำให้ Microsoft Excel และกรอกรายละเอียดช่วง multi-cell กับอาร์เรย์ของค่า

ข้อมูลเพิ่มเติม

กรอกข้อมูลช่วง multi-cell โดยไม่ต้อง populating เซลล์หนึ่งโดยหนึ่ง คุณต้องสร้างตัวแปร SAFEARRAY ซึ่งคุณส่งไปยัง Excel โดยการเรียกฟังก์ชัน SetValue สำหรับวัตถุช่วง ที่สองมิติ ขั้นตอนต่อไปนี้แสดงให้เห็นถึงแนวทางที่กระบวนการนี้

หมายเหตุสำหรับอัตโนมัติ Microsoft Excel 2000 และ 2002

ตัวอย่างรหัสในบทความนี้ใช้คลาส wrappers ที่สร้างขึ้นจากไลบรารีของวัตถุ Excel 97 (Excel 8.olb) มีการปรับเปลี่ยน slight รหัสนี้สามารถถูกประยุกต์ใช้กับการทำงานอัตโนมัติไคลเอนต์ที่ใช้คลาส wrappers สำหรับ Excel 2000 (Excel9.olb) หรือ Excel 2002 (Excel.olb) สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ตัวอย่างรหัสที่อธิบายไว้ในบทความนี้กับ Microsoft Excel 2000 หรือไลบรารีชนิด 2002 กรุณาคลิกหมายเลขบทความด้านล่างนี้เพื่อดูในฐานความรู้ของ Microsoft:
224925ข้อมูล: ไลบรารีชนิดสำหรับ Office อาจเปลี่ยน มีการนำออกใช้ใหม่

ขั้นตอนในการสร้างโครงการ

  1. ทำตามขั้นตอนที่ 1 ถึง 12 ในบทความใน Microsoft Knowledge Base เพื่อสร้างตัวอย่างโครงการ interfaces IDispatch ใช้ และสมาชิกฟังก์ชันที่กำหนดไว้ในไลบรารีชนิด Excel8.olb ต่อไปนี้:
    178749วิธีการสร้างโครงการการทำงานอัตโนมัติที่ใช้ MFC และไลบรารีของชนิด
  2. กล่องโต้ตอบที่สร้างในขั้นตอนที่ 4 และ 5 ของบทความหลัก178749เพิ่มตัวควบคุมต่อไปนี้ มีคุณสมบัติตามที่ระบุ เพิ่มตัวแปรของสมาชิกสอดคล้องกัน:
                                      Member                Member
          Control   Name              Variable Type         Variable Name
          -----------------------------------------------------------------
          Edit      IDC_STARTINGCELL  m_sStartingCell       CString
          Edit      IDC_NUMROWS       m_iNumRows            short
          Edit      IDC_NUMCOLS       m_iNumCols            short
          CheckBox  IDC_STRING        m_bFillWithStrings    BOOL
    					
  3. ที่ด้านบนของไฟล์ AutoProjectDlg.cpp เพิ่มบรรทัดต่อไปนี้:
          #include "excel8.h"
    					
  4. เพิ่มรหัสต่อไปนี้เพื่อ CAutoProjectDlg::OnRun() ในแฟ้ม AutoProjectDlg.cpp

    ตัวอย่างรหัส

          // OLE Variant for Optional.
          COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    
          _Application objApp;
    
          _Workbook objBook;
          Workbooks objBooks;
          Worksheets objSheets;
          _Worksheet objSheet;
          Range range;
    
          if(!UpdateData(TRUE))
          {
             return;
          }
    
          // Instantiate Excel and start a new workbook.
          objApp.CreateDispatch("Excel.Application");
          objBooks = objApp.GetWorkbooks();
          objBook = objBooks.Add(VOptional);
          objSheets = objBook.GetWorksheets();
          objSheet = objSheets.GetItem(COleVariant((short)1));
    
          //Get the range where the starting cell has the address
          //m_sStartingCell and it's dimensions are m_iNumRows x m_iNumCols.
          range = objSheet.GetRange(COleVariant(m_sStartingCell),
                                    COleVariant(m_sStartingCell));
          range = range.GetResize(COleVariant(m_iNumRows),
                                  COleVariant(m_iNumCols));
    
          //*** Fill the range with an array of values.
    
          //Create the SAFEARRAY.
          COleSafeArray saRet;
          DWORD numElements[2];
          numElements[0]= m_iNumRows;   //Number of rows in the range.
          numElements[1]= m_iNumCols;   //Number of columns in the range.
    
          if(m_bFillWithStrings)
          {
             saRet.Create(VT_BSTR, 2, numElements);
          }
          else
          {
             saRet.Create(VT_R8, 2, numElements);
          }
    
          //Fill the SAFEARRAY.
          long index[2];
          long iRow;
          long iCol;
    
          for(iRow=0;iRow<=m_iNumRows-1;iRow++)
          {
             for(iCol=0;iCol<=m_iNumCols-1;iCol++)
             {
                index[0] = iRow;
                index[1] = iCol;
                if(m_bFillWithStrings)      //Fill with Strings.
                {
                   VARIANT v;
                   CString s;
                   VariantInit(&v);
                   v.vt = VT_BSTR;
                   s.Format("r%dc%d", iRow, iCol);
                   v.bstrVal = s.AllocSysString();
                   saRet.PutElement(index, v.bstrVal);
                   SysFreeString(v.bstrVal);
                   VariantClear(&v);
                }
                else                     //Fill with Numbers.
                {
                   double d;
                   d = (iRow*1000) + iCol;
                   saRet.PutElement(index, &d);
                }
             }
          }
    
          //Set the range value to the SAFEARRAY.
          range.SetValue(COleVariant(saRet));
          saRet.Detach();
    
          //Return control of Excel to the user.
          objApp.SetVisible(TRUE);
          objApp.SetUserControl(TRUE);
    					
  5. การคอมไพล์ และเรียกใช้โครงการ
  6. ระบุค่าสำหรับตัวควบคุมต่าง ๆ บนกล่องโต้ตอบต่อไปนี้:
          Control               Contents
          ------------------------------
          IDC_STARTINGCELL      A1
          IDC_NUMROWS           10
          IDC_NUMCOLS           5
          IDC_STRING            True
    						
    คลิกตกลง

    ผลลัพธ์: สมุดงานใหม่ถูกสร้างขึ้น และมีการเติมข้อมูลให้กับค่าสายอักขระ A1:E10 เซลล์ของแผ่นงานแรก
  7. ระบุค่าสำหรับตัวควบคุมต่าง ๆ บนกล่องโต้ตอบต่อไปนี้:
          Control               Contents
          ------------------------------
          IDC_STARTINGCELL      C3
          IDC_NUMROWS           2
          IDC_NUMCOLS           9
          IDC_STRING            False
    						
    คลิกตกลง

    ผลลัพธ์: สมุดงานใหม่ถูกสร้างขึ้น และมีการเติมข้อมูลให้กับค่าตัวเลข C3:K4 เซลล์ของแผ่นงานแรก

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับอัตโนมัติ Microsoft Excel ที่ใช้ MFC โปรดดูบทความในฐานความรู้ของ Microsoft ต่อไปนี้:
186122วิธีการใช้ MFC เพื่อทำให้ Excel และรับข้อแถวลำดับจากช่วง

184663วิธีการฝัง และการทำให้แผ่นงาน Microsoft Excel ที่ มี MFC

179706ใช้ MFC เพื่อทำให้ Excel และสร้าง/รูปแบบสมุดงานใหม่แบบ

178781วิธีการที่ทำให้ Excel ที่ใช้ MFC และฟังก์ชันแผ่นงาน

178783วิธีการใช้ MFC เมื่อต้องการสร้างแผนภูมิ Microsoft Excel

คุณสมบัติ

หมายเลขบทความ (Article ID): 186120 - รีวิวครั้งสุดท้าย: 7 มกราคม 2554 - Revision: 3.0
ใช้กับ
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 97 Standard Edition
Keywords: 
kbautomation kbcode kbhowto kbinterop kbmt KB186120 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:186120

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com