Αναγν. άρθρου: 288902 - Τελευταία αναθεώρηση: Κυριακή, 19 Δεκεμβρίου 2010 - Αναθεώρηση: 4.0

Η συμπεριφορά GetObject και CreateObject του Office διακομιστές αυτοματοποίησης

Συμβουλή συστήματοςΑυτό το άρθρο ισχύει για διαφορετικό λειτουργικό σύστημα από αυτό που χρησιμοποιείτε. Το περιεχόμενο του άρθρου που ενδέχεται να μην σας αφορά έχει απενεργοποιηθεί.

Σε αυτήν τη σελίδα

Ανάπτυξη όλων | Σύμπτυξη όλων

Περίληψη

Αυτό το άρθρο περιγράφει τις διαφορετικές συμπεριφορές που προκύπτουν κατά τη χρήση τουGetObjectANDCreateObjectσυναρτήσεις με διάφορες εκδόσεις των εφαρμογών του Microsoft Office.GetObjectANDCreateObjectΟι συναρτήσεις που παρέχονται από τη Microsoft Visual Basic και Microsoft Visual Basic for Applications (VBA). Ωστόσο, οι πληροφορίες εφαρμόζεται επίσης σε Microsoft Visual C++ αν χειριστεί αναφορές σεGetObjectως κλήσεις για τοGetActiveObjectAPI και αναφορές σεCreateObjectως κλήσεις για τοCoCreateInstanceAPI.

Περισσότερες πληροφορίες

GetObject

GetObjectΓια να επισυνάψετε σε μια παρουσία εκτελείται από ένα διακομιστή αυτοματοποίησης. Υπάρχουν μερικές διαφορετικοί τρόποι για να καλέσετεGetObject, αλλά η σύνταξη που συνιστάται για το Microsoft Office εφαρμογές είναι η εξής:
set xlApp = GetObject(, "Excel.Application")
				
