ID Artikel: 288902 - Kajian Terakhir: 23 September 2011 - Revisi: 2.0

GetObject dan CreateObject perilaku server otomatisasi kantor

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

Artikel ini membahas berbagai perilaku yang terjadi Ketika Anda menggunakan GetObject dan CreateObject fungsi dengan berbagai versi Microsoft Office aplikasi. GetObject dan CreateObject fungsi yang disediakan oleh Microsoft Visual Basic dan Microsoft Visual Basic for Applications (VBA). Namun, informasi ini juga berlaku untuk Microsoft Visual C++ jika Anda memperlakukan referensi untuk GetObject sebagai panggilan untuk GetActiveObject API, dan rujukan CreateObject sebagai panggilan untuk CoCreateInstance API.

INFORMASI LEBIH LANJUT

GetObject

GetObject digunakan untuk melampirkan untuk contoh menjalankan server Otomatisasi. Ada beberapa cara yang berbeda untuk memanggil GetObject, tapi sintaks yang dianjurkan untuk Microsoft Office aplikasi adalah sebagai berikut:
set xlApp = GetObject(, "Excel.Application")
				
Jika sebuah instance dari Microsoft Excel berjalan ketika kode ini dijalankan, Anda memiliki akses ke model object contoh berjalan melalui xlApp variabel. Jika tidak ada contoh berjalan, Anda menerima berikut trappable pesan galat run-time:
Galat run-time '429':
Komponen ActiveX tidak dapat membuat objek
Jika beberapa contoh dari Microsoft Excel menjalankan, GetObject melekat pada contoh yang diluncurkan pertama. Jika Anda kemudian contoh pertama, panggilan lain untuk menutup GetObject melekat pada contoh kedua yang diluncurkan, dan begitu maju.

Anda dapat melampirkan untuk contoh khusus jika Anda tahu nama Buka dokumen dalam contoh. Sebagai contoh, jika sebuah contoh Excel berjalan dengan buku kerja terbuka yang bernama Book2, kode berikut menempel berhasil untuk contoh bahkan jika itu bukanlah contoh awal yang diluncurkan:
Set xlApp = GetObject("Book2").Application
				

CreateObject

CreateObject digunakan untuk memulai contoh baru dari server Otomatisasi. Untuk contoh:
set xlApp = CreateObject("Excel.Application")
				
Tergantung pada apakah server dirancang sebagai SingleUse atau MultiUse, proses server lain mungkin atau mungkin tidak akan diluncurkan. Mungkin ini penting perbedaan untuk memutuskan apakah Anda dipaksa harus menutup otomatisasi contoh. Sebagai contoh, dengan server MultiUse, jika contoh sudah dijalankan sebelum Anda melampirkan untuk itu, maka Anda mungkin ingin menghindari menutup Server pemrograman ketika Anda selesai mengotomatisasi itu.

The Tabel berikut berfungsi sebagai referensi membantu ketika menerapkan solusi dengan Microsoft Office. Daftar perilaku dan atribut dari berbagai versi dan aplikasi Microsoft Office, seperti apakah server default untuk menjadi terlihat ketika diluncurkan, jika itu adalah SingleUse atau MultiUse, jika memiliki UserControl properti, jika memiliki Berhenti metode, dan nama kelas untuk jendela utama.

Perkecil tabel iniPerbesar tabel ini
Aplikasi (s)TerlihatPercontohanTelah UserControlTelah berhentiClassName
Excel 97, 2000, 2002, 2003, 2007TidakSingleUseYaYaXlMain
Word 97, 2000, 2002, 2003, 2007TidakSingleUseYaYaOpusApp
PowerPoint 97TidakMultiUseTidakYaPP97FrameClass
PowerPoint 2000TidakMultiUseTidakYaPP9FrameClass
PowerPoint 2002TidakMultiUseTidakYaPP10FrameClass
PowerPoint 2003TidakMultiUseTidakYaPP11FrameClass
PowerPoint 2007TidakMultiUseTidakYaPP12FrameClass
Akses 97YaSingleUseYaYaOMain
Access 2000, 2002, 2003, 2007TidakSingleUseYaYaOMain
Proyek 98, 2000TidakMultiUseYaYaJWinproj-WhimperMainClass

