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
-
Indítson el egy új ActiveX DLL-projektet a Visual Basicben.
-
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.
-
Adja hozzá a következő kódot a Class1 kódmodulhoz:
Private Sub Class_Initialize() MsgBox "Class_Initialize"End Sub
-
TestAddIn.dll készítése.
-
Az Excelben hozzon létre egy új munkafüzetet.
-
A Microsoft Office Excel 2003-ban vagy a Microsoft Excel 2002-ben kövesse az alábbi lépéseket:
-
Az Eszközök menüben mutasson a Bővítmények elemre, majd kattintson az Automation elemre.
-
A listában kattintson a TestAddIn.Class1 elemre, majd az OK gombra.
-
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:
-
Kattintson a Microsoft Office gombra, majd azExcel beállításai parancsra.
-
Kattintson a Bővítmények fülre.
-
A Kezelés listában kattintson az Excel-bővítmények, majd az Ugrás gombra.
-
A Bővítmények párbeszédpanelen kattintson azAutomation elemre.
-
A listában kattintson a TestAddin.Class1 elemre, majd az OK gombra.
-
Kattintson az OK gombra.
-
-
Írjon be egy =a értéket bármelyik cellába. Megjelenik egy "Class_Initialize" szövegű üzenetmező.
-
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