Simptome
La executarea de cod care utilizează automatizare control Microsoft Excel, poate apărea una dintre următoarele erori:
În Microsoft Excel 97 şi în versiunile ulterioare de Excel, primiți unul din următoarele mesaje de eroare:
Mesaj de eroare 1
Run-time error '1004':
'< Nume metoda >' metoda de obiect '_Global' nu a reușit
Mesaj de eroare 2
Eroare de aplicație definite sau definite de obiect
În Microsoft Excel 95, primiți unul dintre următoarele mesaje de eroare:
Mesaj de eroare 1
Run-time error '-2147023174'
OLE Automation eroare
Mesaj de eroare 2
Run-time error '462':
Mașină de server la distanță nu există sau nu este disponibilă.
Cauza
Visual Basic a stabilit o referință la Excel din cauza o linie de cod care apelează un obiect Excel, metoda sau proprietatea fără calificate element cu o variabilă de obiecte Excel. Visual Basic nu eliberează această referință până când se închide programul. Această referință rătăcitor intră în conflict cu codul de automatizare atunci când codul se execută mai multe ori.
Rezolvare
Pentru a rezolva această problemă, modificați codul, astfel încât fiecare apel către un obiect Excel, metoda sau proprietatea este calificat cu variabila de obiect corespunzător.
Stare
Acest comportament este proiectat.
Mai multe informații
Pentru a automatiza Microsoft Excel, stabiliți o variabilă obiect care, de obicei, se referă la obiectul aplicației Excel sau obiectul registru de lucru Excel. Alte variabile obiect apoi poate fi configurat să se referă la o foaie de lucru, o gamă sau alte obiecte în modelul de obiecte Microsoft Excel. Atunci când scrie codul de a utiliza un obiect Excel, metoda sau proprietatea, ce ar trebui să întotdeauna precede apelul cu variabila de obiect corespunzător. Dacă nu, Visual Basic stabilește propria referință în Excel. Această referință poate cauza probleme atunci când încercați să executați automatizare cod mai multe ori. Rețineți că, chiar dacă linia de cod începe cu variabila de obiect, un apel pot fi făcute pentru un obiect Excel, metoda sau proprietatea în mijlocul linie de cod care nu este precedată de o variabilă obiect.
Următorii pași ilustrează modul pentru reproducerea acestei probleme și a corecta problema.
Pași pentru a reproduce comportamentul
-
Începe un nou proiect Standard EXE în Visual Basic. În mod implicit, se creează Form1.
-
În meniul de proiect , faceți clic pe referințe, şi apoi verificaţi biblioteca de obiecte pentru versiunea de Excel pe care intenționați să automatizeze.
-
Loc un control CommandButton Form1.
-
Copiați următorul exemplu de cod pentru fereastra de cod de 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 -
În meniul de Executare , faceți clic pe Start, sau apăsați F5 pentru a porni programul.
-
Faceți clic pe controlul CommandButton . Eroare nu apare. Cu toate acestea, o referință la Excel s-a creat și nu a fost lansat.
-
Faceți clic pe controlul CommandButton din nou. Observați că primiți unul dintre mesajele de eroare care sunt discutate în secţiunea "Simptome".
Notă Mesajul de eroare se produce deoarece codul se referă la metoda de celula fără precedent apelul cu
variabilă obiect xlSheet . -
Stop proiectul și modificați următoarea linie de cod:
xlSheet.Range(Cells(1,1),Cells(10,2)).Value = "Hello"
Modificați linia de cod pentru a se aseamănă cu următoarea linie de cod.
xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(10,2)).Value = "Hello"
-
Executați din nou programul. Observați că se poate executa cod mai multe ori fără a primi un mesaj de eroare.
Referințe
Pentru mai multe informații, faceți clic pe următoarele numere de articol pentru a vedea articolele în baza de cunoștințe Microsoft:
Fişierul 167223 ajutorul Microsoft Office 97 automatizare
189618 , este posibil să primiți mesajul de eroare "Run-time error '-2147023174' (800706ba)" sau "Run-time error '462'" când executați codul Visual Basic care utilizează automatizare control Word