Συμπτώματα
Όταν το Microsoft Excel φορτώνει ένα πρόσθετο αυτοματοποίησης κατά τη διάρκεια της λειτουργίας επεξεργασίας κελιού, το Excel αποτυγχάνει. Αυτό το πρόβλημα παρουσιάζεται μόνο με πρόσθετα αυτοματισμού που έχουν φορτωθεί στο Excel.
Αιτία
Αυτό το πρόβλημα μπορεί να παρουσιαστεί όταν ένα πρόσθετο φορτώνει εάν το πρόσθετο εμφανίζει μια φόρμα ή ένα παράθυρο διαλόγου ή εάν το πρόσθετο υποβάλει μια αίτηση αυτοματοποίησης στο Excel που προσπαθεί να αλλάξει την κατάσταση του Excel. Η παρακάτω λίστα περιλαμβάνει δείγματα αιτήσεων αυτοματισμού που μπορεί να προκαλέσουν αποτυχία του Excel όταν καλείται ενώ φορτώνεται ένα πρόσθετο αυτοματοποίησης κατά τη διάρκεια της λειτουργίας επεξεργασίας κελιού:
-
Αλλαγή μέσω προγραμματισμού της τρέχουσας επιλογής. Για παράδειγμα:
Application.ActiveSheet.Range("A1").Select -
Καλέστε μια ιδιότητα ή μέθοδο ενός στοιχείου στη συλλογή των Windows. Για παράδειγμα:
Application.ActiveWindow.Zoom = 200
-
Αλλάξτε μια ρύθμιση του Excel, όπως την κατάσταση λειτουργίας υπολογισμού. Για παράδειγμα:
Application.CalculationMode = xlManual
Όλα αυτά τα στοιχεία είναι παραδείγματα προσπαθειών κώδικα για αλλαγή του περιβάλλοντος του Excel, ενός βιβλίου εργασίας ή ενός φύλλου εργασίας. αυτοί οι τύποι ενεργειών δεν επιτρέπονται κατά τη διάρκεια της λειτουργίας επεξεργασίας.
Επίλυση
Μην δοκιμάσετε τις παραπάνω ενέργειες ενώ φορτώνει το πρόσθετο. Οι μέθοδοι προσθέτων που καλούνται κατά τη φόρτωση περιλαμβάνουν τη μέθοδο Initialize και, εάν το πρόσθετο Αυτοματισμού που χρησιμοποιεί τη διασύνδεση IDTExtensibility2, τις μεθόδους OnConnection και OnStartupComplete επίσης.
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για σφάλμα στα προϊόντα της Microsoft που αναφέρονται στην αρχή αυτού του άρθρου.
Περισσότερες πληροφορίες
Βήματα για την αναπαραγωγή προβλήματος
-
Ξεκινήστε ένα νέο έργο DLL ActiveX στη Visual Basic.
-
Από το μενού Έργο, κάντε κλικ στην επιλογή Ιδιότητες του Project1. Αλλάξτε το Όνομα έργου σε TestAddIn και, στη συνέχεια, κάντε κλικ στο κουμπί OK.
-
Προσθέστε τον παρακάτω κώδικα στη λειτουργική μονάδα κώδικα για class1:
Private Sub Class_Initialize() MsgBox "Class_Initialize"End Sub
-
Δημιουργήστε TestAddIn.dll.
-
Στο Excel, ξεκινήστε ένα νέο βιβλίο εργασίας.
-
Στο Microsoft Office Excel 2003 ή στο Microsoft Excel 2002, ακολουθήστε τα παρακάτω βήματα:
-
Στο μενού Εργαλεία , τοποθετήστε το δείκτη του ποντικιού στην επιλογή Πρόσθετα και, στη συνέχεια, κάντε κλικ στην επιλογή Αυτοματοποίηση.
-
Στη λίστα, κάντε κλικ στην επιλογή TestAddIn.Class1 και, στη συνέχεια, κάντε κλικ στο κουμπί OK.
-
Στο παράθυρο διαλόγου Πρόσθετα , κάντε κλικ στο κουμπί OK.
Στο Microsoft Office Excel 2007, ακολουθήστε τα παρακάτω βήματα:
-
Κάντε κλικ στο Κουμπί του Microsoft Office και, στη συνέχεια, κάντε κλικ στο στοιχείοΕπιλογές του Excel.
-
Κάντε κλικ στην καρτέλα Πρόσθετα .
-
Στη λίστα Διαχείριση , κάντε κλικ στην επιλογή Πρόσθετα του Excel και, στη συνέχεια, κάντε κλικ στο κουμπί Μετάβαση.
-
Στο παράθυρο διαλόγου Πρόσθετα, κάντε κλικ στην επιλογήΑυτοματοποίηση.
-
Στη λίστα, κάντε κλικ στην επιλογή TestAddin.Class1 και, στη συνέχεια, κάντε κλικ στο κουμπί OK.
-
Κάντε κλικ στο κουμπί OK.
-
-
Πληκτρολογήστε =a σε οποιοδήποτε κελί. Εμφανίζεται ένα πλαίσιο μηνύματος με το κείμενο "Class_Initialize".
-
Κάντε κλικ στο κουμπί OK για να κλείσετε το πλαίσιο μηνύματος. Μετά από μερικά δευτερόλεπτα, το Excel αποτυγχάνει.
Αναφορές
Για πρόσθετες πληροφορίες, κάντε κλικ στον αριθμό του παρακάτω άρθρου για να προβάλετε το άρθρο στη Γνωσιακή βάση της Microsoft:
291392 ΠΛΗΡΟΦΟΡΙΕΣ: Πρόσθετα com του Excel και πρόσθετα αυτοματοποίησης