Jelenségek
Az Automationt a Microsoft Excel vezérlésére használó kód futtatásakor az alábbi hibák egyike fordulhat elő: A Microsoft Excel 97-ben és az Excel újabb verzióiban az alábbi hibaüzenetek egyike jelenik meg:
1. hibaüzenet:
Az "1004" futásidejű hiba: A(z) "<_Global" objektum "> metódusának neve" metódus nem sikerült
2. hibaüzenet:
Alkalmazás vagy objektum által definiált hiba
A Microsoft Excel 95-ben az alábbi hibaüzenetek egyike jelenik meg:
1. hibaüzenet:
"-2147023174" futásidejű hiba OLE Automation-hiba
2. hibaüzenet:
"462-s" futásidejű hiba: A távoli kiszolgálógép nem létezik vagy nem érhető el.
A probléma oka
A Visual Basic létrehozott egy Hivatkozást az Excelre egy olyan kódsor miatt, amely meghív egy Excel-objektumot, -metódust vagy -tulajdonságot anélkül, hogy az elemet Excel-objektumváltozóval minősíteni kell. A Visual Basic nem adja ki ezt a hivatkozást, amíg be nem fejezi a programot. Ez a hibás hivatkozás zavarja az automatizálási kódot, ha a kód többször is fut.
Megoldás
A probléma megoldásához módosítsa a kódot úgy, hogy az Excel-objektumra, -metódusra vagy -tulajdonságra irányuló minden hívás a megfelelő objektumváltozóval legyen minősítve.
Állapot
A jelenség szándékos.
További információ
A Microsoft Excel automatizálásához létre kell hoznia egy objektumváltozót, amely általában az Excel Application objektumra vagy az Excel-munkafüzet objektumra hivatkozik. Ezután más objektumváltozók is beállíthatók úgy, hogy a Microsoft Excel-objektummodell munkalapjára, tartományára vagy más objektumára hivatkozzon. Amikor Excel-objektumot, -metódust vagy -tulajdonságot használó kódot ír, mindig a megfelelő objektumváltozóval kell megelőznie a hívást. Ha nem, a Visual Basic létrehozza az Excelre mutató saját hivatkozását. Ez a hivatkozás problémákat okozhat, amikor többször próbálja futtatni az automatizálási kódot. Vegye figyelembe, hogy ha a kódsor az objektumváltozóval kezdődik, akkor is meghívhat egy Excel-objektumot, metódust vagy tulajdonságot a kódsor közepén, amely nem előz meg objektumváltozót.Az alábbi lépések bemutatják, hogyan reprodukálható a probléma, és hogyan javítható ki a probléma.
A viselkedés reprodukálásának lépései
-
Indítson el egy új Standard EXE-projektet a Visual Basicben. A form1 alapértelmezés szerint létrejön.
-
A Projekt menüben kattintson a Hivatkozások elemre, majd ellenőrizze az Objektumtárban, hogy az Excel mely verzióját szeretné automatizálni.
-
Helyezzen el egy CommandButton vezérlőt a Form1 űrlapon.
-
Másolja a következő példakódot a Form1 kódablakba.
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 -
A Futtatás menüben kattintson a Start gombra, vagy nyomja le az F5 billentyűt a program elindításához.
-
Kattintson a CommandButton vezérlőre. Nem történik hiba. Az Excelre mutató hivatkozás azonban létrejött, és nem lett közzéadva.
-
Kattintson ismét a CommandButton vezérlőre. Figyelje meg, hogy a "Tünetek" szakaszban tárgyalt hibaüzenetek egyike jelenik meg.Megjegyzés: A hibaüzenet azért jelenik meg, mert a kód a cella metódusára hivatkozik anélkül, hogy a hívást a xlSheet objektumváltozó.
-
Állítsa le a projektet, és módosítsa a következő kódsort:
xlSheet.Range(Cells(1,1),Cells(10,2)).Value = "Hello"
Módosítsa a kódsort úgy, hogy az a következő kódsorhoz hasonlítson.
xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(10,2)).Value = "Hello"
-
Futtassa újra a programot. Figyelje meg, hogy a kódot többször is futtathatja anélkül, hogy hibaüzenetet kapna.
Hivatkozások
189618 A "Run-time error '-2147023174' (800706ba)" hibaüzenet vagy a "Run-time error '462' hibaüzenet jelenhet meg, amikor olyan Visual Basic-kódot futtat, amely az Automation használatával vezérli a Word