Nama kelas jendela utama membantu untuk panggilan FindWindow API ketika Anda ingin mengetahui nyaman jika setiap contoh sudah berjalan. Properti UserControl adalah properti yang menunjukkan Apakah aplikasi server secara otomatis menutup turun ketika yang terakhir referensi dirilis (ditetapkan untuk apa-apa). The Berhenti metode memungkinkan Anda untuk mengganti properti UserControl dalam kasus di mana ianya perlu (seperti ketika contoh tidak menutup setelah referensi terakhir diluncurkan).

Secara umum, Microsoft menyarankan Anda menggunakan contoh aplikasi Office baru bukan melampirkan untuk contoh yang pengguna dapat menggunakan. Itu adalah terbaik membuat contoh menggunakan Aplikasi ProgID, dan kemudian membuka atau membuat objek baru dari sana. Lainnya ProgIDs, seperti Excel.Sheet dan Word.Document, dan sebagainya, dimaksudkan untuk menggunakan OLE (Object linking and Embedding) dan dapat memberikan hasil yang konsisten Ketika digunakan dengan CreateObject. Dengan menggunakan aplikasi ProgID, Anda menghindari potensi masalah dengan secara eksplisit mulai server untuk otomatisasi (tidak Embedding).

Kapan Anda telah selesai dengan server otomatisasi, melepaskan semua referensi Anda untuk itu dan panggilan yang Berhenti metode (jika tersedia) sehingga server menutup turun seperti yang diharapkan. Jika Anda ingin mengkonfigurasi contoh melalui otomatisasi dan kemudian membiarkannya terbuka untuk pengguna menggunakan, Anda perlu untuk mengatur properti UserControl BENAR dan kemudian melepaskan semua referensi Anda. Kemudian tinggal di server menjalankan (karena properti UserControl BENAR) dan menutup turun tepat ketika pengguna menutup aplikasi (karena tidak ada referensi yang luar biasa).

Catatan Kata, UserControl properti ini hanya bisa dibaca. Tidak diatur ke True atau False. Kata selalu tetap berjalan ketika referensi terakhir dirilis.

REFERENSI

Untuk informasi lebih lanjut tentang menggunakan GetObject/CreateObject, dan untuk belajar tentang beberapa pengecualian dan masalah dengan menggunakan otomatisasi untuk Microsoft Office, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
222783  (http://support.microsoft.com/kb/222783/ ) PPT2000: CreateObject tidak Membuat sesi PowerPoint baru
188546  (http://support.microsoft.com/kb/188546/ ) BUG: Mulai Word secara manual menggunakan contoh yang sama sebagai otomatisasi
265385  (http://support.microsoft.com/kb/265385/ ) INFO: Otomatisasi PowerPoint 97 dan PowerPoint 2000 pemirsa
259940  (http://support.microsoft.com/kb/259940/ ) BUG: kata 2000 Apakah tidak berhenti ketika Keybindings.ClearAll disebut
258511  (http://support.microsoft.com/kb/258511/ ) HOWTO: Memperoleh menangani jendela untuk aplikasi Office untuk otomatisasi
249169  (http://support.microsoft.com/kb/249169/ ) PPT97: PowerPoint 97 tetap dalam memori setelah mendapatkan presentasi dan menjadi Ditutup
159922  (http://support.microsoft.com/kb/159922/ ) Xl97 Revisi teknis: menggunakan Berhenti metode dapat menyebabkan operasi ilegal

Berlaku bagi:
  • Microsoft Office Excel 2007
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
  • Microsoft Access 97 Standard Edition
  • Microsoft Office PowerPoint 2007
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft PowerPoint 97 Standard Edition
  • Microsoft Project 2000 Standard Edition
  • Microsoft Project 98 Standard Edition
  • Microsoft Office Word 2007
  • Microsoft Word 2002
  • Microsoft Word 2000
  • Microsoft Word 97 Standard Edition
Kata kunci: 
kbautomation kbinfo kbmt KB288902 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:288902  (http://support.microsoft.com/kb/288902/en-us/ )