VBA Projeleri

VBA Projeleri

VBA Projeleri

Bu kılavuz, Aspose.Words FOSS for .NET kullanarak makro-etkin bir belgede gömülü VBA projesini nasıl inceleyeceğinizi ve değiştireceğinizi gösterir. Aspose.Words FOSS for .NET, (.docm) içinde gömülü VBA projesini — modüllerini, kaynak kodunu ve kütüphane referanslarını — Document.VbaProject ve VbaProject/VbaModule nesne modeli aracılığıyla inceleyebilir ve değiştirebilir. Bu, proje inceleme ve düzenlemedir, makro çalıştırma değildir: Aspose.Words, ticari üründe ya da bu FOSS sürümünde VBA çalışma zamanı içermemiştir, bu yüzden VBA kodu veri olarak okunur ve değiştirilir, çalıştırılmaz.


Bir Belgenin VBA Projesine Erişim

Document.VbaProject, belge bir VBA projesine sahip değilse null döndürür; aksi takdirde bir VbaProject döndürür. Document.HasMacros, önce VbaProject‘e erişmenize gerek kalmadan bir VBA projesinin mevcut olup olmadığını bildirir. VbaProject.Name, CodePage, IsSigned ve IsProtected projenin kendisini tanımlar.


Modülleri Okuma ve Düzenleme

VbaProject.Modules, bir VbaModuleCollection döndürür. Belirli bir modülü (ör. modules["ModuleName"]) bulmak için adına göre indeksleyebilir veya tüm koleksiyonu enumerate edebilirsiniz. Her VbaModule, kendi Name, Type (bir VbaModuleType: DocumentModule, ProceduralModule, ClassModule veya DesignerModule) ve — kritik olarak — yazılabilir bir dize özelliği olarak SourceCode sunar, böylece modül kaynağı programlı olarak okunup yeniden yazılabilir. VbaModuleCollection.Add(vbaModule) ve Remove(module), projeye modül ekler veya kaldırır.


Kütüphane Referansları

VbaProject.References, makro kodunun bağımlı olduğu Automation tip kitaplıkları ve diğer VBA projeleri olmak üzere VbaReference nesnelerinin bir VbaReferenceCollection döndürür. VbaReference.Type, bir VbaReferenceType (Registered, Project, Original veya Control) bildirir ve LibId, başvurulan kütüphaneyi tanımlar. VbaReferenceCollection.Remove(item) / RemoveAt(index) referansları kaldırır.


VBA Projesini Kaldırma

Document.RemoveMacros(), bir belgede VBA projesini tamamen kaldırır — orijinalde makrolarla gelen belgenin makro içermeyen bir kopyasını üretmek için faydalıdır.


İpuçları ve En İyi Uygulamalar

  • Makroları hiç içermeyen belgelerde null işleme oluşmasını önlemek için Document.VbaProject ile etkileşime geçmeden önce Document.HasMacros‘ı kontrol edin.
  • VbaModule.SourceCode‘ı düz metin olarak ele alın — VBA çalışma zamanı olmadığı için düzenlemek kodu doğrulamaz; hatalı VBA hâlâ dönüşüm yapabilir, ancak düzeltilene kadar Word’de doğru çalışmaz.
  • Modüllerini değiştirmeye çalışmadan önce imzalı veya korumalı projeleri tespit etmek için VbaProject.IsSigned/IsProtected‘ı kullanın.
  • Document.RemoveMacros(), her modülü manuel olarak temizlemek yerine “temiz” bir dağıtım kopyası için makroları kaldırmanın en basit yoludur.

Genel Sorunlar

SorunNedenDüzeltme
Document.VbaProject ‘dır’ nullBelgenin VBA projesi yokDocument.HasMacros‘ı önce kontrol edin, VbaProject üyelerine erişmeden önce
Makroların SourceCode düzenlendikten sonra çalışmasını bekliyorumAspose.Words’ın VBA yürütme motoru yokBu API öğesini yalnızca makro kaynağını ve yapısını okumak/değiştirmek için kullanın; ortaya çıkan belgeyi VBA çalışma zamanına sahip bir ortamda, örneğin Microsoft Word’de çalıştırarak kodu yürütün.
VbaModuleCollection‘ı isimle indekslemek hiçbir şey döndürmez.Modül adı uyuşmazlığı (büyük/küçük harf veya tam yazım).Tam modül adını onaylamak için VbaProject.Modules‘ı listeleyin.

FAQ

Aspose.Words FOSS for .NET bir belgede VBA makrolarını çalıştırabilir mi?

Hayır. Bu sürüm de ticari Aspose.Words ürünü de bir VBA yürütme motoru içermez — VBA projeleri veri olarak (modül kaynağı, referanslar, proje meta verileri) okunur ve değiştirilir, asla çalıştırılmaz.

Bir makronun kaynak kodunu nasıl okuyabilirim?

Modülü, VbaProject.Modules‘ı adla indeksleyerek (örn. modules["ModuleName"]) alın, ardından SourceCode özelliğini okuyun.

Yeni bir VBA modülünü belgeye ekleyebilir miyim?

Evet — bir VbaModule oluşturun ve Add(vbaModule) aracılığıyla projenin VbaModuleCollection öğesine ekleyin.

Bir belgeyi işlemeye başlamadan önce makroları olup olmadığını nasıl kontrol ederim?

Okuyun Document.HasMacros; belge bir VBA projesi taşıyorsa true olur, Document.VbaProject‘ye önce erişmenize gerek kalmadan.

Bir belgeden tüm makroları nasıl kaldırırım?

Çağırın Document.RemoveMacros().


API Reference Özet

Sınıf / MetodAçıklama
Document.VbaProjectBelgenin VbaProject‘ı, ya da makroları yoksa null.
Document.HasMacrosVBA projesinin mevcut olup olmadığı
VbaProjectName, Modules, References, CodePage, IsSigned, IsProtected
VbaModuleBir modül: Name, Type (VbaModuleType), yazılabilir SourceCode
VbaModuleCollectionAdd(), ada göre indeksleyici, Remove(), Count
VbaReference / VbaReferenceCollectionReferans verilen tip kütüphaneleri: Type (VbaReferenceType), LibId
Document.RemoveMacros()Belgeden VBA projesini kaldırır

Ayrıca Bakınız

 Türkçe