Jelenségek

Amikor a Microsoft Excel betölt egy Automation-bővítményt cellaszerkesztés közben, az Excel meghibásodik. Ez a probléma csak olyan Automation-bővítmények esetében fordul elő, amelyek az Excelbe betöltött igény szerint lettek betöltve.

A probléma oka

Ez a probléma akkor fordulhat elő, ha egy bővítmény betöltődik, ha a bővítmény űrlapot vagy párbeszédpanelt jelenít meg, vagy ha a bővítmény Automation-kérelmet küld az Excelnek, amely megpróbálja módosítani az Excel állapotát. Az alábbi lista olyan Automation-kérelmek mintáit tartalmazza, amelyek az Excel sikertelenségéhez vezethetnek, amikor a cellaszerkesztés során betöltődik egy Automation-bővítmény:

  • Programozott módon módosíthatja az aktuális kijelölést. Például:

    Application.ActiveSheet.Range("A1").Select
  • A Windows-gyűjtemény egyik elemének tulajdonságának vagy metódusának meghívása. Például:

    Application.ActiveWindow.Zoom = 200
  • Módosíthatja az Excel beállításait, például a számítási módot. Például:

    Application.CalculationMode = xlManual

Ezek az elemek az Excel-környezet, munkafüzet vagy munkalap módosítására tett kódkísérletek; az ilyen típusú műveletek szerkesztési módban nem engedélyezettek.

Megoldás

Ne próbálkozzon a fent említett műveletekkel, amíg a bővítmény betöltődik. A terhelés során meghívott bővítménymetódusok közé tartozik az Initialize metódus, és ha az Automation-bővítmény implementálja az IDTExtensibility2 felületet, az OnConnection és az OnStartupComplete metódust is.

Állapot

A Microsoft megerősítette, hogy ez egy hiba a cikk elején felsorolt Microsoft-termékekben.

További információ

A probléma reprodukálásának lépései

  1. Indítson el egy új ActiveX DLL-projektet a Visual Basicben.

  2. A Projekt menüben kattintson a Project1 tulajdonságai elemre. Módosítsa a projekt nevét TestAddIn értékre, majd kattintson az OK gombra.

  3. Adja hozzá a következő kódot a Class1 kódmodulhoz:

    Private Sub Class_Initialize()    MsgBox "Class_Initialize"End Sub
  4. TestAddIn.dll készítése.

  5. Az Excelben hozzon létre egy új munkafüzetet.

  6. A Microsoft Office Excel 2003-ban vagy a Microsoft Excel 2002-ben kövesse az alábbi lépéseket:

    1. Az Eszközök menüben mutasson a Bővítmények elemre, majd kattintson az Automation elemre.

    2. A listában kattintson a TestAddIn.Class1 elemre, majd az OK gombra.

    3. A Bővítmények párbeszédpanelen kattintson az OK gombra.

    A Microsoft Office Excel 2007-ben kövesse az alábbi lépéseket:

    1. Kattintson a Microsoft Office gombra, majd azExcel beállításai parancsra.

    2. Kattintson a Bővítmények fülre.

    3. A Kezelés listában kattintson az Excel-bővítmények, majd az Ugrás gombra.

    4. A Bővítmények párbeszédpanelen kattintson azAutomation elemre.

    5. A listában kattintson a TestAddin.Class1 elemre, majd az OK gombra.

    6. Kattintson az OK gombra.

  7. Írjon be egy =a értéket bármelyik cellába. Megjelenik egy "Class_Initialize" szövegű üzenetmező.

  8. Kattintson az OK gombra az üzenetpanel bezárásához. Néhány másodperc elteltével az Excel meghibásodik.

Hivatkozások

További információért kattintson a következő cikkszámra a cikk Microsoft Tudásbázisban való megtekintéséhez:

291392 INFORMÁCIÓ: Excel COM-bővítmények és Automation-bővítmények

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.