Barvna shema: Temna
Trenutno dejavna stran: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Office SDK » Odpravljanje težav » Koda VBA se ne prevede

Koda VBA se ne prevede

Simptom: build se konča z izhodno kodo 4 in navede enega ali več objektov, katerih koda se ne prevede.

Okolje

Vse različice WKL Office SDK.

Vzrok

Access prevaja celoten projekt VBA naenkrat in ne pove, v katerem modulu je napaka. Gradnja jo zato poišče sama: odstrani telesa vseh postopkov, nato vsakemu objektu posebej vrne celotno kodo in sporoči objekte, s katerimi prevajanje ne uspe. Če se ne prevede niti okrnjeni projekt, je napaka v razdelku z deklaracijami ali v glavi postopka – običajno gre za tip iz sklica, ki manjka v references.json –, sporočeni pa so objekti, katerih deklaracije prevajanje prekinejo.

Nekatere vzroke preverjanje najde že v izvornih datotekah, preden se Access zažene, in navede datoteko in vrstico; check in build jih sporočita kot error [Compile] module <ime>, <datoteka>:<vrstica>:

  • Deklaracija za prvim postopkom (od WKL Office SDK 0.6.1 naprej). VBA dovoli Dim, Const, spremenljivke modula (Private/Public), Declare, Type in Enum samo v razdelku deklaracij na začetku modula; deklaracija niže prekine prevajanje celotnega projekta.
  • Spremenljivka, ki ni določena: imenu je dodeljena vrednost (total = 1, Set rs = …, števec zanke For), vendar v projektu ni nikjer deklarirano, modul pa ima Option Explicit. Preverjajo se samo imena, ki jim je dodeljena vrednost, v standardnih modulih in modulih razreda.
  • Ključna beseda ali stavek jezika VBA kot oznaka (Write:, Name:) ali rezervirana beseda kot ime parametra, spremenljivke ali postopka (ByVal Until As Date).
  • Modul z imenom projekta VBA (imenom podatkovne zbirke); Access ga ne naloži.

Isto preverjanje se v dodatku za Access izvede z ukazom Preveri kodo in po vsakem shranjevanju v urejevalniku VBA, tam na kodi, kakršna je v urejevalniku (Uporaba dodatka za Access).

Rešitev

  1. Odprite podatkovno zbirko (build/<configuration>/<name>.accdb zadnje uspešne gradnje ali tisto, ki je odprta v programu Access) in v urejevalniku VBA izberite Debug > Compile, ki pokaže vrstico z napako. SDK vrstice ne more sporočiti, ker jo pozna samo urejevalnik VBA in jo prikaže le v oknu s sporočilom.
  2. Manjkajoč sklic: dodajte ga v source/references.json (ali ga nastavite v programu Access in izvozite).
  3. Deklaracija za prvim postopkom: vrstico, navedeno v sporočilu, premaknite navzgor, pred prvi Sub, Function ali Property modula.
  4. Spremenljivka, ki ni določena: deklarirajte jo z Dim (ali na ravni modula) ali popravite napačno zapisano ime.
  5. Oznaka ali ime, ki je ključna beseda: preimenujte ju, na primer v Done ali Failed.
  6. Dvakrat deklarirano ime (konstanta, spremenljivka ali postopek v dveh modulih ali dvakrat v enem): eno preimenujte ali odstranite.
sl/wiki/msaccess/sdk/troubleshooting/vba-code-does-not-compile.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille