Συμπτώματα
Κατά την εκτέλεση κώδικα που χρησιμοποιεί αυτοματοποίηση για τον έλεγχο του Microsoft Excel, ενδέχεται να παρουσιαστεί ένα από τα ακόλουθα σφάλματα:
Στο Microsoft Excel 97 και σε νεότερες εκδόσεις του Excel, εμφανίζεται ένα από τα παρακάτω μηνύματα σφάλματος:Μήνυμα σφάλματος 1
Σφάλμα χρόνου εκτέλεσης '1004':
Η μέθοδος "<όνομα της μεθόδου>" του αντικειμένου "_Global" απέτυχεΜήνυμα σφάλματος 2
Σφάλμα που ορίζεται από την εφαρμογή ή που ορίζεται από το αντικείμενο
Στο Microsoft Excel 95, λαμβάνετε ένα από τα ακόλουθα μηνύματα σφάλματος:
Μήνυμα σφάλματος 1
Σφάλμα χρόνου εκτέλεσης '-2147023174'
Σφάλμα αυτοματοποίησης OLEΜήνυμα σφάλματος 2
Σφάλμα χρόνου εκτέλεσης '462':
Ο απομακρυσμένος υπολογιστής διακομιστή δεν υπάρχει ή δεν είναι διαθέσιμος.Αιτία
Η Visual Basic έχει δημιουργήσει μια αναφορά στο Excel εξαιτίας μιας γραμμής κώδικα που καλεί ένα αντικείμενο, μια μέθοδο ή μια ιδιότητα του Excel χωρίς να πληροί τις προϋποθέσεις για το στοιχείο με μια μεταβλητή αντικειμένου του Excel. Η Visual Basic δεν κυκλοφορεί αυτή την αναφορά μέχρι να τερματίσετε το πρόγραμμα. Αυτή η εσφαλμένη αναφορά επηρεάζει τον κώδικα αυτοματοποίησης όταν ο κώδικας εκτελείται περισσότερες από μία φορές.
Επίλυση
Για να επιλύσετε αυτό το πρόβλημα, τροποποιήστε τον κώδικα, ώστε κάθε κλήση σε ένα αντικείμενο, μέθοδο ή ιδιότητα του Excel να προσδιορίζεται με την κατάλληλη μεταβλητή αντικειμένου.
Κατάσταση
Αυτή η συμπεριφορά οφείλεται στη σχεδίαση.
Περισσότερες πληροφορίες
Για να αυτοματοποιήσετε το Microsoft Excel, δημιουργείτε μια μεταβλητή αντικειμένου που συνήθως αναφέρεται στο αντικείμενο Εφαρμογή Excel ή στο αντικείμενο βιβλίου εργασίας του Excel. Στη συνέχεια, μπορείτε να ορίσετε άλλες μεταβλητές αντικειμένου ώστε να αναφέρονται σε ένα φύλλο εργασίας, μια περιοχή ή άλλα αντικείμενα στο μοντέλο αντικειμένου του Microsoft Excel. Όταν γράφετε κώδικα για να χρησιμοποιήσετε ένα αντικείμενο, μέθοδο ή ιδιότητα του Excel, θα πρέπει πάντα να προηγείτε την κλήση με την κατάλληλη μεταβλητή αντικειμένου. Εάν δεν το κάνετε, η Visual Basic δημιουργεί τη δική της αναφορά στο Excel. Αυτή η αναφορά μπορεί να προκαλέσει προβλήματα, όταν προσπαθείτε να εκτελέσετε τον κώδικα αυτοματισμού πολλές φορές. Σημειώστε ότι ακόμη και αν η γραμμή κώδικα αρχίζει με τη μεταβλητή αντικειμένου, μπορεί να γίνει μια κλήση σε ένα αντικείμενο, μέθοδο ή ιδιότητα του Excel στη μέση της γραμμής κώδικα της οποίας δεν προηγείται μια μεταβλητή αντικειμένου.
Τα παρακάτω βήματα δείχνουν πώς μπορείτε να αναπαραγάγετε αυτό το πρόβλημα και πώς μπορείτε να διορθώσετε το πρόβλημα.Βήματα για την αναπαραγωγή της συμπεριφοράς
-
Ξεκινήστε ένα νέο έργο Standard EXE στη Visual Basic. Η φόρμα1 δημιουργείται από προεπιλογή.
-
Στο μενού Έργο , κάντε κλικ στην επιλογή Αναφορές και, στη συνέχεια, επιλέξτε τη Βιβλιοθήκη αντικειμένων για την έκδοση του Excel που σκοπεύετε να αυτοματοποιήσετε.
-
Τοποθετήστε ένα στοιχείο ελέγχου CommandButton στο Form1.
-
Αντιγράψτε το ακόλουθο παράδειγμα κώδικα στο παράθυρο κώδικα της φόρμας1.
Option Explicit Private Sub Command1_Click() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets("Sheet1") xlSheet.Range(Cells(1, 1), Cells(10, 2)).Value = "Hello" xlBook.Saved = True Set xlSheet = Nothing Set xlBook = Nothing xlApp.Quit Set xlApp = Nothing End Sub
-
Στο μενού Εκτέλεση , κάντε κλικ στην επιλογή Έναρξη ή πατήστε το πλήκτρο F5 για να ξεκινήσετε το πρόγραμμα.
-
Κάντε κλικ στο στοιχείο ελέγχου CommandButton . Δεν εμφανίζεται σφάλμα. Ωστόσο, έχει δημιουργηθεί μια αναφορά στο Excel και δεν έχει κυκλοφορήσει.
-
Κάντε ξανά κλικ στο στοιχείο ελέγχου CommandButton . Παρατηρήστε ότι λαμβάνετε ένα από τα μηνύματα σφάλματος που αναφέρονται στην ενότητα "Συμπτώματα".
Σημείωση Το μήνυμα σφάλματος παρουσιάζεται επειδή ο κώδικας αναφέρεται στη μέθοδο του κελιού χωρίς να προηγείται της κλήσης με το Μεταβλητή αντικειμένου xlSheet. -
Διακόψτε το έργο και αλλάξτε την ακόλουθη γραμμή κώδικα:
xlSheet.Range(Cells(1,1),Cells(10,2)).Value = "Hello"
Αλλάξτε τη γραμμή κώδικα ώστε να μοιάζει με την ακόλουθη γραμμή κώδικα.
xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(10,2)).Value = "Hello"
-
Εκτελέστε ξανά το πρόγραμμα. Παρατηρήστε ότι μπορείτε να εκτελέσετε τον κωδικό πολλές φορές χωρίς να λάβετε ένα μήνυμα σφάλματος.
Αναφορές
189618 Ενδέχεται να εμφανιστεί το μήνυμα σφάλματος "Σφάλμα χρόνου εκτέλεσης '-2147023174' (800706ba)" ή το σφάλμα "Σφάλμα χρόνου εκτέλεσης '462'" κατά την εκτέλεση κώδικα της Visual Basic που χρησιμοποιεί αυτοματοποίηση για τον έλεγχο Word