Cara menggunakan MFC untuk mengotomatisasi Excel 2000 dan Excel 2002 dan mendapatkan sebuah array dari berbagai di Excel 2000 dan Excel 2002

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 186122 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini menunjukkan bagaimana untuk mengotomatisasi Microsoft Excel dan kembali nilai-nilai dari berbagai multi-cell ke array.

INFORMASI LEBIH LANJUT

Untuk kembali nilai-nilai dari berbagai multi-cell tanpa query sel satu per satu, Anda harus menggunakan fungsi anggota GetValue Berbagai objek untuk kembali nilai-nilai ke VARIAN. Anda kemudian membangun SAFEARRAY didasarkan pada VARIAN Anda kembali dari GetValue. Setelah Anda memiliki SAFEARRAY, Anda dapat mengakses unsur-unsur yang menggunakan GetElement. Langkah-langkah berikut menggambarkan ini proses dan menunjukkan bagaimana Anda dapat mengakses string dan numerik unsur-unsur.

Catatan untuk mengotomatisasi Microsoft Excel 2000 dan 2002

Kode contoh dalam artikel ini menggunakan kelas pembungkus dihasilkan dari perpustakaan objek Excel 97 (Excel 8.olb). Dengan sedikit modifikasi, ini kode dapat diterapkan untuk klien otomasi yang menggunakan kelas pembungkus untuk Excel 2000 (Excel9.olb) atau Excel 2002 (Excel.olb). Untuk informasi tambahan tentang penggunaan kode contoh yang dijelaskan dalam artikel ini dengan Microsoft Excel 2000 atau 2002 jenis perpustakaan, klik nomor artikel di bawah ini untuk melihat artikel di Basis Pengetahuan Microsoft:
224925 INFO: Perpustakaan jenis untuk kantor dapat berubah dengan rilis baru

Langkah-langkah untuk membuat proyek

  1. Di Microsoft Excel, buat buku kerja baru. Mengisi sel A1:C8 dengan campuran data string dan numerik. Simpan buku kerja sebagai "c:\test.xls" dan keluar dari Microsoft Excel.
  2. Ikuti langkah-langkah 1 melalui 12 dalam artikel berikut di Basis Pengetahuan Microsoft untuk membuat contoh proyek yang menggunakan IDispatch antarmuka dan fungsi anggota didefinisikan dalam perpustakaan jenis Excel8.olb:
    178749Cara membuat proyek otomatisasi menggunakan MFC dan perpustakaan jenis
  3. Di atas AutoProjectDlg.cpp file, menambahkan baris berikut:
          #include "excel8.h"
    					
  4. Tambahkan kode berikut untuk CAutoProjectDlg::OnRun() di AutoProjectDlg.cpp file:

    Contoh kode

          // OLE Variant for Optional.
          COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    
          _Application objApp;
          _Workbook objBook;
          Workbooks objBooks;
          Worksheets objSheets;
          _Worksheet objSheet;
          Range objRange;
          VARIANT ret;
    
          // Instantiate Excel and open an existing workbook.
          objApp.CreateDispatch("Excel.Application");
          objBooks = objApp.GetWorkbooks();
          objBook = objBooks.Open("C:\\Test.xls",
                    VOptional, VOptional, VOptional, VOptional,
                    VOptional, VOptional, VOptional, VOptional,
                    VOptional, VOptional, VOptional, VOptional);
          objSheets = objBook.GetWorksheets();
          objSheet = objSheets.GetItem(COleVariant((short)1));
    
          //Get the range object for which you wish to retrieve the
          //data and then retrieve the data (as a variant array, ret).
          objRange = objSheet.GetRange(COleVariant("A1"), COleVariant("C8"));
          ret = objRange.GetValue();
    
          //Create the SAFEARRAY from the VARIANT ret.
          COleSafeArray sa(ret);
    
          //Determine the array's dimensions.
          long lNumRows;
          long lNumCols;
          sa.GetUBound(1, &lNumRows);
          sa.GetUBound(2, &lNumCols);
    
          //Display the elements in the SAFEARRAY.
          long index[2];
          VARIANT val;
          int r, c;
          TRACE("Contents of SafeArray\n");
          TRACE("=====================\n\t");
          for(c=1;c<=lNumCols;c++)
          {
             TRACE("\t\tCol %d", c);
          }
          TRACE("\n");
          for(r=1;r<=lNumRows;r++)
          {
             TRACE("Row %d", r);
             for(c=1;c<=lNumCols;c++)
             {
                index[0]=r;
                index[1]=c;
                sa.GetElement(index, &val);
                switch(val.vt)
                {
                case VT_R8:
                   {
                      TRACE("\t\t%1.2f", val.dblVal);
                      break;
                   }
                case VT_BSTR:
                   {
                      TRACE("\t\t%s",(CString)val.bstrVal);
                      break;
                   }
    
                case VT_EMPTY:
                   {
                      TRACE("\t\t<empty>");
                      break;
                   }
                }
             }
             TRACE("\n");
          }
    
          //Close the workbook without saving changes
          //and quit Microsoft Excel.
          objBook.Close(COleVariant((short)FALSE), VOptional, VOptional);
          objApp.Quit();
    					
  5. Mengkompilasi proyek dan menjalankannya.
  6. Klik jalankan. Nilai-nilai dalam sel A1:C8 ditampilkan dalam Keluaran jendela.

REFERENSI

Untuk informasi tambahan tentang mengotomatisasi Microsoft Excel menggunakan MFC, klik nomor artikel di bawah ini untuk melihat artikel di Basis Pengetahuan Microsoft:
186120 Cara menggunakan MFC untuk mengotomatisasi Excel dan mengisi berbagai dengan Array
184663 Cara untuk menanamkan dan mengotomatisasi Microsoft Excel Worksheet dengan MFC
179706 Cara menggunakan MFC untuk mengotomatisasi Excel dan membuat/Format buku kerja baru
178781HOWTO: Mengotomatisasi Excel menggunakan MFC dan lembar kerja fungsi
178783HOWTO: Menggunakan MFC membuat Microsoft Excel bagan
167668Bagaimana untuk melewati SafeArray string dalam VARIAN
Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

Properti

ID Artikel: 186122 - Kajian Terakhir: 16 September 2011 - Revisi: 2.0
Berlaku bagi:
  • 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
Kata kunci: 
kbprogramming kbfunctions kbautomation kbhowto kbinterop kbmt KB186122 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:186122

Berikan Masukan

 

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