Symptome
Beim Ausführen von Code, der die Automatisierung verwendet, um Microsoft Excel zu steuern, kann einer der folgenden Fehler auftreten:
In Microsoft Excel 97 und neueren Versionen von Excel wird eine der folgenden Fehlermeldungen angezeigt:
Fehlermeldung 1
Hinweis
Laufzeitfehler '1004':
Methode '<Name der Methode>' des Objekts '_Global' fehlgeschlagen
Fehlermeldung 2
Hinweis
Anwendungs- oder objektdefinierter Fehler
In Microsoft Excel 95 wird eine der folgenden Fehlermeldungen angezeigt:
Fehlermeldung 1
Hinweis
Laufzeitfehler '-2147023174'
OLE-Automatisierungsfehler
Fehlermeldung 2
Hinweis
Laufzeitfehler '462':
Der Remoteservercomputer ist nicht vorhanden oder nicht verfügbar.
Ursache
Visual Basic hat aufgrund einer Codezeile einen Verweis auf Excel eingerichtet, der ein Excel-Objekt, eine Excel-Methode oder -Eigenschaft aufruft, ohne das Element mit einer Excel-Objektvariablen zu qualifizieren. Visual Basic gibt diesen Verweis erst frei, wenn Sie das Programm beenden. Dieser fehlerhafte Verweis beeinträchtigt den Automatisierungscode, wenn der Code mehrmals ausgeführt wird.
Lösung
Um dieses Problem zu beheben, ändern Sie den Code so, dass jeder Aufruf eines Excel-Objekts, einer Excel-Methode oder -Eigenschaft mit der entsprechenden Objektvariablen qualifiziert wird.
Status
Dieses Verhalten ist beabsichtigt.
Weitere Informationen
Um Microsoft Excel zu automatisieren, richten Sie eine Objektvariable ein, die normalerweise auf das Excel-Anwendungsobjekt oder das Excel-Arbeitsmappenobjekt verweist. Andere Objektvariablen können dann so festgelegt werden, dass sie auf ein Arbeitsblatt, einen Bereich oder andere Objekte im Microsoft Excel-Objektmodell verweisen. Wenn Sie Code zur Verwendung eines Excel-Objekts, einer Excel-Methode oder -Eigenschaft schreiben, sollten Sie dem Aufruf immer die entsprechende Objektvariable voranstellen. Tun Sie dies nicht, erstellt Visual Basic einen eigenen Verweis auf Excel. Dieser Verweis kann zu Problemen führen, wenn Sie versuchen, den Automatisierungscode mehrmals auszuführen. Beachten Sie, dass selbst wenn die Codezeile mit der Objektvariablen beginnt, ein Excel-Objekt, eine Excel-Methode oder eine Excel-Eigenschaft in der Mitte der Codezeile aufgerufen werden kann, der keine Objektvariable vorangestellt ist.
Die folgenden Schritte veranschaulichen, wie dieses Problem reproduziert und behoben werden kann.
Schritte zum Reproduzieren des Verhaltens
Starten Sie ein neues Standard EXE-Projekt in Visual Basic. Form1 wird standardmäßig erstellt.
Klicken Sie im Menü Projekt auf Verweise, und suchen Sie dann in der Objektbibliothek nach der Excel-Version, die Sie automatisieren möchten.
Platzieren Sie ein CommandButton-Steuerelement auf Form1.
Kopieren Sie das folgende Codebeispiel in das Codefenster von Form1.
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 SubKlicken Sie im Menü "Ausführen " auf "Start", oder drücken Sie F5, um das Programm zu starten.
Klicken Sie auf das CommandButton-Steuerelement . Es tritt kein Fehler auf. Es wurde jedoch ein Verweis auf Excel erstellt und wurde nicht freigegeben.
Klicken Sie erneut auf das CommandButton-Steuerelement . Beachten Sie, dass Sie eine der im Abschnitt "Symptome" beschriebenen Fehlermeldungen erhalten.
Hinweis Die Fehlermeldung tritt auf, weil sich der Code auf die Methode der Zelle bezieht, ohne dem Aufruf den
xlSheet-Objektvariable.Beenden Sie das Projekt, und ändern Sie die folgende Codezeile:
xlSheet.Range(Cells(1,1),Cells(10,2)).Value = "Hello"Ändern Sie die Codezeile so, dass sie der folgenden Codezeile ähnelt.
xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(10,2)).Value = "Hello"Führen Sie das Programm erneut aus. Beachten Sie, dass Sie den Code mehrmals ausführen können, ohne eine Fehlermeldung zu erhalten.
Referenzmaterial
189618 Möglicherweise wird die Fehlermeldung "Laufzeitfehler '-2147023174" (800706ba)" oder "Laufzeitfehler 462" angezeigt, wenn Sie Visual Basic-Code ausführen, der die Automatisierung zur Steuerung verwendet Word