Σύνοψη
Όταν χρησιμοποιείτε τον τελεστή New ή τη συνάρτηση CreateObject στη Microsoft Visual Basic για να δημιουργήσετε μια παρουσία μιας εφαρμογής του Microsoft Office, ενδέχεται να λάβετε το ακόλουθο μήνυμα λάθους:
Σημείωση
Σφάλμα χρόνου εκτέλεσης '429': Δεν είναι δυνατή η δημιουργία αντικειμένου από το στοιχείο ActiveX
Αυτό το σφάλμα παρουσιάζεται όταν το μοντέλο αντικειμένων στοιχείων (COM) δεν μπορεί να δημιουργήσει το αντικείμενο αυτοματισμού που ζητήθηκε και, επομένως, το αντικείμενο αυτοματισμού δεν είναι διαθέσιμο στη Visual Basic. Αυτό το σφάλμα δεν παρουσιάζεται σε όλους τους υπολογιστές.
Αυτό το άρθρο περιγράφει τον τρόπο διάγνωσης και επίλυσης κοινών ζητημάτων που μπορεί να προκαλέσουν αυτό το σφάλμα.
Περισσότερες πληροφορίες
Στη Visual Basic, υπάρχουν πολλές αιτίες σφάλματος 429. Το σφάλμα προκύπτει εάν ισχύει οποιαδήποτε από τις ακόλουθες συνθήκες:
- Υπάρχει λάθος στην εφαρμογή.
- Υπάρχει κάποιο λάθος στη διαμόρφωση του συστήματος.
- Υπάρχει ένα στοιχείο που λείπει.
- Υπάρχει ένα κατεστραμμένο στοιχείο.
Για να βρείτε την αιτία του σφάλματος, απομονώστε το πρόβλημα. Εάν λάβετε το μήνυμα σφάλματος "429" σε έναν υπολογιστή-πελάτη, χρησιμοποιήστε τις ακόλουθες πληροφορίες για να απομονώσετε και να επιλύσετε το σφάλμα στις εφαρμογές του Microsoft Office.
Σημείωση Ορισμένες από τις ακόλουθες πληροφορίες μπορεί επίσης να ισχύουν για διακομιστές COM εκτός του Office. Ωστόσο, αυτό το άρθρο προϋποθέτει ότι θέλετε να αυτοματοποιήσετε εφαρμογές του Office.
Εξέταση του κώδικα
Πριν αντιμετωπίσετε το σφάλμα, προσπαθήστε να απομονώσετε μία μόνο γραμμή κώδικα που μπορεί να προκαλεί το πρόβλημα.
Αν ανακαλύψετε ότι το πρόβλημα προκαλείται από μία μόνο γραμμή, ολοκληρώστε τις εξής διαδικασίες:
Βεβαιωθείτε ότι ο κώδικας χρησιμοποιεί ρητή δημιουργία αντικειμένου.
Τα προβλήματα εντοπίζονται ευκολότερα εάν περιορίζονται σε μία μόνο ενέργεια. Για παράδειγμα, αναζητήστε την έμμεση δημιουργία αντικειμένων που χρησιμοποιείται ως ένα από τα παρακάτω.
Δείγμα κώδικα 1
Application.Documents.Add 'DON'T USE THIS!!Δείγμα κώδικα 2
Dim oWordApp As New Word.Application 'DON'T USE THIS!! '... some other code oWordApp.Documents.AddΚαι τα δύο αυτά δείγματα κώδικα χρησιμοποιούν έμμεση δημιουργία αντικειμένων. Το Microsoft Office Word 2003 δεν ξεκινά μέχρι η μεταβλητή κληθεί τουλάχιστον μία φορά. Επειδή η μεταβλητή μπορεί να καλείται σε διαφορετικά τμήματα του προγράμματος, το πρόβλημα μπορεί να είναι δύσκολο να εντοπιστεί. Ενδέχεται να είναι δύσκολο να επιβεβαιωθεί ότι το πρόβλημα προκαλείται κατά τη δημιουργία του αντικειμένου εφαρμογής ή κατά τη δημιουργία του αντικειμένου εγγράφου .
Αντί για αυτό, μπορείτε να κάνετε ρητές κλήσεις για να δημιουργήσετε κάθε αντικείμενο ξεχωριστά, ως εξής.
Dim oWordApp As Word.Application Dim oDoc As Word.Document Set oWordApp = CreateObject("Word.Application") '... some other code Set oDoc = oWordApp.Documents.AddΌταν κάνετε ρητές κλήσεις για να δημιουργήσετε κάθε αντικείμενο ξεχωριστά, το πρόβλημα είναι πιο εύκολο να απομονωθεί. Αυτό μπορεί επίσης να κάνει ευκολότερη την ανάγνωση του κώδικα.
Χρησιμοποιήστε τη συνάρτηση CreateObject αντί για τον τελεστή New όταν δημιουργείτε μια παρουσία μιας εφαρμογής του Office.
Η συνάρτηση CreateObject αντιστοιχίζει πιστά τη διαδικασία δημιουργίας που χρησιμοποιούν τα περισσότερα προγράμματα-πελάτες Microsoft Visual C++. Η συνάρτηση CreateObject επιτρέπει επίσης αλλαγές στο CLSID του διακομιστή μεταξύ των εκδόσεων. Μπορείτε να χρησιμοποιήσετε τη συνάρτηση CreateObject με αντικείμενα πρώιμης δέσμευσης και με αντικείμενα τελευταίας δέσμευσης.
Βεβαιωθείτε ότι η συμβολοσειρά "ProgID" στην οποία μεταβιβάζεται
CreateObject είναι σωστή και, στη συνέχεια, βεβαιωθείτε ότι η συμβολοσειρά "ProgID" είναι ανεξάρτητη έκδοση. Για παράδειγμα, χρησιμοποιήστε τη συμβολοσειρά "Excel.Application" αντί να χρησιμοποιήσετε τη συμβολοσειρά "Excel.Application.8". Το σύστημα που αποτυγχάνει μπορεί να έχει μια παλαιότερη έκδοση του Microsoft Office ή μια νεότερη έκδοση του Microsoft Office από την έκδοση που καθορίσατε στη συμβολοσειρά "ProgID".Χρησιμοποιήστε την εντολή Erl για να αναφέρετε τον αριθμό γραμμής της γραμμής κώδικα που δεν είναι επιτυχής. Αυτό μπορεί να σας βοηθήσει να εντοπίσετε σφάλματα εφαρμογών που δεν μπορούν να εκτελεστούν στο IDE. Ο παρακάτω κώδικας σάς ενημερώνει ποιο αντικείμενο Αυτοματισμού δεν μπορεί να δημιουργηθεί (Microsoft Word ή Microsoft Office Excel 2003):
Dim oWord As Word.Application Dim oExcel As Excel.Application On Error Goto err_handler 1: Set oWord = CreateObject("Word.Application") 2: Set oExcel = CreateObject("Excel.Application") ' ... some other code err_handler: MsgBox "The code failed at line " & Erl, vbCriticalΧρησιμοποιήστε τη συνάρτηση MsgBox και τον αριθμό γραμμής για να παρακολουθήσετε το σφάλμα.
Χρησιμοποιήστε την καθυστερημένη βιβλιοδεσία ως εξής:
Dim oWordApp As ObjectΤα πρώιμα δεσμευμένα αντικείμενα απαιτούν την παράταξη των προσαρμοσμένων διασυνδέσεων πέρα από τα όρια διεργασιών. Εάν δεν είναι δυνατή η παράταξη της προσαρμοσμένης διασύνδεσης κατά τη διάρκεια του CreateObject ή κατά τη διάρκεια της δημιουργίας, λαμβάνετε το μήνυμα λάθους "429". Ένα αντικείμενο με καθυστερημένη σύνδεση χρησιμοποιεί τη διασύνδεση που ορίζεται από το σύστημα IDispatch και δεν απαιτεί τη σύνταξη ενός προσαρμοσμένου διακομιστή μεσολάβησης. Χρησιμοποιήστε ένα αντικείμενο καθυστερημένης δέσμευσης για να βεβαιωθείτε ότι αυτή η διαδικασία λειτουργεί σωστά.
Εάν το πρόβλημα παρουσιάζεται μόνο όταν το αντικείμενο είναι πρώιμο περιορισμό, το πρόβλημα βρίσκεται στην εφαρμογή διακομιστή. Συνήθως, μπορείτε να εγκαταστήσετε ξανά την εφαρμογή, όπως περιγράφεται στην ενότητα "Εξέταση του διακομιστή αυτοματισμού" αυτού του άρθρου για να διορθώσετε το πρόβλημα.
Εξέταση του διακομιστή αυτοματισμού
Η πιο συνηθισμένη αιτία για την εμφάνιση σφάλματος κατά τη χρήση του CreateObjectή του New είναι ένα πρόβλημα που επηρεάζει την εφαρμογή διακομιστή. Συνήθως, η ρύθμιση παραμέτρων της εφαρμογής ή η ρύθμιση της εφαρμογής προκαλεί το πρόβλημα. Για την αντιμετώπιση προβλημάτων, χρησιμοποιήστε τις ακόλουθες μεθόδους:
Βεβαιωθείτε ότι η εφαρμογή του Office που θέλετε να αυτοματοποιήσετε είναι εγκατεστημένη στον τοπικό υπολογιστή. Βεβαιωθείτε ότι μπορείτε να εκτελέσετε την εφαρμογή. Για να το κάνετε αυτό, κάντε κλικ στο κουμπί Έναρξη, κάντε κλικ στο κουμπί
Εκτελέστε και, στη συνέχεια, προσπαθήστε να εκτελέσετε την εφαρμογή. Εάν δεν μπορείτε να εκτελέσετε την εφαρμογή με μη αυτόματο τρόπο, η εφαρμογή δεν θα λειτουργήσει μέσω αυτοματισμού.Καταχωρίστε εκ νέου την αίτηση ως εξής:
Κάντε κλικ στο κουμπί Έναρξη και, στη συνέχεια, κάντε κλικ στην επιλογή Εκτέλεση.
Στο παράθυρο διαλόγου Εκτέλεση , πληκτρολογήστε τη διαδρομή του διακομιστή και, στη συνέχεια, προσαρτήστε το διακόπτη /RegServer στο τέλος της γραμμής.
Κάντε κλικ στο κουμπί OK.
Η εφαρμογή εκτελείται χωρίς μηνύματα. Η εφαρμογή καταχωρείται εκ νέου ως διακομιστής COM.
Αν το πρόβλημα παρουσιάζεται επειδή λείπει ένα κλειδί μητρώου, αυτά τα βήματα συνήθως διορθώνουν το πρόβλημα.
Εξετάστε το κλειδί LocalServer32 κάτω από το CLSID για την εφαρμογή που θέλετε να αυτοματοποιήσετε. Βεβαιωθείτε ότι το κλειδί LocalServer32 οδηγεί στη σωστή θέση για την εφαρμογή. Βεβαιωθείτε ότι το όνομα της διαδρομής είναι σε μορφή σύντομης διαδρομής (DOS 8.3). Δεν χρειάζεται να καταχωρήσετε ένα διακομιστή χρησιμοποιώντας ένα όνομα σύντομης διαδρομής. Ωστόσο, ονόματα μεγάλων διαδρομών που περιλαμβάνουν ενσωματωμένα διαστήματα μπορεί να προκαλέσουν προβλήματα σε ορισμένα συστήματα.
Για να εξετάσετε το κλειδί διαδρομής που είναι αποθηκευμένο για το διακομιστή, ξεκινήστε τον Επεξεργαστή μητρώου των Windows, ως εξής:
Κάντε κλικ στο κουμπί Έναρξη και, στη συνέχεια, κάντε κλικ στην επιλογή Εκτέλεση.
Πληκτρολογήστε regedit και κατόπιν κάντε κλικ στο κουμπί OK.
Μετακίνηση στο πλήκτρο HKEY_CLASSES_ROOT\CLSID.
Τα CLSID για τους καταχωρημένους διακομιστές αυτοματισμού στο σύστημα βρίσκονται κάτω από αυτό το κλειδί.
Χρησιμοποιήστε τις ακόλουθες τιμές του κλειδιού CLSID για να βρείτε το κλειδί που αντιπροσωπεύει την εφαρμογή του Office που θέλετε να αυτοματοποιήσετε. Εξετάστε το κλειδί LocalServer32 του κλειδιού CLSID για τη διαδρομή.
Office server Πλήκτρο CLSID Access.Εφαρμογή {73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9} Excel.Application {00024500-0000-0000-C000-000000000046} Outlook.Application {0006F03A-0000-0000-C000-000000000046} PowerPoint.Application {91493441-5A91-11CF-8700-00AA0060263B} Word. Εφαρμογή {000209FF-0000-0000-C000-000000000046} Ελέγξτε τη διαδρομή για να βεβαιωθείτε ότι συμφωνεί με την πραγματική θέση του αρχείου.
Σημείωση Τα ονόματα μικρών διαδρομών μπορεί να φαίνονται σωστά όταν δεν είναι σωστά. Για παράδειγμα, τόσο το Office όσο και ο Microsoft Internet Explorer (εάν είναι εγκατεστημένοι στις προεπιλεγμένες θέσεις τους) έχουν μια σύντομη διαδρομή παρόμοια με την C:\PROGRA~1\MICROS~X\ (όπου
Το X είναι αριθμός). Αυτό το όνομα ενδέχεται αρχικά να μην εμφανίζεται ως όνομα σύντομης διαδρομής.Για να προσδιορίσετε αν η διαδρομή είναι σωστή, ακολουθήστε τα εξής βήματα:
Κάντε κλικ στο κουμπί Έναρξη και, στη συνέχεια, κάντε κλικ στην επιλογή Εκτέλεση.
Αντιγράψτε την τιμή από το μητρώο και, στη συνέχεια, επικολλήστε την τιμή στο παράθυρο διαλόγου Εκτέλεση (Run ).
Σημείωση Καταργήστε το διακόπτη /automation πριν να εκτελέσετε την εφαρμογή.
Κάντε κλικ στο κουμπί OK.
Βεβαιωθείτε ότι η εφαρμογή εκτελείται σωστά.
Εάν η εφαρμογή εκτελείται αφού κάνετε κλικ στο κουμπί OK, ο διακομιστής έχει καταχωρηθεί σωστά. Εάν η εφαρμογή δεν εκτελεστεί αφού κάνετε κλικ στο κουμπί OK, αντικαταστήστε την τιμή του κλειδιού LocalServer32 με τη σωστή διαδρομή. Χρησιμοποιήστε ένα όνομα σύντομης διαδρομής, εάν μπορείτε.
Ελέγξτε για πιθανή καταστροφή του προτύπου Normal.dot ή του αρχείου πόρων Excel.xlb. Ενδέχεται να προκύψουν προβλήματα κατά την αυτοματοποίηση του Microsoft Word ή του Microsoft Excel, εάν το πρότυπο Normal.dot στο Word ή το αρχείο πόρων Excel.xlb στο Excel είναι κατεστραμμένο. Για να ελέγξετε αυτά τα αρχεία, πραγματοποιήστε αναζήτηση στους τοπικούς σκληρούς δίσκους για όλες τις εμφανίσεις του Normal.dot ή του Excel.xlb.
Σημείωση Ενδέχεται να βρείτε πολλά αντίγραφα αυτών των αρχείων. Υπάρχει ένα αντίγραφο για κάθε ένα από αυτά τα αρχεία για κάθε προφίλ χρήστη που είναι εγκατεστημένο στο σύστημα.
Μετονομάστε προσωρινά τα αρχεία Normal.dot ή Excel.xlb και, στη συνέχεια, εκτελέστε ξανά τον έλεγχο αυτοματοποίησης. Το Word και το Excel δημιουργούν αυτά τα αρχεία εάν δεν μπορούν να τα βρουν. Βεβαιωθείτε ότι ο κώδικας λειτουργεί. Εάν ο κώδικας λειτουργεί όταν δημιουργείται ένα νέο αρχείο Normal.dot, διαγράψτε τα αρχεία που μετονομάσατε. Αυτά τα αρχεία είναι κατεστραμμένα. Εάν ο κώδικας δεν λειτουργεί, πρέπει να επαναφέρετε αυτά τα αρχεία στα αρχικά τους ονόματα αρχείων για να αποθηκεύσετε τυχόν προσαρμοσμένες ρυθμίσεις που έχουν αποθηκευτεί σε αυτά τα αρχεία.
Εκτελέστε την εφαρμογή στο λογαριασμό διαχειριστή. Οι διακομιστές του Office απαιτούν πρόσβαση ανάγνωσης/εγγραφής στο μητρώο και στη μονάδα δίσκου. Οι διακομιστές του Office ενδέχεται να μην φορτώνονται σωστά, εάν οι τρέχουσες ρυθμίσεις ασφαλείας σας απαγορεύουν την πρόσβαση ανάγνωσης/εγγραφής.
Εξετάστε το σύστημα
Η ρύθμιση παραμέτρων του συστήματος μπορεί επίσης να προκαλέσει προβλήματα στη δημιουργία διακομιστών COM εκτός διεργασίας. Για να αντιμετωπίσετε το πρόβλημα, χρησιμοποιήστε τις ακόλουθες μεθόδους στο σύστημα στο οποίο παρουσιάζεται το σφάλμα:
Προσδιορίστε εάν το πρόβλημα παρουσιάζεται με οποιονδήποτε διακομιστή εκτός διεργασίας. Εάν έχετε μια εφαρμογή που χρησιμοποιεί ένα συγκεκριμένο διακομιστή COM (όπως το Word), δοκιμάστε ένα διαφορετικό διακομιστή εκτός διεργασίας για να βεβαιωθείτε ότι το πρόβλημα δεν παρουσιάζεται στο ίδιο το επίπεδο COM. Εάν δεν μπορείτε να δημιουργήσετε έναν διακομιστή COM εκτός διεργασίας στον υπολογιστή, εγκαταστήστε ξανά τα αρχεία συστήματος OLE, όπως περιγράφεται στην ενότητα "Επανεγκατάσταση του Microsoft Office" αυτού του άρθρου ή εγκαταστήστε ξανά το λειτουργικό σύστημα για να επιλύσετε το πρόβλημα.
Εξετάστε τους αριθμούς έκδοσης για τα αρχεία συστήματος OLE που διαχειρίζονται αυτοματοποίηση. Αυτά τα αρχεία συνήθως εγκαθίστανται ως σύνολο. Αυτά τα αρχεία πρέπει να ταιριάζουν με τους αριθμούς δομής. Ένα εσφαλμένα ρυθμισμένο βοηθητικό πρόγραμμα εγκατάστασης μπορεί να εγκαταστήσει κατά λάθος τα αρχεία ξεχωριστά. Αυτό έχει ως αποτέλεσμα την ασυμφωνία των αρχείων. Για να αποφύγετε προβλήματα στον αυτοματισμό, εξετάστε τα αρχεία για να βεβαιωθείτε ότι οι εκδόσεις αρχείων ταιριάζουν.
Τα αρχεία αυτοματισμού βρίσκονται στον κατάλογο Windows\System32. Εξετάστε τα ακόλουθα αρχεία.
Όνομα αρχείου Έκδοση Ημερομηνία τροποποίησης Asycfilt.dll 10.0.16299.15 Σεπτέμβριος 29, 2017 Ole32.dll 10.0.16299.371 29 Μαρτίου 2018 Oleaut32.dll 10.0.16299.431 3 Μαΐου 2018 Olepro32.dll 10.0.16299.15 Σεπτέμβριος 29, 2017 Stdole2.tlb 3.0.5014 Σεπτέμβριος 29, 2017 Για να εξετάσετε την έκδοση του αρχείου, κάντε δεξιό κλικ στο αρχείο στην Εξερεύνηση των Windows και, στη συνέχεια, κάντε κλικ στο κουμπί Ιδιότητες. Σημειώστε τα τελευταία τέσσερα ψηφία της έκδοσης του αρχείου (τον αριθμό δομής) και την ημερομηνία τελευταίας τροποποίησης του αρχείου. Βεβαιωθείτε ότι αυτές οι τιμές είναι ίδιες για όλα τα αρχεία αυτοματισμού.
Σημείωση Τα παρακάτω αρχεία αφορούν Windows 10 έκδοση 1709, δομή 16299.431. Αυτοί οι αριθμοί και οι ημερομηνίες είναι μόνο παραδείγματα. Οι τιμές σας μπορεί να διαφέρουν.
Χρησιμοποιήστε το βοηθητικό πρόγραμμα ρύθμισης παραμέτρων συστήματος (Msconfig.exe) για να εξετάσετε τις υπηρεσίες και την εκκίνηση του συστήματος για εφαρμογές τρίτων που ενδέχεται να περιορίζουν την εκτέλεση κώδικα στην εφαρμογή του Office
Σημείωση Απενεργοποιήστε το πρόγραμμα προστασίας από ιούς μόνο προσωρινά σε ένα δοκιμαστικό σύστημα που δεν είναι συνδεδεμένο στο δίκτυο.
Εναλλακτικά, ακολουθήστε αυτά τα βήματα στο Outlook για να απενεργοποιήσετε τα πρόσθετα άλλων κατασκευαστών:
Εάν αυτή η μέθοδος επιλύσει το πρόβλημα, επικοινωνήστε με τον προμηθευτή του προγράμματος εντοπισμού ιών άλλου κατασκευαστή για περισσότερες πληροφορίες σχετικά με μια ενημερωμένη έκδοση του προγράμματος εντοπισμού ιών.
Στο μενού Αρχείο (File ), κάντε κλικ στην εντολή Επιλογές (Options) και, στη συνέχεια, κάντε κλικ στην εντολή Πρόσθετα ( Add-ins).
Κάντε κλικ στην επιλογή Διαχείριση προσθέτων COM και, στη συνέχεια, κάντε κλικ στο κουμπί Μετάβαση.
Σημείωση Ανοίγει το παράθυρο διαλόγου " Πρόσθετα COM ".
Καταργήστε την επιλογή του πλαισίου ελέγχου για οποιοδήποτε πρόσθετο άλλου κατασκευαστή και, στη συνέχεια, κάντε κλικ στο κουμπί OK.
Κάντε επανεκκίνηση του Outlook.
Επανεγκατάσταση του Office
Εάν καμία από τις προηγούμενες διαδικασίες δεν επιλύσει το πρόβλημα, καταργήστε και, στη συνέχεια, εγκαταστήστε ξανά το Office.
Για περισσότερες πληροφορίες, ανατρέξτε στο ακόλουθο άρθρο του Office:
Λήψη και εγκατάσταση ή επανεγκατάσταση του Office 365 ή του Office 2016 σε υπολογιστή ή Mac
Παραπομπές
Για περισσότερες πληροφορίες σχετικά με την αυτοματοποίηση του Office και τα δείγματα κώδικα, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web: