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 nelle versioni successive di Excel viene visualizzato uno dei seguenti messaggi di errore:Messaggio di errore 1
Errore di runtime '1004':
Metodo '<nome del metodo>' dell'oggetto '_Global' non riuscitoMessaggio di errore 2
Errore definito dall'applicazione o definito dall'oggetto
In Microsoft Excel 95 viene visualizzato uno dei messaggi di errore seguenti:
Messaggio di errore 1
Errore di runtime '-2147023174'
Errore di automazione OLEMessaggio di errore 2
Errore di runtime '462':
Il computer 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 errante 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
Si tratta di un comportamento correlato alla progettazione del prodotto.
Ulteriori informazioni
Per automatizzare Microsoft Excel, viene stabilito 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, è sempre necessario anteporre alla chiamata la variabile oggetto appropriata. In caso contrario, Visual Basic stabilisce un riferimento specifico a Excel. Questo riferimento potrebbe causare problemi quando si tenta di eseguire più volte il codice di automazione. Si noti che anche se la riga di codice inizia con la variabile oggetto, è possibile effettuare una chiamata a un oggetto, un metodo o una proprietà di Excel al centro della riga di codice non preceduta da una variabile oggetto.
I passaggi seguenti illustrano come riprodurre il problema e come correggerlo.Procedura per riprodurre il problema
-
Avviare un nuovo progetto STANDARD EXE in Visual Basic. Form1 viene creato per impostazione predefinita.
-
Scegliere Riferimenti dal menu Progetto e quindi verificare la versione di Excel da automatizzare nella Libreria oggetti.
-
Posizionare 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 Sub
-
Scegliere 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 e 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 si verifica perché il codice fa riferimento al metodo della cella senza prima che la chiamata Variabile oggetto xlSheet. -
Interrompere il progetto e modificare la riga di codice seguente:
xlSheet.Range(Cells(1,1),Cells(10,2)).Value = "Hello"
Modificare la riga di codice in modo che assomigli alla riga di codice seguente.
xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(10,2)).Value = "Hello"
-
Eseguire di nuovo il programma. Si noti che è possibile eseguire il codice più volte senza ricevere un messaggio di errore.
Riferimenti
189618 Potrebbe essere visualizzato il messaggio di errore "Errore di runtime '-2147023174' (800706ba)" o "Errore di runtime '462'" quando si esegue codice Visual Basic che usa l'automazione per controllare Word