Chyba automatizácie VBA

Tento tutoriál vysvetlí, čo znamená chyba automatizácie VBA a ako sa vyskytuje.

Program Excel sa skladá z objektov - objekt zošit, objekt pracovného hárka, objekt Range a bunka. Každý objekt má viacero vlastností a metód, ktorých správanie je možné ovládať pomocou kódu VBA. Ak nie je kód VBA správne naprogramovaný, môže dôjsť k chybe automatizácie. Je to jedna z frustrujúcejších chýb vo VBA, pretože sa môže často objaviť bez zjavného dôvodu, keď váš kód vyzerá úplne v poriadku!

(Ďalšie informácie o chybách VBA nájdete v našej príručke na spracovanie chýb)

Odkaz na premennú, ktorá už nie je aktívna

Chyba automatizácie sa môže vyskytnúť, keď odkazujete na zošit alebo pracovný hárok prostredníctvom premennej, ale premenná už nie je aktívna.

1234567891011 Automatizácia čiastkového testu ()Dim strFile ako reťazecDim wb ako zošit'otvorte súbor a nastavte premennú zošitastrFile = Application.GetOpenFilenameNastaviť wb = zošity. Otvorené (strFile)„Zatvorte zošitwb.Zavrieť'skúste aktivovať zošitwb. AktivovaťKoniec pod

Keď spustíme kód uvedený vyššie, zobrazí sa chyba automatizácie. Je to spôsobené tým, že sme otvorili zošit a priradili sme k nemu zošit. Potom sme zatvorili zošit, ale v nasledujúcom riadku kódu sa pokúsime aktivovať zatvorený zošit. To spôsobí chybu, pretože premenná už nie je aktívna.

Ak chceme aktivovať zošit, musíme ho mať najskôr otvorený!

Preťaženie pamäte

K tejto chybe môže tiež niekedy dôjsť, ak máte slučku a v priebehu cyklu zabudnete vymazať predmet. Môže sa to však stať iba niekedy, a nie iných- čo je jeden z dôvodov, prečo môže byť táto chyba taká nepríjemná.

Vezmite si napríklad tento kód nižšie:

1234567891011121314151617 Podkladový obrázok ()Dim i As IntegerDim shp ako objektPre i = 1 až 100S pracovnými listami („List1“)'nastavte premennú objektuNastaviť shp = .OLEObjects.Add (ClassType: = "Forms.Image.1", Link: = False, DisplayAsIcon: = False, Left: =. Cells (i, "A"). Left, Top: =. Cells ( i, „A“). Horná časť, šírka: = 264, výška: = 124)Ukončiť sS SHP.Object.PictureSizeMode = 3'načítaj obrázok.Object.Picture = LoadPicture ("C: \ data \ image" & i & ".jpg").Object.BorderStyle = 0.Object.BackStyle = 0Ukončiť sĎalej iKoniec pod

Premenná je deklarovaná ako objekt a potom NASTAVIŤ kľúčové slovo sa používa na priradenie obrázku k objektu. Objekt sa potom naplní obrázkom a vloží do listu programu Excel, pričom súčasne prebieha určité formátovanie. Potom do kódu pridáme slučku, aby sme do listu Excelu vložili 100 obrázkov. Občas to spôsobí chybu automatizácie, ale niekedy nie - frustrujúce, však?

Riešením tohto problému je vymazať premennú objektu v slučke nastavením objektu na NIČ - tým sa uvoľní pamäť a zabráni sa chybe.

12345678910111213141516171819 Podkladový obrázok ()Dim i As IntegerDim shp ako objektPre i = 1 až 100S pracovnými listami („List1“)'nastavte premennú objektuNastaviť shp = .OLEObjects.Add (ClassType: = "Forms.Image.1", Link: = False, DisplayAsIcon: = False, Left: =. Cells (i, "A"). Left, Top: =. Cells ( i, „A“). Horná časť, šírka: = 264, výška: = 124)Ukončiť sS SHP.Object.PictureSizeMode = 3'načítaj obrázok.Object.Picture = LoadPicture ("C: \ data \ image.jpg").Object.BorderStyle = 0.Object.BackStyle = 0Ukončiť s'Vymažte premennú objektuNastaviť shp = ničĎalej iKoniec pod

Chyby DLL a aktualizácia systému Windows

Niekedy sa vyskytne chyba a v rámci kódu VBA sa nedá nič urobiť. Opätovná registrácia používaných knižníc DLL a zaistenie aktuálnosti systému Windows a v krajnom prípade spustenie kontroly registra ako niekedy jedinej veci, ktorá môže fungovať na odstránenie tejto chyby.

Dobrým spôsobom, ako sa tejto chybe vyhnúť, je zaistiť, aby boli na mieste pomocou systému Pri chybe Choďte na alebo Pri chybe Pokračujte ďalej rutiny.

wave wave wave wave wave