JavaScript ile Sunumlarda VBA Projelerini Yönetme
Giriş
Aspose.Slides, makrolar ve VBA kodlarıyla çalışmak için sınıflar sağlar.
Not
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 taşınmaz).
Bir sunuma makro eklediğinizde veya makrolar içeren bir sunuyu yeniden kaydettiğinizde, Aspose.Slides yalnızca makroların baytlarını yazar.
Aspose.Slides asla bir sunumdaki makroları çalıştırmaz.
VBA Makroları Ekle
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. Sunuma gömülü VBA’yı yönetmek için VbaProject sınıfını kullanabilirsiniz.
- Presentation sınıfının bir örneğini oluşturun.
- Yeni bir VBA projesi eklemek için VbaProject yapılandırıcısını kullanın.
- VbaProject’e bir modül ekleyin.
- Modülün kaynak kodunu ayarlayın.
referansları ekleyin. - Microsoft Office referansları ekleyin.
- Referansları VBA projesiyle ilişkilendirin.
- Sunumu kaydedin.
Bu JavaScript kodu, bir sunuma sıfırdan VBA makrosu eklemenizi gösterir:
// Sunum sınıfının bir örneğini oluşturur
let pres = new aspose.slides.Presentation();
try {
// Yeni bir VBA Projesi oluşturur
pres.setVbaProject(new aspose.slides.VbaProject());
// VBA projesine boş bir modül ekler
let module = pres.getVbaProject().getModules().addEmptyModule("Module");
// Modülün kaynak kodunu ayarlar
module.setSourceCode("Sub Test(oShape As Shape)MsgBox Test End Sub");
// <stdole> için bir referans oluşturur
let stdoleReference = new aspose.slides.VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");
// Office için bir referans oluşturur
let officeReference = new aspose.slides.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", aspose.slides.SaveFormat.Pptm);
} finally {
if (pres != null) {
pres.dispose();
}
}
VBA Makroları Kaldır
Presentation sınıfının altındaki VbaProject özelliğini kullanarak bir VBA makrosunu kaldırabilirsiniz.
- Makro içeren sunumu yüklemek için Presentation sınıfının bir örneğini oluşturun.
- Makro modülüne erişin ve onu kaldırın.
- Değiştirilen sunumu kaydedin.
Bu JavaScript kodu, bir VBA makrosunu nasıl kaldıracağınızı gösterir:
// Makroyu içeren sunumu yükler
let pres = new aspose.slides.Presentation("VBA.pptm");
try {
// Vba modülüne erişir ve kaldırır
pres.getVbaProject().getModules().remove(pres.getVbaProject().getModules().get_Item(0));
// Sunumu kaydeder
pres.save("test.pptm", aspose.slides.SaveFormat.Pptm);
} finally {
if (pres != null) {
pres.dispose();
}
}
VBA Makroları Çıkar
- Makro içeren sunumu yüklemek için Presentation sınıfının bir örneğini oluşturun.
- Sunumun bir VBA Projesi içerip içermediğini kontrol edin.
- VBA Projesinde bulunan tüm modülleri döngüye alarak makroları görüntüleyin.
Bu JavaScript kodu, makrolar içeren bir sunumdan VBA makrolarını nasıl çıkaracağınızı gösterir:
// Makroyu içeren sunumu yükler
let pres = new aspose.slides.Presentation("VBA.pptm");
try {
// Sunumun bir VBA Projesi içerip içermediğini kontrol eder
if (pres.getVbaProject() != null) {
for (let i = 0; i < pres.getVbaProject().getModules().size(); i++) {
let module = pres.getVbaProject().getModules().get_Item(i);
console.log(module.getName());
console.log(module.getSourceCode());
}
}
} finally {
if (pres != null) {
pres.dispose();
}
}
Bir VBA Projesinin Parola Koruması Olup Olmadığını Kontrol Et
VbaProject.isPasswordProtected metodunu kullanarak bir projenin özelliklerinin parola korumalı olup olmadığını belirleyebilirsiniz.
- Makro içeren bir sunumu yüklemek için Presentation sınıfının bir örneğini oluşturun.
- Sunumun bir VBA projesi içerip içermediğini kontrol edin.
- VBA projesinin parola korumalı olup olmadığını kontrol ederek özelliklerini görüntüleyin.
let presentation = new aspose.slides.Presentation("VBA.pptm");
try {
if (presentation.getVbaProject() != null) { // Sunumun bir VBA projesi içerip içermediğini kontrol eder.
if (presentation.getVbaProject().isPasswordProtected()) {
console.log("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 verileri yenilemek için çalıştırabilir mi?
Hayır. Kütüphane VBA kodunu asla çalıştırmaz; yürütme yalnızca uygun güvenlik ayarlarıyla PowerPoint içinde mümkündür.
VBA koduna bağlı ActiveX denetimlerini kullanmak destekleniyor mu?
Evet, mevcut ActiveX controls üzerine erişebilir, özelliklerini değiştirebilir ve kaldırabilirsiniz. Bu, makroların ActiveX ile etkileşime girdiği durumlarda faydalıdır.