VBA projekty

VBA projekty

Tento průvodce ukazuje, jak prohlížet a upravovat VBA projekt vložený do dokumentu s povolenými makry pomocí Aspose.Words FOSS pro .NET. Aspose.Words FOSS pro .NET může prohlížet a upravovat VBA projekt vložený do dokumentu s povolenými makry (.docm) — jeho moduly, zdrojový kód a knihovní odkazy — prostřednictvím Document.VbaProject a objektového modelu VbaProject/VbaModule. Jedná se o prohlížení a úpravu projektu, nikoli o provádění maker: Aspose.Words nikdy neobsahoval VBA runtime, ani v komerčním produktu, ani v této FOSS edici, takže VBA kód je čten a upravován jako data, nikoli spouštěn.


Přístup k VBA projektu dokumentu

Document.VbaProject vrací VbaProject, nebo null, pokud dokument neobsahuje VBA projekt. Document.HasMacros hlásí, zda je VBA projekt přítomen, aniž byste museli nejprve přistupovat k VbaProject. VbaProject.Name, CodePage, IsSigned a IsProtected popisují samotný projekt.


Čtení a úprava modulů

VbaProject.Modules vrací VbaModuleCollection. Indexujte jej podle názvu, abyste našli konkrétní modul (např. modules["ModuleName"]), nebo vypište celou kolekci. Každý VbaModule odhaluje své Name, Type (a VbaModuleType: DocumentModule, ProceduralModule, ClassModule nebo DesignerModule), a — co je klíčové — své SourceCode jako zapisovatelnou řetězcovou vlastnost, takže zdroj modulů lze programově číst a přepisovat. VbaModuleCollection.Add(vbaModule) a Remove(module) přidávají nebo odstraňují moduly z projektu.


Knihovní odkazy

VbaProject.References vrací VbaReferenceCollection VbaReference objektů — knihovny typů Automation a další VBA projekty, na nichž makro kód závisí. VbaReference.Type hlásí VbaReferenceType (Registered, Project, Original nebo Control) a LibId identifikuje odkazovanou knihovnu. VbaReferenceCollection.Remove(item) / RemoveAt(index) odstraňují odkazy.


Odstranění VBA projektu

Document.RemoveMacros() kompletně odstraňuje VBA projekt z dokumentu — užitečné pro vytvoření kopie dokumentu bez maker, která byla původně distribuována s makry.


Tipy a osvědčené postupy

  • Zkontrolujte Document.HasMacros před úpravou Document.VbaProject, abyste se vyhnuli zpracování null u dokumentů, které nikdy neobsahovaly makra.
  • Považujte VbaModule.SourceCode za prostý text — protože neexistuje runtime VBA, úprava neověřuje kód; poškozené VBA projde stále průchodem, ale ve Wordu se nespustí správně, dokud nebude opraveno.
  • Použijte VbaProject.IsSigned/IsProtected k detekci podepsaných nebo chráněných projektů před pokusem o úpravu jejich modulů.
  • Document.RemoveMacros() je nejjednodušší způsob, jak odstranit makra pro „čistou“ distribuční kopii, místo ručního čištění každého modulu.

Časté problémy

ProblémPříčinaOprava
Document.VbaProject je nullDokument nemá žádný projekt VBANejprve zkontrolujte Document.HasMacros před přístupem k členům VbaProject
Očekává se, že makra budou spuštěna po úpravě SourceCodeAspose.Words nemá žádný engine pro vykonávání VBAPoužijte tento API pouze k načtení/úpravě zdrojového kódu a struktury makra; spusťte výsledný dokument v prostředí s VBA runtime, například Microsoft Word, pro provedení kódu
Indexování VbaModuleCollection podle názvu nevrací nicNeshoda názvu modulu (velikost písmen nebo přesné pravopis)Vyjmenujte VbaProject.Modules k potvrzení přesného názvu modulu

FAQ

Může Aspose.Words FOSS pro .NET spouštět VBA makra v dokumentu?

Ne. Ani tato edice, ani komerční produkt Aspose.Words neobsahuje spouštěcí engine pro VBA — projekty VBA jsou čteny a upravovány jako data (zdroj modulu, reference, metadata projektu), nikdy nejsou spouštěny.

Jak si přečtu zdrojový kód makra?

Získejte modul indexováním VbaProject.Modules podle názvu (např. modules["ModuleName"]), poté přečtěte jeho vlastnost SourceCode.

Mohu do dokumentu přidat zcela nový VBA modul?

Ano — vytvořte VbaModule a přidejte jej do VbaModuleCollection projektu pomocí Add(vbaModule).

Jak mohu zjistit, zda dokument vůbec obsahuje makra, ještě před jeho zpracováním?

Přečtěte Document.HasMacros; je to true, pokud dokument obsahuje projekt VBA, aniž byste museli nejprve přistupovat k Document.VbaProject.

Jak mohu odstranit všechna makra z dokumentu?

Zavolejte Document.RemoveMacros().


API Reference Shrnutí

Třída / MetodaPopis:
Document.VbaProjectVbaProject dokumentu, nebo null, pokud neobsahuje žádná makra
Document.HasMacrosZda je přítomen projekt VBA
VbaProjectName, Modules, References, CodePage, IsSigned, IsProtected
VbaModuleJeden modul: Name, Type (VbaModuleType), zapisovatelný SourceCode
VbaModuleCollectionAdd(), indexer podle názvu, Remove(), Count
VbaReference / VbaReferenceCollectionOdkazované knihovny typů: Type (VbaReferenceType), LibId
Document.RemoveMacros()Odstraňuje VBA projekt z dokumentu

Viz také:

 Čeština