Java ile Sunularda VBA Projelerini Yönetme
Giriş
Aspose.Slides, makrolar ve VBA kodlarıyla çalışmak için sınıflar ve arabirimler sağlar.
Note
Bir sunumu makrolar içeriyorken farklı bir dosya biçimine (PDF, HTML, vb.) dönüştürdüğünüzde, Aspose.Slides tüm makroları yok sayar (makrolar sonuç dosyasına aktarılmaz).
Bir sunuma makro eklediğinizde veya makro içeren bir sunuyu yeniden kaydettiğinizde, Aspose.Slides sadece makroların baytlarını yazar.
Aspose.Slides asla bir sunumdaki makroları çalıştırmaz.
VBA Makroları Ekleme
Aspose.Slides, VBA projeleri (ve proje referansları) oluşturmanıza ve mevcut modülleri düzenlemenize olanak tanıyan VbaProject sınıfını sağlar. Sunuya gömülü VBA’yı yönetmek için IVbaProject arabirimini kullanabilirsiniz.
- Presentation sınıfının bir örneğini oluşturun.
- Yeni bir VBA projesi eklemek için VbaProject yapıcı metodunu kullanın.
- VbaProject’e bir modül ekleyin.
- Modül kaynak kodunu ayarlayın.
referanslarını ekleyin. - Microsoft Office referanslarını ekleyin.
- Referansları VBA projesiyle ilişkilendirin.
- Sunumu kaydedin.
Bu Java kodu, baştan bir VBA makrosu eklemenizi gösterir:
// Sunum sınıfının bir örneğini oluşturur
Presentation pres = new Presentation();
try {
// Yeni bir VBA Projesi oluşturur
pres.setVbaProject(new VbaProject());
// VBA projesine boş bir modül ekler
IVbaModule module = pres.getVbaProject().getModules().addEmptyModule("Module");
// Modül kaynak kodunu ayarlar
module.setSourceCode("Sub Test(oShape As Shape)MsgBox Test End Sub");
// <stdole> referansı oluşturur
VbaReferenceOleTypeLib stdoleReference = new VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");
// Office referansı oluşturur
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 projesine referansları ekler
pres.getVbaProject().getReferences().add(stdoleReference);
pres.getVbaProject().getReferences().add(officeReference);
// Sunumu kaydeder
pres.save("test.pptm", SaveFormat.Pptm);
} finally {
if (pres != null) pres.dispose();
}
VBA Makroları Kaldırma
Presentation sınıfının altındaki VbaProject özelliğini kullanarak bir VBA makrosunu kaldırabilirsiniz.
- Makro içeren sunumu yükleyerek bir Presentation örneği oluşturun.
- Makro modülüne erişin ve onu kaldırın.
- Değiştirilen sunumu kaydedin.
Bu Java kodu, bir VBA makrosunu nasıl kaldıracağınızı gösterir:
// Makroyu içeren sunumu yükler
Presentation pres = new Presentation("VBA.pptm");
try {
// Vba modülüne erişir ve onu kaldırır
pres.getVbaProject().getModules().remove(pres.getVbaProject().getModules().get_Item(0));
// Sunumu kaydeder
pres.save("test.pptm", SaveFormat.Pptm);
} finally {
if (pres != null) pres.dispose();
}
VBA Makroları Çıkarma
- Makro içeren sunumu yükleyerek bir Presentation örneği oluşturun.
- Sunumun bir VBA Projesi içerip içermediğini kontrol edin.
- VBA Projesi içinde bulunan tüm modülleri döngüye alarak makroları görüntüleyin.
Bu Java kodu, makro içeren bir sunumdan VBA makrolarını nasıl çıkaracağınızı gösterir:
// Makroyu içeren sunumu yükler
Presentation pres = new Presentation("VBA.pptm");
try {
if (pres.getVbaProject() != null) // Sunumun bir VBA Projesi içerip içermediğini kontrol eder
{
for (IVbaModule module : pres.getVbaProject().getModules())
{
System.out.println(module.getName());
System.out.println(module.getSourceCode());
}
}
} finally {
if (pres != null) pres.dispose();
}
Bir VBA Projesinin Şifre Koruması Olup Olmadığını Kontrol Etme
IVbaProject.isPasswordProtected metodunu kullanarak bir projenin özelliklerinin şifre korumalı olup olmadığını belirleyebilirsiniz.
- Makro içeren bir sunumu yükleyerek bir Presentation örneği oluşturun.
- Sunumun bir VBA projesi içerip içermediğini kontrol edin.
- VBA projesinin özelliklerini görüntülemek için şifre korumalı olup olmadığını kontrol edin.
Presentation presentation = new Presentation("VBA.pptm");
try {
if (presentation.getVbaProject() != null) { // Sunumun bir VBA projesi içerip içermediğini kontrol eder.
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();
}
SSS
Sunumu PPTX olarak kaydedersem makrolar ne olur?
Makrolar kaldırılır çünkü PPTX VBA’yı desteklemez. Makroları korumak için PPTM, PPSM veya POTM formatlarını seçin.
Aspose.Slides bir sunumdaki makroları, örneğin veri yenilemek için çalıştırabilir mi?
Hayır. Kütüphane asla VBA kodunu çalıştırmaz; yürütme yalnızca PowerPoint içinde uygun güvenlik ayarlarıyla mümkündür.
VBA koduna bağlı ActiveX denetimleriyle çalışmak destekleniyor mu?
Evet, mevcut ActiveX controls üzerinde erişim sağlayabilir, özelliklerini değiştirebilir ve kaldırabilirsiniz. Bu, makroların ActiveX ile etkileşime girdiği durumlar için faydalıdır.