Sintomi
Durante l'esecuzione di codice che usa l'automazione per controllare Microsoft Excel, potrebbe verificarsi uno dei seguenti errori:
In Microsoft Excel 97 e versioni successive di Excel, viene visualizzato uno dei messaggi di errore seguenti:
Messaggio di errore 1
Nota
Errore di runtime "1004":
Metodo '<name of method>' dell'oggetto '_Global' non riuscito
Messaggio di errore 2
Nota
Errore definito dall'applicazione o definito dall'oggetto
In Microsoft Excel 95 viene visualizzato uno dei messaggi di errore seguenti:
Messaggio di errore 1
Nota
Errore di run-time '-2147023174'
Errore di automazione OLE
Messaggio di errore 2
Nota
Errore di runtime "462":
Il computer del server remoto non esiste o non è disponibile.
Causa
Visual Basic ha stabilito un riferimento a Excel a causa di una riga di codice che chiama un oggetto, un metodo o una proprietà di Excel senza qualificare l'elemento con una variabile oggetto di Excel. Visual Basic non rilascia questo riferimento finché non si termina il programma. Questo riferimento errato interferisce con il codice di automazione quando il codice viene eseguito più di una volta.
Risoluzione
Per risolvere il problema, modificare il codice in modo che ogni chiamata a un oggetto, un metodo o una proprietà di Excel venga qualificata con la variabile oggetto appropriata.
Stato
Questo è il comportamento da progettazione.
Altre informazioni
Per automatizzare Microsoft Excel, è necessario impostare una variabile oggetto che in genere fa riferimento all'oggetto applicazione Excel o all'oggetto Cartella di lavoro di Excel. È quindi possibile impostare altre variabili oggetto per fare riferimento a un foglio di lavoro, un intervallo o altri oggetti nel modello a oggetti di Microsoft Excel. Quando si scrive codice per usare un oggetto, un metodo o una proprietà di Excel, è necessario anteporre sempre alla chiamata la variabile oggetto appropriata. In caso contrario, Visual Basic stabilisce il proprio riferimento a Excel. Questo riferimento potrebbe causare problemi quando si tenta di eseguire il codice di automazione più volte. Si noti che anche se la riga di codice inizia con la variabile oggetto, è possibile che venga effettuata una chiamata a un oggetto, un metodo o una proprietà di Excel nel mezzo della riga di codice non preceduta da una variabile oggetto.
I passaggi seguenti illustrano come riprodurre questo problema e come correggerlo.
Passaggi per riprodurre il comportamento
Avviare un nuovo progetto EXE Standard in Visual Basic. Form1 viene creato per impostazione predefinita.
Nel menu Progetto , fare clic su Riferimenti e quindi cercare nella Libreria di oggetti la versione di Excel che si intende automatizzare.
Inserire un controllo CommandButton in Form1.
Copiare l'esempio di codice seguente nella finestra del codice di 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 SubScegliere Start dal menu Esegui oppure premere F5 per avviare il programma.
Fare clic sul controllo CommandButton . Non si verifica alcun errore. Tuttavia, è stato creato un riferimento a Excel che non è stato rilasciato.
Fare di nuovo clic sul controllo CommandButton . Si noti che viene visualizzato uno dei messaggi di errore descritti nella sezione "Sintomi".
Nota Il messaggio di errore viene visualizzato perché il codice fa riferimento al metodo della cella senza far precedere la chiamata
xlSheet.Arresta il progetto e modifica la seguente riga di codice:
xlSheet.Range(Cells(1,1),Cells(10,2)).Value = "Hello"Modificare la riga di codice in modo che sia simile alla riga di codice seguente.
xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(10,2)).Value = "Hello"Eseguire di nuovo il programma. Tieni presente che puoi eseguire il codice più volte senza ricevere un messaggio di errore.
Riferimenti
189618 Quando si esegue codice Visual Basic che utilizza l'automazione per controllare Word, è possibile che venga visualizzato il messaggio di errore "Errore di runtime '-2147023174" (800706ba) o l'errore di runtime '462'"