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

  1. Indítson el egy új Standard EXE-projektet a Visual Basicben. A form1 alapértelmezés szerint létrejön.

  2. 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.

  3. Helyezzen el egy CommandButton vezérlőt a Form1 űrlapon.

  4. 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
    
  5. A Futtatás menüben kattintson a Start gombra, vagy nyomja le az F5 billentyűt a program elindításához.

  6. 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.

  7. 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ó.

  8. Á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"
    
  9. 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  

További segítségre van szüksége?

További lehetőségeket szeretne?

Fedezze fel az előfizetés előnyeit, böngésszen az oktatóanyagok között, ismerje meg, hogyan teheti biztonságossá eszközét, és így tovább.