Proiecte VBA

Proiecte VBA

Proiecte VBA

Acest ghid arată cum să inspectați și să modificați proiectul VBA încorporat într-un document cu macrocomenzi cu Aspose.Words FOSS pentru .NET. Aspose.Words FOSS pentru .NET poate inspecta și modifica proiectul VBA încorporat într-un document cu macrocomenzi (.docm) — modulele sale, codul sursă și referințele de bibliotecă — prin Document.VbaProject și modelul de obiecte VbaProject/VbaModule. Aceasta este inspecția și editarea proiectului, nu execuția macro-urilor: Aspose.Words nu a inclus niciodată un runtime VBA, nici în produsul comercial, nici în această ediție FOSS, așa că codul VBA este citit și modificat ca date, nu rulat.


Accesarea proiectului VBA al unui document

Document.VbaProject returnează un VbaProject, sau null dacă documentul nu are proiect VBA. Document.HasMacros raportează dacă există un proiect VBA fără să fie nevoie să accesați VbaProject mai întâi. VbaProject.Name, CodePage, IsSigned și IsProtected descriu proiectul în sine.


Citirea și editarea modulelor

VbaProject.Modules returnează un VbaModuleCollection. Indexați-l după nume pentru a căuta un modul specific (de ex. modules["ModuleName"]), sau enumerați întreaga colecție. Fiecare VbaModule expune Name, Type (un VbaModuleType: DocumentModule, ProceduralModule, ClassModule sau DesignerModule), și — critic — SourceCode ca proprietate de tip șir scriabil, astfel încât sursa modulului să poată fi citită și rescrisă programatic. VbaModuleCollection.Add(vbaModule) și Remove(module) adaugă sau elimină module din proiect.


Referințe de bibliotecă

VbaProject.References returnează un VbaReferenceCollection de obiecte VbaReference — bibliotecile de tip Automation și alte proiecte VBA de care depinde codul macro. VbaReference.Type raportează un VbaReferenceType (Registered, Project, Original sau Control), iar LibId identifică biblioteca referențiată. VbaReferenceCollection.Remove(item) / RemoveAt(index) elimină referințele.


Înlăturarea unui proiect VBA

Document.RemoveMacros() elimină complet proiectul VBA dintr-un document — util pentru a produce o copie fără macro-uri a unui document care inițial a fost livrat cu macro-uri.


Sfaturi și bune practici

  • Verificați Document.HasMacros înainte de a atinge Document.VbaProject pentru a evita gestionarea valorilor nule în documentele care nu au avut niciodată macro-uri.
  • Tratați VbaModule.SourceCode ca pe text simplu — deoarece nu există un runtime VBA, editarea lui nu validează codul; VBA-ul malformat va fi tot transmis, dar nu va rula corect în Word până nu este corectat.
  • Utilizați VbaProject.IsSigned/IsProtected pentru a detecta proiecte semnate sau protejate înainte de a încerca să modificați modulele acestora.
  • Document.RemoveMacros() este cea mai simplă modalitate de a elimina macro-urile pentru o copie de distribuție “clean”, în loc să curățați manual fiecare modul.

Probleme comune

ProblemăCauzăRemediere
Document.VbaProject este nullDocumentul nu are niciun proiect VBAVerificaţi mai întâi Document.HasMacros înainte de a accesa membrii VbaProject
Se așteaptă ca macro-urile să ruleze după editarea SourceCodeAspose.Words nu are motor de execuție VBAFolosiți acest API pentru a citi/modifica doar sursa și structura macro-ului; rulați documentul rezultat într-un mediu cu un runtime VBA, cum ar fi Microsoft Word, pentru a executa codul
Indexarea VbaModuleCollection după nume nu returnează nimicNume de modul necorespunzător (diferență de majuscule/minuscule sau ortografie exactă)Enumerați VbaProject.Modules pentru a confirma numele exact al modulului

FAQ

Poate Aspose.Words FOSS pentru .NET să ruleze macro-uri VBA într-un document?

Nu. Nici această ediție, nici produsul comercial Aspose.Words nu include un motor de execuție VBA — proiectele VBA sunt citite și modificate ca date (sursa modulului, referințe, metadatele proiectului), niciodată nu sunt executate.

Cum pot citi codul sursă al unui macro?

Obțineți modulul prin indexarea VbaProject.Modules după nume (de ex. modules["ModuleName"]), apoi citiți proprietatea SourceCode a acestuia.

Pot adăuga un modul VBA complet nou într-un document?

Da — construiți un VbaModule și adăugați-l la VbaModuleCollection proiectului prin Add(vbaModule).

Cum pot verifica dacă un document are macro-uri înainte de a-l procesa?

Citește Document.HasMacros; este true dacă documentul conține un proiect VBA, fără să fie nevoie să accesezi Document.VbaProject mai întâi.

Cum pot elimina toate macro-urile dintr-un document?

Apelează Document.RemoveMacros().


API Reference Rezumat

Clasă / MetodăDescriere:
Document.VbaProjectVbaProject al documentului, sau null dacă nu are macro-uri
Document.HasMacrosDacă este prezent un proiect VBA
VbaProjectName, Modules, References, CodePage, IsSigned, IsProtected
VbaModuleUn modul: Name, Type (VbaModuleType), scriibil SourceCode
VbaModuleCollectionAdd(), indexator după nume, Remove(), Count
VbaReference / VbaReferenceCollectionBiblioteci de tip referențiate: Type (VbaReferenceType), LibId
Document.RemoveMacros()Înlătură proiectul VBA din document

Vezi și:

 Română