Σύνοψη
Όταν χρησιμοποιείτε τον τελεστή New ή τη συνάρτηση CreateObject στη Microsoft Visual Basic για να δημιουργήσετε μια παρουσία μιας εφαρμογής του Microsoft Office, ενδέχεται να λάβετε το ακόλουθο μήνυμα σφάλματος:
Σφάλμα χρόνου εκτέλεσης '429': Το στοιχείο ActiveX δεν μπορεί να δημιουργήσει αντικείμενο
Αυτό το σφάλμα παρουσιάζεται όταν το μοντέλο αντικειμένου στοιχείου (COM) δεν μπορεί να δημιουργήσει το αντικείμενο Αυτοματισμού που ζητήθηκε και το αντικείμενο Αυτοματισμού δεν είναι διαθέσιμο στη Visual Basic. Αυτό το σφάλμα δεν παρουσιάζεται σε όλους τους υπολογιστές.
Αυτό το άρθρο περιγράφει τον τρόπο διάγνωσης και επίλυσης συνηθισμένων προβλημάτων που μπορεί να προκαλέσουν αυτό το σφάλμα.Περισσότερες πληροφορίες
Στη Visual Basic, υπάρχουν διάφορες αιτίες σφάλματος 429. Το σφάλμα παρουσιάζεται εάν ισχύει οποιαδήποτε από τις ακόλουθες συνθήκες:
-
Υπάρχει κάποιο λάθος στην εφαρμογή.
-
Υπάρχει κάποιο λάθος στη ρύθμιση παραμέτρων συστήματος.
-
Υπάρχει ένα στοιχείο που λείπει.
-
Υπάρχει ένα κατεστραμμένο στοιχείο.
Για να βρείτε την αιτία του σφάλματος, απομονώστε το πρόβλημα. Εάν εμφανιστεί το μήνυμα σφάλματος "429" σε έναν υπολογιστή-πελάτη, χρησιμοποιήστε τις ακόλουθες πληροφορίες για να απομονώσετε και να επιλύσετε το σφάλμα στις εφαρμογές του Microsoft Office.
Σημείωση Ορισμένες από τις ακόλουθες πληροφορίες ενδέχεται επίσης να ισχύουν για διακομιστές COM που δεν ανήκουν στο Office. Ωστόσο, αυτό το άρθρο προϋποθέτει ότι θέλετε να αυτοματοποιήσετε τις εφαρμογές του Office.Εξέταση του κώδικα
Προτού αντιμετωπίσετε το σφάλμα, προσπαθήστε να απομονώσετε μία γραμμή κώδικα που μπορεί να προκαλεί το πρόβλημα.
Εάν ανακαλύψετε ότι το πρόβλημα προκαλείται από μία γραμμή κώδικα, ολοκληρώστε αυτές τις διαδικασίες:-
Βεβαιωθείτε ότι ο κώδικας χρησιμοποιεί ρητή δημιουργία αντικειμένων.
Τα προβλήματα αναγνωρίζονται ευκολότερα εάν περιορίζονται σε μία μόνο ενέργεια. Για παράδειγμα, αναζητήστε τη σιωπηρή δημιουργία αντικειμένου που χρησιμοποιείται ως ένα από τα εξής. Δείγμα κωδικού 1Application.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 δεν ξεκινά μέχρι η μεταβλητή να κληθεί τουλάχιστον μία φορά. Επειδή η μεταβλητή μπορεί να καλείται σε διαφορετικά τμήματα του προγράμματος, το πρόβλημα μπορεί να είναι δύσκολο να εντοπιστεί. Ενδέχεται να είναι δύσκολο να επαληθεύσετε ότι το πρόβλημα προκαλείται κατά τη δημιουργία του αντικειμένου Application ή κατά τη δημιουργία του αντικειμένου Document .
Αντί για αυτό, μπορείτε να πραγματοποιήσετε ρητές κλήσεις για να δημιουργήσετε κάθε αντικείμενο ξεχωριστά, ως εξής.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.Application
{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.Application
{000209FF-0000-0000-C000-000000000046}
-
Ελέγξτε τη διαδρομή για να βεβαιωθείτε ότι συμφωνεί με την πραγματική θέση του αρχείου.
Σημείωση Τα ονόματα σύντομων διαδρομών μπορεί να φαίνονται σωστά όταν δεν είναι σωστά. Για παράδειγμα, τόσο το Office όσο και ο Microsoft Internet Explorer (εάν είναι εγκατεστημένες στις προεπιλεγμένες θέσεις τους) έχουν μια σύντομη διαδρομή που είναι παρόμοια με τη διαδρομή C:\PROGRA~1\MICROS~X\ (όπου
τοX είναι αριθμός). Αυτό το όνομα ενδέχεται να μην φαίνεται αρχικά ως ένα σύντομο όνομα διαδρομής. Για να προσδιορίσετε εάν η διαδρομή είναι σωστή, ακολουθήστε τα εξής βήματα:-
Κάντε κλικ στο κουμπί Έναρξη και, στη συνέχεια, κάντε κλικ στην επιλογή Εκτέλεση.
-
Αντιγράψτε την τιμή από το μητρώο και, στη συνέχεια, επικολλήστε την τιμή στο παράθυρο διαλόγου Εκτέλεση .
Σημείωση Καταργήστε το διακόπτη /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
-
Χρησιμοποιήστε το βοηθητικό πρόγραμμα ρύθμισης παραμέτρων συστήματος (Msconfig.exe) για να εξετάσετε τις υπηρεσίες και την εκκίνηση του συστήματος για εφαρμογές τρίτων κατασκευαστών που ενδέχεται να περιορίζουν τον κώδικα εκτέλεσης στην εφαρμογή
του OfficeΣημείωση Απενεργοποιήστε το πρόγραμμα προστασίας από ιούς μόνο προσωρινά σε ένα σύστημα δοκιμής που δεν είναι συνδεδεμένο στο δίκτυο. Εναλλακτικά, ακολουθήστε αυτά τα βήματα στο Outlook για να απενεργοποιήσετε τα πρόσθετα τρίτων κατασκευαστών: Εάν αυτή η μέθοδος επιλύσει το πρόβλημα, επικοινωνήστε με τον τρίτο προμηθευτή του λογισμικού προστασίας από ιούς για περισσότερες πληροφορίες σχετικά με μια ενημέρωση του προγράμματος προστασίας από ιούς.-
Στο μενού Αρχείο, κάντε κλικ στο στοιχείο Επιλογές και, στη συνέχεια, κάντε κλικ στην επιλογή Πρόσθετα.
-
Κάντε κλικ στην επιλογή Διαχείριση προσθέτων COM και, στη συνέχεια, κάντε κλικ στο κουμπί Μετάβαση.
Σημείωση Ανοίγει το παράθυρο διαλόγου Πρόσθετα COM. -
Καταργήστε την επιλογή του πλαισίου ελέγχου για οποιοδήποτε πρόσθετο άλλου κατασκευαστή και, στη συνέχεια, κάντε κλικ στο κουμπί OK.
-
Επανεκκινήστε το Outlook.
-
Επανεγκατάσταση του Office
Εάν καμία από τις προηγούμενες διαδικασίες δεν επιλύσει το πρόβλημα, καταργήστε και, στη συνέχεια, επανεγκαταστήστε το Office.
Για περισσότερες πληροφορίες, ανατρέξτε στο ακόλουθο άρθρο του Office:
Λήψη και εγκατάσταση ή επανεγκατάσταση του Office 365 ή του Office 2016 σε PC ή Mac
Αναφορές
Για περισσότερες πληροφορίες σχετικά με την αυτοματοποίηση και τα δείγματα κώδικα του Office, μεταβείτε στην ακόλουθη τοποθεσία Web της Microsoft: