VBA Projelerini .NET’te Sunumlarda Yönetme
Giriş
The Aspose.Slides.Vba ad alanı, makrolar ve VBA kodlarıyla çalışmak için sınıfları ve arabirimleri içerir.
Note
When you convert a presentation containing macros to a different file format (PDF, HTML, etc.), Aspose.Slides ignores all macros (macros are not carried into the resulting file).
When you add macros to a presentation or resave a presentation containing macros, Aspose.Slides simply writes the bytes for the macros.
Aspose.Slides never runs the macros in a presentation.
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. Sunum içinde gömülü VBA’yı yönetmek için IVbaProject arabirimini kullanabilirsiniz.
- Bir Presentation sınıfının bir örneğini oluşturun.
- VbaProject yapıcısını kullanarak yeni bir VBA projesi ekleyin.
- VbaProject’e bir modül ekleyin.
- Modülün kaynak kodunu ayarlayın.
başvurularını ekleyin. - Microsoft Office başvurularını ekleyin.
- Başvuruları VBA projesi ile ilişkilendirin.
- Sunumu kaydedin.
// Sunum sınıfının bir örneğini oluşturur
using (Presentation presentation = new Presentation())
{
// Yeni bir VBA Projesi oluşturur
presentation.VbaProject = new VbaProject();
// VBA projesine boş bir modül ekler
IVbaModule module = presentation.VbaProject.Modules.AddEmptyModule("Module");
// Modülün kaynak kodunu ayarlar
module.SourceCode = @"Sub Test(oShape As Shape) MsgBox ""Test"" End Sub";
// <stdole> için bir 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 için bir 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
presentation.VbaProject.References.Add(stdoleReference);
presentation.VbaProject.References.Add(officeReference);
// Sunumu kaydeder
presentation.Save(dataDir + "AddVBAMacros_out.pptm", SaveFormat.Pptm);
}
VBA Makrolarını Kaldır
Presentation sınıfı altındaki VbaProject özelliğini kullanarak bir VBA makrosunu kaldırabilirsiniz.
- Makroyu içeren sunumu yükleyerek bir Presentation sınıfının örneğini oluşturun.
- Macro modülüne erişin ve kaldırın.
- Değiştirilmiş sunumu kaydedin.
// Makroyu içeren sunumu yükler
using (Presentation presentation = new Presentation(dataDir + "VBA.pptm"))
{
// Vba modülüne erişir ve kaldırır
presentation.VbaProject.Modules.Remove(presentation.VbaProject.Modules[0]);
// Sunumu kaydeder
presentation.Save(dataDir + "RemovedVBAMacros_out.pptm", SaveFormat.Pptm);
}
VBA Makrolarını Çıkar
- Makroyu içeren sunumu yükleyerek bir Presentation sınıfının örneğini oluşturun.
- Sunumun bir VBA Projesi içerip içermediğini kontrol edin.
- VBA Projesinde bulunan tüm modülleri döngüyle gezerek makroları görüntüleyin.
// Makroyu içeren sunumu yükler
using (Presentation pres = new Presentation("VBA.pptm"))
{
if (pres.VbaProject != null) // Sunumun bir VBA Projesi içerip içermediğini kontrol eder
{
foreach (IVbaModule module in pres.VbaProject.Modules)
{
Console.WriteLine(module.Name);
Console.WriteLine(module.SourceCode);
}
}
}
Bir VBA Projesinin Şifre Koruması Olup Olmadığını Kontrol Et
IVbaProject.IsPasswordProtected özelliğini kullanarak bir projenin özelliklerinin şifre korumalı olup olmadığını belirleyebilirsiniz.
- Makro içeren bir sunumu yükleyerek bir Presentation sınıfının örneğini oluşturun.
- Sunumun bir VBA projesi içerip içermediğini kontrol edin.
- VBA projesinin şifre korumalı olup olmadığını kontrol ederek özelliklerini görüntüleyin.
using (Presentation presentation = new Presentation("VBA.pptm"))
{
if (presentation.VbaProject != null) // Sunumun bir VBA projesi içerip içermediğini kontrol eder.
{
if (presentation.VbaProject.IsPasswordProtected)
{
Console.WriteLine($"The VBA Project '{presentation.VbaProject.Name}' is protected by password to view project properties.");
}
}
}
SSS
Sunumu PPTX olarak kaydedersem makrolar ne olur?
Makrolar PPTX VBA’yı desteklemediği için kaldırılacaktır. Makroları korumak için PPTM, PPSM veya POTM formatını seçin.
Aspose.Slides bir sunum içinde 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 uygun güvenlik ayarlarına sahip PowerPoint içinde mümkündür.
VBA koduna bağlı ActiveX denetimlerini kullanmak destekleniyor mu?
Evet, mevcut ActiveX kontrollerine erişebilir, özelliklerini değiştirebilir ve kaldırabilirsiniz. Bu, makroların ActiveX ile etkileşime girdiği durumlarda faydalıdır.