VBA 프로젝트

VBA 프로젝트

VBA 프로젝트

이 가이드는 Aspose.Words FOSS for .NET를 사용하여 매크로 사용 문서에 포함된 VBA 프로젝트를 검사하고 수정하는 방법을 보여줍니다. Aspose.Words FOSS for .NET는 매크로 사용 문서(.docm)에 포함된 VBA 프로젝트—모듈, 소스 코드 및 라이브러리 참조—를 Document.VbaProject 및 VbaProject/VbaModule 객체 모델을 통해 검사하고 수정할 수 있습니다. 이는 프로젝트 검사 및 편집이며 매크로 실행이 아닙니다: Aspose.Words는 상용 제품이든 이 FOSS 에디션이든 VBA 런타임을 포함한 적이 없으므로 VBA 코드는 데이터로 읽고 수정될 뿐 실행되지 않습니다.


문서의 VBA 프로젝트에 접근하기

Document.VbaProject은 VbaProject을 반환하며, 문서에 VBA 프로젝트가 없으면 null를 반환합니다. Document.HasMacros은 먼저 VbaProject에 접근할 필요 없이 VBA 프로젝트가 존재하는지 여부를 보고합니다. VbaProject.Name, CodePage, IsSigned, 및 IsProtected은 프로젝트 자체를 설명합니다.


모듈 읽기 및 편집

VbaProject.Modules은 VbaModuleCollection을 반환합니다. 이름으로 인덱싱하여 특정 모듈(예: modules["ModuleName"])을 찾거나 전체 컬렉션을 열거할 수 있습니다. 각 VbaModule은 Name와 Type (a VbaModuleType: DocumentModule, ProceduralModule, ClassModule, 또는 DesignerModule), 그리고 중요한 점은 SourceCode을 쓰기 가능한 문자열 속성으로 노출하므로 모듈 소스를 프로그래밍 방식으로 읽고 다시 쓸 수 있습니다. VbaModuleCollection.Add(vbaModule)와 Remove(module)은 프로젝트에 모듈을 추가하거나 제거합니다.


라이브러리 참조

VbaProject.References은(는) VbaReference 객체의 VbaReferenceCollection을(를) 반환합니다 — 매크로 코드가 의존하는 Automation 유형 라이브러리 및 기타 VBA 프로젝트입니다. VbaReference.Type은(는) VbaReferenceType(Registered, Project, Original, 또는 Control)를 보고하고, LibId은(는) 참조된 라이브러리를 식별합니다. VbaReferenceCollection.Remove(item) / RemoveAt(index)은(는) 참조를 제거합니다.


VBA 프로젝트 제거

Document.RemoveMacros()은(는) 문서에서 VBA 프로젝트를 완전히 제거합니다 — 원래 매크로가 포함된 문서의 매크로 없는 복사본을 만들 때 유용합니다.


팁 및 모범 사례

  • 매크로가 전혀 없었던 문서에 대해 null 처리를 방지하려면 Document.VbaProject을(를) 건드리기 전에 Document.HasMacros을(를) 확인하십시오.
  • VbaModule.SourceCode을(를) 일반 텍스트로 취급하십시오 — VBA 런타임이 없기 때문에 편집해도 코드 검증이 이루어지지 않습니다; 형식이 잘못된 VBA는 여전히 라운드트립되지만, 수정될 때까지 Word에서 올바르게 실행되지 않습니다.
  • 모듈을 수정하기 시도하기 전에 서명되었거나 보호된 프로젝트를 감지하려면 VbaProject.IsSigned/IsProtected을(를) 사용하십시오.
  • Document.RemoveMacros()은(는) 모든 모듈을 수동으로 삭제하는 대신 “깨끗한” 배포 사본을 위해 매크로를 제거하는 가장 간단한 방법입니다.

공통 문제

문제원인해결 방법
Document.VbaProject은 null문서에 VBA 프로젝트가 없습니다.먼저 Document.HasMacros을(를) 확인한 후 VbaProject 멤버에 접근하십시오.
SourceCode를 편집한 후 매크로가 실행될 것으로 기대합니다.Aspose.Words에 VBA 실행 엔진이 없습니다.이 API를 사용하여 매크로 소스와 구조만 읽고/수정하십시오; 결과 문서를 VBA 런타임이 있는 환경, 예를 들어 Microsoft Word에서 실행하여 코드를 실행합니다.
VbaModuleCollection를 이름으로 인덱싱하면 아무 것도 반환되지 않습니다.모듈 이름 불일치(대소문자 또는 정확한 철자).VbaProject.Modules를 열거하여 정확한 모듈 이름을 확인하십시오.

FAQ

Aspose.Words FOSS for .NET가 문서에서 VBA 매크로를 실행할 수 있나요?

아니요. 이 에디션도 상업용 Aspose.Words 제품도 VBA 실행 엔진을 포함하지 않습니다 — VBA 프로젝트는 데이터(모듈 소스, 참조, 프로젝트 메타데이터)로 읽고 수정될 뿐, 실행되지 않습니다.

매크로의 소스 코드를 어떻게 읽나요?

VbaProject.Modules를 이름으로 인덱싱하여 모듈을 가져온 다음(예: modules["ModuleName"]), 해당 모듈의 SourceCode 속성을 읽으세요.

새 VBA 모듈을 문서에 추가할 수 있나요?

예 — VbaModule를 생성하고 Add(vbaModule)를 통해 프로젝트의 VbaModuleCollection에 추가합니다.

문서를 처리하기 전에 해당 문서에 매크로가 있는지 어떻게 확인합니까?

Document.HasMacros를 읽으세요; 문서에 VBA 프로젝트가 포함되어 있으면 true이며, 먼저 Document.VbaProject에 접근할 필요가 없습니다.

문서에서 모든 매크로를 제거하려면 어떻게 해야 합니까?

Document.RemoveMacros()를 호출하세요.


API Reference 요약

클래스 / 메서드설명
Document.VbaProject문서의 VbaProject이며, 매크로가 없을 경우 null입니다.
Document.HasMacrosVBA 프로젝트가 존재하는지 여부
VbaProjectName, Modules, References, CodePage, IsSigned, IsProtected
VbaModule하나의 모듈: Name, Type (VbaModuleType), 쓰기 가능 SourceCode
VbaModuleCollectionAdd(), 이름별 인덱서, Remove(), Count
VbaReference / VbaReferenceCollection참조된 형식 라이브러리: Type (VbaReferenceType), LibId
Document.RemoveMacros()문서에서 VBA 프로젝트를 제거합니다

참조

 한국어