VBA-projekt

VBA-projekt

Denna guide visar hur man granskar och modifierar VBA-projektet som är inbäddat i ett makroaktiverat dokument med Aspose.Words FOSS för .NET. Aspose.Words FOSS för .NET kan granska och modifiera VBA-projektet som är inbäddat i ett makroaktiverat dokument (.docm) — dess moduler, källkod och biblioteksreferenser — via Document.VbaProject och VbaProject/VbaModule-objektmodellen. Detta är projektgranskning och redigering, inte makroexekvering: Aspose.Words har aldrig inkluderat en VBA-runtime, i den kommersiella produkten eller denna FOSS-utgåva, så VBA-kod läses och modifieras som data, inte körs.


Åtkomst till ett dokuments VBA-projekt

Document.VbaProject returnerar en VbaProject, eller null om dokumentet saknar VBA-projekt. Document.HasMacros rapporterar huruvida ett VBA-projekt finns utan att du först måste komma åt VbaProject. VbaProject.Name, CodePage, IsSigned och IsProtected beskriver själva projektet.


Läsa och redigera moduler

VbaProject.Modules returnerar en VbaModuleCollection. Indexera den efter namn för att leta upp en specifik modul (t.ex. modules["ModuleName"]), eller enumerera hela samlingen. Varje VbaModule exponerar sin Name, Type (en VbaModuleType: DocumentModule, ProceduralModule, ClassModule eller DesignerModule), och — kritiskt — dess SourceCode som en skrivbar strängegenskap, så att modulkällan kan läsas och skrivas om programmässigt. VbaModuleCollection.Add(vbaModule) och Remove(module) lägger till eller tar bort moduler från projektet.


Biblioteksreferenser

VbaProject.References returnerar en VbaReferenceCollection av VbaReference objekt — Automation-typbiblioteken och andra VBA-projekt som makrokoden är beroende av. VbaReference.Type rapporterar ett VbaReferenceType (Registered, Project, Original eller Control), och LibId identifierar det refererade biblioteket. VbaReferenceCollection.Remove(item) / RemoveAt(index) tar bort referenser.


Ta bort ett VBA-projekt

Document.RemoveMacros() tar bort VBA-projektet från ett dokument helt — användbart för att skapa en makrolös kopia av ett dokument som ursprungligen levererades med makron.


Tips och bästa praxis

  • Kontrollera Document.HasMacros innan du rör Document.VbaProject för att undvika null-hantering för dokument som aldrig hade makron.
  • Behandla VbaModule.SourceCode som vanlig text — eftersom det inte finns någon VBA-körningsmiljö validerar redigering inte koden; felaktig VBA kommer fortfarande att passera igenom, men kommer inte att köras korrekt i Word förrän den är korrigerad.
  • Använd VbaProject.IsSigned/IsProtected för att upptäcka signerade eller skyddade projekt innan du försöker modifiera deras moduler.
  • Document.RemoveMacros() är det enklaste sättet att ta bort makron för en “ren” distributionskopia, snarare än att manuellt rensa varje modul.

Vanliga problem

ProblemOrsakÅtgärd
Document.VbaProject är nullDokumentet har inget VBA-projektKontrollera Document.HasMacros först innan du får åtkomst till VbaProject-medlemmar
Förväntar att makron körs efter redigering av SourceCodeAspose.Words har ingen VBA-exekveringsmotorAnvänd detta API för att endast läsa/ändra makrokällan och strukturen; kör det resulterande dokumentet i en miljö med en VBA-runtime, såsom Microsoft Word, för att exekvera koden
Indexering av VbaModuleCollection efter namn returnerar ingentingModulnamnsavvikelse (skiftläge eller exakt stavning)Enumerera VbaProject.Modules för att bekräfta det exakta modulnamnet

FAQ

Kan Aspose.Words FOSS för .NET köra VBA-makron i ett dokument?

Nej. Varken den här utgåvan eller den kommersiella Aspose.Words-produkten innehåller en VBA-exekveringsmotor — VBA-projekt läses och modifieras som data (modulkälla, referenser, projektmetadata), men körs aldrig.

Hur läser jag ett makros källkod?

Hämta modulen genom att indexera VbaProject.Modules efter namn (t.ex. modules["ModuleName"]), och läs sedan dess SourceCode-egenskap.

Kan jag lägga till en helt ny VBA-modul i ett dokument?

Ja — skapa en VbaModule och lägg till den i projektets VbaModuleCollection via Add(vbaModule).

Hur kontrollerar jag om ett dokument ens har makron innan jag bearbetar det?

Läs Document.HasMacros; det är true om dokumentet innehåller ett VBA-projekt, utan att du först behöver komma åt Document.VbaProject.

Hur tar jag bort alla makron från ett dokument?

Anropa Document.RemoveMacros().


API Reference Sammanfattning

Klass / MetodBeskrivning
Document.VbaProjectDokumentets VbaProject, eller null om det saknar makron
Document.HasMacrosOm ett VBA-projekt finns
VbaProjectName, Modules, References, CodePage, IsSigned, IsProtected
VbaModuleEn modul: Name, Type (VbaModuleType), skrivbar SourceCode
VbaModuleCollectionAdd(), indexerad efter namn, Remove(), Count
VbaReference / VbaReferenceCollectionRefererade typbibliotek: Type (VbaReferenceType), LibId
Document.RemoveMacros()Tar bort VBA-projektet från dokumentet

Se även

 Svenska