Android에서 프레젠테이션의 VBA 프로젝트 관리

소개

Aspose.Slides는 매크로와 VBA 코드를 다루기 위한 클래스와 인터페이스를 제공합니다.

VBA 매크로 추가

Aspose.Slides는 VBA 프로젝트(및 프로젝트 참조)를 생성하고 기존 모듈을 편집할 수 있도록 VbaProject 클래스를 제공합니다. 프레젠테이션에 포함된 VBA를 관리하려면 IVbaProject 인터페이스를 사용할 수 있습니다.

  1. Presentation 클래스의 인스턴스를 생성합니다.
  2. 새 VBA 프로젝트를 추가하려면 VbaProject 생성자를 사용합니다.
  3. VbaProject에 모듈을 추가합니다.
  4. 모듈 소스 코드를 설정합니다.
  5. 에 대한 참조를 추가합니다.
  6. Microsoft Office에 대한 참조를 추가합니다.
  7. 참조를 VBA 프로젝트와 연결합니다.
  8. 프레젠테이션을 저장합니다.

이 Java 코드는 처음부터 프레젠테이션에 VBA 매크로를 추가하는 방법을 보여줍니다:

// 프레젠테이션 클래스의 인스턴스를 생성합니다
Presentation pres = new Presentation();
try {
    // 새 VBA 프로젝트를 생성합니다
    pres.setVbaProject(new VbaProject());
    
    // VBA 프로젝트에 빈 모듈을 추가합니다
    IVbaModule module = pres.getVbaProject().getModules().addEmptyModule("Module");
    
    // 모듈 소스 코드를 설정합니다
    module.setSourceCode("Sub Test(oShape As Shape)MsgBox Test End Sub");
    
    // <stdole>에 대한 참조를 생성합니다
    VbaReferenceOleTypeLib stdoleReference = new VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");
    
    // Office에 대한 참조를 생성합니다
    VbaReferenceOleTypeLib officeReference = new VbaReferenceOleTypeLib("Office",
            "*\\G{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}#2.0#0#C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE14\\MSO.DLL#Microsoft Office 14.0 Object Library");
    
    // VBA 프로젝트에 참조를 추가합니다
    pres.getVbaProject().getReferences().add(stdoleReference);
    pres.getVbaProject().getReferences().add(officeReference);
   
    // 프레젠테이션을 저장합니다
    pres.save("test.pptm", SaveFormat.Pptm);
} finally {
    if (pres != null) pres.dispose();
}

VBA 매크로 제거

Presentation 클래스 아래의 VbaProject 속성을 사용하면 VBA 매크로를 제거할 수 있습니다.

  1. Presentation 클래스의 인스턴스를 생성하고 매크로가 포함된 프레젠테이션을 로드합니다.
  2. Macro 모듈에 접근하여 제거합니다.
  3. 수정된 프레젠테이션을 저장합니다.

이 Java 코드는 VBA 매크로를 제거하는 방법을 보여줍니다:

// 매크로가 포함된 프레젠테이션을 로드합니다
Presentation pres = new Presentation("VBA.pptm");
try {
    // Vba 모듈에 접근하여 제거합니다
    pres.getVbaProject().getModules().remove(pres.getVbaProject().getModules().get_Item(0));
    
    // 프레젠테이션을 저장합니다
    pres.save("test.pptm", SaveFormat.Pptm);
} finally {
    if (pres != null) pres.dispose();
}

VBA 매크로 추출

  1. Presentation 클래스의 인스턴스를 생성하고 매크로가 포함된 프레젠테이션을 로드합니다.
  2. 프레젠테이션에 VBA 프로젝트가 포함되어 있는지 확인합니다.
  3. VBA 프로젝트에 포함된 모든 모듈을 반복하여 매크로를 확인합니다.

이 Java 코드는 매크로가 포함된 프레젠테이션에서 VBA 매크로를 추출하는 방법을 보여줍니다:

// 매크로가 포함된 프레젠테이션을 로드합니다
Presentation pres = new Presentation("VBA.pptm");
try {
    if (pres.getVbaProject() != null) // 프레젠테이션에 VBA 프로젝트가 포함되어 있는지 확인합니다
    {
        for (IVbaModule module : pres.getVbaProject().getModules())
        {
            System.out.println(module.getName());
            System.out.println(module.getSourceCode());
        }
    }
} finally {
    if (pres != null) pres.dispose();
}

VBA 프로젝트가 암호로 보호되는지 확인

IVbaProject.isPasswordProtected 메서드를 사용하면 프로젝트 속성이 암호로 보호되는지 여부를 판단할 수 있습니다.

  1. Presentation 클래스의 인스턴스를 생성하고 매크로가 포함된 프레젠테이션을 로드합니다.
  2. 프레젠테이션에 VBA project가 포함되어 있는지 확인합니다.
  3. VBA 프로젝트가 암호로 보호되는지 확인하여 해당 속성을 확인합니다.
Presentation presentation = new Presentation("VBA.pptm");
try {
    if (presentation.getVbaProject() != null) { // 프레젠테이션에 VBA 프로젝트가 포함되어 있는지 확인합니다.
        if (presentation.getVbaProject().isPasswordProtected()) {
            System.out.printf("The VBA Project '%s' is protected by password to view project properties.", 
                    presentation.getVbaProject().getName());
        }
    }
} finally {
    presentation.dispose();
}

FAQ

프레젠테이션을 PPTX로 저장하면 매크로에 어떤 일이 발생합니까?

PPTX는 VBA를 지원하지 않으므로 매크로가 제거됩니다. 매크로를 유지하려면 PPTM, PPSM 또는 POTM을 선택하십시오.

예를 들어 데이터를 새로 고치는 등 프레젠테이션 내부에서 매크로를 실행할 수 있나요?

아니요. 이 라이브러리는 VBA 코드를 절대 실행하지 않으며, 실행은 적절한 보안 설정이 된 PowerPoint 내부에서만 가능합니다.

VBA 코드와 연결된 ActiveX 컨트롤 작업이 지원됩니까?

예, 기존 ActiveX controls에 접근하고, 해당 속성을 수정하며, 제거할 수 있습니다. 이는 매크로가 ActiveX와 상호 작용할 때 유용합니다.