Εάν εκτελείται μια περίοδο λειτουργίας του Microsoft Excel, όταν αυτός ο κώδικας εκτελείται, θα έχετε πρόσβαση στο μοντέλο αντικειμένου της παρουσίας εκτελείται μέσω της μεταβλητής xlApp. Εάν εκτελείται καμία παρουσία, λαμβάνετε το ακόλουθο μήνυμα ανιχνεύσιμο σφάλμα χρόνου εκτέλεσης:
Σφάλμα χρόνου εκτέλεσης '429':
Δεν είναι δυνατή η δημιουργία αντικειμένου από το στοιχείο ActiveX. (Run-time error '429': ActiveX component can't create object.)
Αν εκτελούνται πολλές παρουσίες του Microsoft Excel,GetObjectεπισυνάπτει την παρουσία που ξεκινά πρώτα. Εάν, στη συνέχεια, κλείστε την πρώτη παρουσία, μια άλλη κλήση σεGetObjectπροσαρτά τη δεύτερη εμφάνιση που ξεκίνησε και ούτω καθεξής.

Μπορείτε να επισυνάψετε σε μια συγκεκριμένη παρουσία, εάν γνωρίζετε το όνομα του ένα ανοιχτό έγγραφο σε αυτήν την περίπτωση. Για παράδειγμα, εάν εκτελείται μια περίοδο λειτουργίας του Excel με ένα ανοικτό βιβλίο εργασίας που ονομάζεται Βιβλίο2, ο κώδικας που ακολουθεί συνδέει με επιτυχία στη συγκεκριμένη παρουσία ακόμα κι αν δεν την πρώτη παρουσία που ξεκίνησε:
Set xlApp = GetObject("Book2").Application
				

CreateObject

CreateObjectΓια να ξεκινήσετε μια νέα περίοδο λειτουργίας ενός διακομιστή αυτοματοποίησης. Για παράδειγμα:
set xlApp = CreateObject("Excel.Application")
				
Ανάλογα με το αν ο διακομιστής έχει σχεδιαστεί ως SingleUse ή MultiUse, μια άλλη διαδικασία διακομιστή μπορεί ή δεν μπορεί να γίνει εκκίνηση. Αυτό μπορεί να είναι μια σημαντική διαφορά για να αποφασίσετε αν πρέπει να αναγκαστικό τερματισμό Αυτοματοποίηση μιας παρουσίας. Για παράδειγμα, με ένα διακομιστή MultiUse, αν μια παρουσία εκτελείται ήδη, πριν το προσαρτήσετε σε αυτήν, στη συνέχεια, μπορεί να θέλετε να αποφύγετε τερματισμού λειτουργίας του διακομιστή μέσω προγραμματισμού όταν τελειώσετε την αυτοματοποίηση.

Ο ακόλουθος πίνακας χρησιμεύει ως αναφορά χρήσιμες κατά την εφαρμογή μιας λύσης με το Microsoft Office. Παραθέτει σε λίστα συμπεριφορές και χαρακτηριστικά των διαφόρων εκδόσεων και εφαρμογές του Microsoft Office, όπως το αν ο διακομιστής προεπιλογές για να είναι ορατή κατά την εκκίνηση, εάν είναι SingleUse ή MultiUse, αν έχει ένα UserControl ιδιοτήτων, αν έχει έναΚάντε έξοδοη μέθοδος και το όνομα της κλάσης για το κύριο παράθυρο.

Σύμπτυξη αυτού του πίνακαΑνάπτυξη αυτού του πίνακα
ΕφαρμογώνΟρατόInstancingΈχει UserControlΈχει κλείσειClassName
Excel 97, 2000, 2002, 2003, 2007ΟΧΙ,SingleUseYESYESXlMain
Το Word 97, 2000, 2002, 2003, 2007ΟΧΙ,SingleUseYESYESOpusApp
Το PowerPoint 97ΟΧΙ,MultiUseΟΧΙ,YESPP97FrameClass
Το PowerPoint 2000ΟΧΙ,MultiUseΟΧΙ,YESPP9FrameClass
PowerPoint 2002ΟΧΙ,MultiUseΟΧΙ,YESPP10FrameClass
Το PowerPoint 2003ΟΧΙ,MultiUseΟΧΙ,YESPP11FrameClass
Το PowerPoint 2007ΟΧΙ,MultiUseΟΧΙ,YESPP12FrameClass
Η Access 97YESSingleUseYESYESOMain
Η Access 2000, 2002, 2003, 2007ΟΧΙ,SingleUseYESYESOMain
Το Project 98, 2000ΟΧΙ,MultiUseYESYESJWinproj WhimperMainClass

Το όνομα κλάσης του κύριου παραθύρου είναι χρήσιμο για την κλήση τουFindWindowAPI για να βρείτε εύκολα αν οποιαδήποτε παρουσία εκτελείται ήδη. Η ιδιότητα είναι μια δυαδική ιδιότητα που δηλώνει αν η εφαρμογή του διακομιστή αυτόματα τερματίζεται κατά την τελευταία αναφορά είναι UserControl κυκλοφορήσει (σύνολο σε τίποτα). Για ναΚάντε έξοδοη μέθοδος σάς επιτρέπει να παρακάμψετε την ιδιότητα UserControl στις περιπτώσεις όπου είναι απαραίτητο (όπως όταν μια περίοδος λειτουργίας δεν τερματίζεται μετά την κυκλοφορία της τελευταίας αναφοράς).

Σε γενικές γραμμές, η Microsoft συνιστά να χρησιμοποιείτε μια νέα περίοδο λειτουργίας μιας εφαρμογής του Office αντί για επισύναψη σε μια περίοδο λειτουργίας που μπορεί να χρησιμοποιεί ο χρήστης. Είναι καλύτερα η δημιουργία παρουσίας, χρησιμοποιώντας το αναγνωριστικό της εφαρμογής προγράμματος, και, στη συνέχεια, να ανοίξετε ή να δημιουργήσετε νέα αντικείμενα από εκεί. Άλλες ProgIDs, όπως Excel.Sheet Word.Document και ούτω καθεξής, προορίζονται για χρήση στο OLE (Object σύνδεση και ενσωμάτωση) και μπορεί να σας δώσει αντιφατικά αποτελέσματα όταν χρησιμοποιείται μεCreateObject. By using the Application ProgID, you avoid potential issues by explicitly starting the server for Automation (not Embedding).

When you are finished with the Automation server, release all your references to it and call itsQuitmethod (if available) so that the server shuts down as expected. If you want to configure an instance through Automation and then leave it open for the user to use, you need to set the UserControl property toTRUEand then release all your references. The server then stays running (because the UserControl property isTRUE) and shuts down appropriately when the user closes the application (because there are no outstanding references).

ΣΗΜΕΙΩΣΗFor Word, the UserControl property is read-only. It cannot be set to True or False. Word always remains running when the last reference is released.

Αναφορές

For more information about using GetObject/CreateObject, and to learn about some exceptions and issues with using Automation to Microsoft Office, click the following article numbers to view the articles in the Microsoft Knowledge Base:
222783  (http://support.microsoft.com/kb/222783/ ) PPT2000: CreateObject Does Not Create New PowerPoint Session
188546  (http://support.microsoft.com/kb/188546/ ) BUG: Starting Word Manually Uses Same Instance as Automation
265385  (http://support.microsoft.com/kb/265385/ ) INFO: Automation of PowerPoint 97 and PowerPoint 2000 Viewers
259940  (http://support.microsoft.com/kb/259940/ ) BUG: Word 2000 Does Not Quit When Keybindings.ClearAll Is Called
258511  (http://support.microsoft.com/kb/258511/ ) HOWTO: Obtain Window Handle to Office Application For Automation
249169  (http://support.microsoft.com/kb/249169/ ) PPT97: PowerPoint 97 Remains in Memory After Getting a Presentation and Being Closed
159922  (http://support.microsoft.com/kb/159922/ ) XL97: Using Quit Method May Cause Illegal Operation

Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • 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 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Word 97 Standard Edition
Λέξεις-κλειδιά: 
kbautomation kbinfo kbmt KB288902 KbMtel
Μηχανικά μεταφρασμένοΜηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:288902  (http://support.microsoft.com/kb/288902/en-us/ )