Python ile Sunumlarda VBA Projelerini Yönetme
Giriş
Aspose.Slides makrolar ve VBA kodu ile çalışmak için sınıflar ve arabirimler sağlar.
Warning
Makrolar içeren bir sunumu farklı bir dosya biçimine (PDF, HTML vb.) dönüştürdüğünüzde, Aspose.Slides tüm makroları yok sayar (makrolar oluşan dosyaya taşınmaz).
Sunuma makrolar eklediğinizde veya makrolar içeren bir sunumu yeniden kaydettiğinizde, Aspose.Slides makroların baytlarını sadece 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. Sunuma gömülü VBA’yı yönetmek için VbaProject sınıfını kullanabilirsiniz.
- İlk olarak Presentation sınıfının bir örneğini oluşturun.
- Yeni bir VBA projesi eklemek için VbaProject yapıcısını kullanın.
- VBA projesine bir modül ekleyin.
- Modülün kaynak kodunu ayarlayın.
stdolereferanslarını ekleyin.- Microsoft Office referanslarını ekleyin.
- Referansları VBA projesiyle ilişkilendirin.
- Sunumu kaydedin.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, VbaProject, VbaReferenceOleTypeLib
presentation = Presentation()
try:
# Yeni bir VBA projesi oluştur.
vba_project = VbaProject()
presentation.setVbaProject(vba_project)
# Boş bir modül ekle ve kaynak kodunu ayarla.
module = vba_project.getModules().addEmptyModule("Module")
module.setSourceCode('Sub Test(oShape As Shape)\n MsgBox "Test"\nEnd Sub')
# stdole ve Microsoft Office referanslarını oluştur.
stdole_reference = VbaReferenceOleTypeLib("stdole", r"*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\Windows\system32\stdole2.tlb#OLE Automation")
office_reference = VbaReferenceOleTypeLib("Office", r"*\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ı ekle.
vba_project.getReferences().add(stdole_reference)
vba_project.getReferences().add(office_reference)
# Sunumu kaydet.
presentation.save("test.pptm", SaveFormat.Pptm)
finally:
presentation.dispose()
Note
Aspose Macro Remover uygulamasına göz atmak isteyebilirsiniz; bu, PowerPoint, Excel ve Word belgelerindeki makroları kaldırmak için kullanılan ücretsiz bir web uygulamasıdır.VBA Makrolarını Kaldırma
Presentation sınıfının getVbaProject metodunu kullanarak bir VBA makrosunu kaldırabilirsiniz.
- Presentation sınıfının bir örneğini oluşturun ve makroyu içeren sunumu yükleyin.
- Makro modülüne erişin ve onu kaldırın.
- Değiştirilen sunumu kaydedin.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
# Makroyu içeren sunumu yükle.
presentation = Presentation("VBA.pptm")
try:
# VBA modülüne eriş ve onu kaldır.
vba_project = presentation.getVbaProject()
if vba_project is not None and len(list(vba_project.getModules())) > 0:
module = vba_project.getModules().get_Item(0)
vba_project.getModules().remove(module)
# Sunumu kaydet.
presentation.save("test.pptm", SaveFormat.Pptm)
finally:
presentation.dispose()
VBA Makrolarını Çıkarma
- Presentation sınıfının bir örneğini oluşturun ve makroyu içeren sunumu yükleyin.
- Sunumun bir VBA Projesi içerip içermediğini kontrol edin.
- Makroları görüntülemek için VBA Projesi içindeki tüm modülleri döngüyle gezinin.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
# Makroyu içeren sunumu yükle.
presentation = Presentation("VBA.pptm")
try:
# Sunumun bir VBA projesi içerip içermediğini kontrol et.
vba_project = presentation.getVbaProject()
if vba_project is not None:
for module in vba_project.getModules():
print(module.getName())
print(module.getSourceCode())
finally:
presentation.dispose()
VBA Projesinin Parola Koruması Olup Olmadığını Kontrol Etme
VbaProject.isPasswordProtected metodunu kullanarak bir projenin özelliklerinin parola korumalı olup olmadığını belirleyebilirsiniz.
- Presentation sınıfının bir örneğini oluşturun ve bir makro içeren sunumu yükleyin.
- Sunumun bir VBA projesi içerip içermediğini kontrol edin.
- VBA projesinin özelliklerini görüntülemek için parola korumalı olup olmadığını kontrol edin.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation("VBA.pptm")
try:
# Sunumun bir VBA projesi içerip içermediğini kontrol et.
vba_project = presentation.getVbaProject()
if vba_project is not None:
if vba_project.isPasswordProtected():
print(f"The VBA project '{vba_project.getName()}' is password-protected for viewing its properties.")
finally:
presentation.dispose()
SSS
Sunumu PPTX olarak kaydedersem makrolar ne olur?
PPTX VBA’yı desteklemediği için makrolar kaldırılacaktır. Makroları korumak istiyorsanız PPTM, PPSM veya POTM formatlarını seçin.
Aspose.Slides bir sunumdaki makroları çalıştırabilir mi, örneğin verileri yenilemek gibi?
Hayır. Kütüphane VBA kodunu asla çalıştırmaz; yürütme yalnızca uygun güvenlik ayarlarına sahip PowerPoint içinde mümkündür.
VBA koduna bağlanan ActiveX denetimleriyle çalışmak destekleniyor mu?
Evet, mevcut ActiveX denetimlerine, erişebilir, özelliklerini değiştirebilir ve kaldırabilirsiniz. Bu, makroların ActiveX ile etkileşime girdiği durumlarda yararlıdır.