XLCLIENT menunjukkan bagaimana mengontrol Microsoft Excel menggunakan OLE otomatisasi.
Direktori MFC berisi sampel yang menggunakan MFC. Direktori SDK
berisi sampel yang tidak menggunakan MFC.
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
- Gunakan AppWizard untuk membuat aplikasi dengan otomatisasi dukungan.
- 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.
- Termasuk file header yang dihasilkan pada langkah 2 ke berkas .cpp yang akan
berisi kode untuk kontrol Microsoft Excel.
- Argumen opsional yang tidak lulus dapat ditunjukkan oleh lewat
VARIAN mengandung VT_ERROR/DISP_E_PARAMNOTFOUND.
- 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. - MFC COleDispatchDriver kelas tidak mendukung argumen bernama.
Argumen harus disahkan oleh posisi.
- 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.
- Kode di Doc.cpp dalam sampel menunjukkan bagaimana mengontrol Microsoft
Excel menggunakan MFC kelas.
Bagaimana menulis non-MFC klien otomasi untuk Microsoft Excel
- 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.
- Fungsi pembantu Invoke tidak mendukung argumen bernama. Argumen
harus disahkan oleh posisi.
- 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.
- Kode di Xlclient.cpp dalam sampel menunjukkan bagaimana mengontrol
Microsoft Excel.