ID Artikel: 141759 - Kajian Terakhir: 15 September 2011 - Revisi: 2.0

CONTOH: XLCLIENT: klien otomasi untuk Excel

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.

Pada Halaman ini

Perbesar semua | Perkecil semua

RINGKASAN

XLCLIENT menunjukkan bagaimana mengontrol Microsoft Excel menggunakan OLE otomatisasi. Direktori MFC berisi sampel yang menggunakan MFC. Direktori SDK berisi sampel yang tidak menggunakan MFC.

INFORMASI LEBIH LANJUT

Berkas berikut ini tersedia untuk diunduh dari Pusat Unduhan Microsoft:
Xlclient.exe (http://download.microsoft.com/download/excel95/utility1/1/WIN98/EN-US/XLCLIENT.EXE)
Untuk informasi lebih lanjut tentang cara men-download berkas Dukungan Microsoft, klik nomor artikel di bawah ini untuk melihat artikel pada Basis Pengetahuan Microsoft:
119591  (http://support.microsoft.com/kb/119591/EN-US/ ) Cara mendapatkan berkas Dukungan Microsoft dari Layanan Online
Microsoft telah memindai berkas ini dari virus. Microsoft menggunakan perangkat lunak pendeteksi virus terbaru yang tersedia pada tanggal saat berkas dikirimkan. Berkas tersebut disimpan di server yang aman, yang membantu mencegah pengubahan yang tidak sah terhadap berkas.Excel memperlihatkan benda, properti dan metode sehingga klien dapat mengaksesnya melalui OLE Automation. Contoh ini menunjukkan bagaimana untuk menulis klien otomasi yang setara dengan kode Visual Basic 4.0 berikut yang memasukkan nilai-nilai ke sel dan menciptakan bagan nilai-nilai.
Const xlWorkSheet =-4167
Const xl3DPie =-4102
Const xlRows = 1
Mengatur aplikasi = CreateObject("Excel.Application")
aplikasi.Terlihat = True
Set buku kerja = aplikasi.Workbooks.Add(template:=xlWorkSheet)
Mengatur lembar kerja = buku kerja.Worksheets(1)
lembar kerja.Range("a1:D1").Nilai = Array ("Utara", "Selatan", "Timur", "Barat")
lembar kerja.Range("a2").Nilai = 5,2
lembar kerja.Range("B2").Nilai = 10
lembar kerja.Range("C2").Nilai = 8
lembar kerja.Range("D2").Nilai = 20
Mengatur rentang = lembar kerja.Range("a1:D2")
Set bagan = buku kerja.Charts.Add
bagan.ChartWizard sumber: = range, Galeri: = xl3DPie,
Format: = 7, plotBy: = xlRows, categoryLabels: = 1, seriesLabels: = 0, hasLegend: = 2, judul: = "Persentase penjualan" buku kerja.Disimpan = True
' Sehingga yang Excel tidak akan bertanya apakah akan menyimpan dokumen ini di dekat.

Bagaimana menulis sebuah klien otomasi untuk Microsoft Excel

Klien otomasi menggunakan antarmuka IDispatch untuk kontrol Microsoft Excel. Informasi berikut ini berlaku ketika menulis otomatisasi klien untuk Microsoft Excel:

  • Membaca dokumentasi otomatisasi Microsoft Excel metode/properti yang Anda berencana untuk menggunakan di file Vba_xl.hlp yang Dikirim dengan Excel.
  • Nilai-nilai konstanta Microsoft Excel seperti xlWorkSheet, xl3DPie, xlRows dll dapat diperoleh dari artikel Basis Pengetahuan berikut:
    112671  (http://support.microsoft.com/kb/112671/EN-US/ ) DARI: "Built-in konstanta dalam Visual Basic for Applications" (WC0993)
    Nilai-nilai konstan ini juga dapat diperoleh dari Microsoft Excel jenis perpustakaan dengan menggunakan perpustakaan jenis browser seperti Ole2vw32.exe (di kompiler 's \bin direktori). Buka Microsoft Excel Perpustakaan jenis (untuk contoh, Xl5en32.olb untuk US versi Microsoft Excel 95) menggunakan menu File/ViewTypeLibrary Ole2vw32.exe. Drop typeinfos combobox dan pilih "konstanta". Konstanta Microsoft Excel akan ditampilkan dalam kotak daftar variabel/DataMembers.
  • Semua argumen dan kembali jenis metode otomatisasi Microsoft Excel dan jenis adalah jenis VARIAN. Jenis sebenarnya yang perlu diisi ke dalam dan Diperoleh dari VARIAN tidak secara eksplisit dinyatakan dalam Vba_xl.hlp. Namun jenis dapat mudah ditebak dari dokumentasi. Untuk contoh, beberapa dapat lulus sebagai VT_I2, string sebagai VT_BSTR dan objek sebagai VT_DISPATCH. Microsoft Excel akan melakukan sesuai coercions Jika diperlukan. Nilai-nilai yang dikembalikan oleh Microsoft Excel dapat sama halnya menduga. Jika jenis tepat dari nilai kembali tidak ditentukan Periksa VARIANT.vt lapangan atau memaksa tipe pengembalian menggunakan VariantChangeType. Seperti disebutkan dalam "Microsoft Excel spesifik" bagian dari Bab 7 dalam Microsoft Excel pengembang Kit di Kit Pengembang kantor di MSDN CD, Microsoft Excel akan pernah kembali VARIAN dengan datatype yang tidak dalam daftar berikut:
       Data Type                               Variant Constant
       ---------                               ----------------
       Boolean                                 VT_BOOL
       Currency (scaled integer)               VT_CY
       Date                                    VT_DATE
       Error cell values (#N/A, #REF etc.)     VT_ERROR
       Integer                                 VT_I2
       Long (long integer)                     VT_I4
       Object                                  VT_DISPATCH
       Single (single-precision floating-point)VT_R4
       Double (double-precision floating-point)VT_R8
       String                                  VT_BSTR
    						
Informasi berikut ini berlaku untuk setiap klien otomasi:

  • OLE menggunakan Unicode string. Makro OLESTR dapat digunakan untuk mengkonversi string konstanta untuk Unicode string. Dalam MFC, variabel yang berisi string dapat dikonversi ke dan dari Unicode menggunakan macro T2OLE dan OLE2T. Lihat MFC TechNote 59 untuk rincian. Kode yang melakukan tidak menggunakan MFC dapat menemukan informasi untuk ANSI/Unicode konversi di Basis Pengetahuan berikut Artikel:

    Bagaimana mengkonversi dari ANSI untuk Unicode & Unicode untuk ANSI untuk OLE ID: 138813  (http://support.microsoft.com/kb/138813/EN-US/ )
  • Pemanggil OLE API atau antarmuka metode bertanggung jawab untuk membebaskan argumen dan kembali nilai-nilai.

Bagaimana menulis klien otomasi MFC untuk Microsoft Excel

  1. Gunakan AppWizard untuk membuat aplikasi dengan otomatisasi dukungan.
  2. Pilih tab OLE Automation di kelas Wizard dan pilih AddClass / dari OLE TypeLibrary. Pilih Excel Perpustakaan jenis (Xl5en32.olb untuk Amerika Serikat Versi Microsoft Excel 95) dalam direktori Microsoft Excel. Pilih objek Microsoft Excel yang akan Anda gunakan. ClassWizard akan membuat COleDispatchDriver diturunkan proxy kelas untuk setiap objek yang Anda pilih. Sampel dipilih aplikasi, kisaran, buku kerja, buku kerja, Lembar kerja, grafik dan grafik Excel objek dan ClassWizard dibuat kelas baru di Xl5en32.h dan Xl5en32.h. Mengubah nama DialogBox metode dari objek berbagai nama yang berbeda (misalnya, DBox) karena sistem file header mendefinisikan DialogBox sebagai DialogBoxA atau DialogBoxW.
  3. Termasuk file header yang dihasilkan pada langkah 2 ke berkas .cpp yang akan berisi kode untuk kontrol Microsoft Excel.
  4. Argumen opsional yang tidak lulus dapat ditunjukkan oleh lewat VARIAN mengandung VT_ERROR/DISP_E_PARAMNOTFOUND.
  5. Beberapa metode Microsoft Excel dapat disebut dengan menggunakan dua syntaxes, sebagai didokumentasikan di Vba_xl.hlp. Sebagai contoh, adalah metode Workbook didokumentasikan sebagai berikut:
    Sintaks 1
    objek.Workbooks(index)

    Sintaks 2
    objek.Buku kerja
    ClassWizard akan menghasilkan metode hanya satu. Jadi, jika Anda perlu menggunakan sintaks lainnya, memodifikasi file .h dan .cpp yang dihasilkan untuk menambahkan metode untuk sintaks yang lain. Sebagai contoh sampel ini menambahkan Workbooks2 untuk kelas aplikasi sebagai berikut untuk sesuai dengan sintaks 2 Buku kerja metode:
       VARIANT Application::Workbooks2()
       {
       VARIANT result;
       InvokeHelper(0x23c, DISPATCH_METHOD, VT_VARIANT, (void*)&result, NULL);
       return result;
       }
    						
    Workbooks2 telah DISPID sama (0x23c) sebagai buku kerja tetapi tidak memiliki argumen. Masalah ini tidak diselesaikan oleh lewat VT_ERROR/DISP_E_PAMNOTFOUND. Semua metode ditandai sebagai memiliki dua syntaxes harus ditangani dengan cara ini.

    Sampel menggunakan metode kisaran, buku kerja dan grafik, semua yang memiliki dua syntaxes. Akibatnya ia menambahkan Range1, Workbooks2 dan Charts2.
  6. MFC COleDispatchDriver kelas tidak mendukung argumen bernama. Argumen harus disahkan oleh posisi.
  7. Jika Microsoft Excel menaikkan pengecualian itu akan kembali DISP_E_EXCEPTION dari IDispatch::Invoke dan akan mengisi parameter EXCEPINFO metode ini. MFC akan melemparkan COleDispatchException ketika hal ini terjadi dan klien dapat memperoleh informasi kesalahan dalam struktur EXCEPINFO dengan penangkapan pengecualian ini.
  8. Kode di Doc.cpp dalam sampel menunjukkan bagaimana mengontrol Microsoft Excel menggunakan MFC kelas.

Bagaimana menulis non-MFC klien otomasi untuk Microsoft Excel

  1. Fungsi pembantu, CreateObject dan memanggil, di Invhelp.cpp dan Invhelp.h sampel BROWSE di Win32 SDK dapat digunakan untuk dengan mudah menulis non-MFC klien otomasi. Pendekatan lain adalah untuk memanggil IDispatch::Invoke secara langsung. Memohon akhir menggunakan mengikat untuk kontrol server. Dapat dibuat lebih efisien dengan memodifikasi menggunakan id-mengikat di mana DISPID Diperoleh dari perpustakaan jenis daripada melalui IDispatch::GetIDsOfNames.
  2. Fungsi pembantu Invoke tidak mendukung argumen bernama. Argumen harus disahkan oleh posisi.
  3. Fungsi pembantu Invoke memungkinkan struktur EXCEPINFO untuk dilewatkan sebagai salah satu parameter. Microsoft Excel akan mengisi struktur ini dengan kesalahan informasi jika menaikkan pengecualian dan jika EXCEPINFO struktur ini disediakan oleh klien. Memohon akan kembali DISP_E_EXCEPTION Ketika Microsoft Excel menaikkan pengecualian. String di EXCEPINFO struktur harus dibebaskan oleh klien. Contoh kode tidak lulus EXCEPINFO struktur untuk Microsoft Excel.
  4. Kode di Xlclient.cpp dalam sampel menunjukkan bagaimana mengontrol Microsoft Excel.

Berlaku bagi:
  • Microsoft Excel 2000 Standard Edition
Kata kunci: 
kbdownload kbautomation kbsample kbmt KB141759 KbMtid
Penerjemahan MesinPenerjemahan 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:141759  (http://support.microsoft.com/kb/141759/en-us/ )