פרויקטי VBA

פרויקטי VBA

פרויקטי VBA

מדריך זה מראה איך לבדוק ולשנות את פרויקט ה-VBA המשולב במסמך המאפשר מאקרו עם Aspose.Words FOSS עבור .NET. Aspose.Words FOSS עבור .NET יכול לבדוק ולשנות את פרויקט ה-VBA המשולב במסמך המאפשר מאקרו (.docm) — המודולים שלו, קוד המקור והפניות לספריות — דרך Document.VbaProject ו-מודל האובייקטים VbaProject/VbaModule. זהו בדיקה ועריכה של הפרויקט, ולא הרצת מאקרו: Aspose.Words מעולם לא כללה זמן ריצה של VBA, במוצר המסחרי או במהדורה ה-FOSS הזו, ולכן קוד VBA נקרא ומשתנה כנתונים, ולא מורץ.


גישה לפרויקט ה-VBA של מסמך

Document.VbaProject מחזיר VbaProject, או null אם למסמך אין פרויקט VBA. Document.HasMacros מדווח אם קיים פרויקט VBA מבלי שתצטרך לגשת ל-VbaProject תחילה. VbaProject.Name, CodePage, IsSigned ו-IsProtected מתארים את הפרויקט עצמו.


קריאה ועריכת מודולים

VbaProject.Modules מחזיר VbaModuleCollection. ניתן לאנדקס אותו לפי שם כדי למצוא מודול ספציפי (למשל modules["ModuleName"]), או למנות את כל האוסף. כל VbaModule חושף את Name, Type (‏VbaModuleType: DocumentModule, ProceduralModule, ClassModule, או DesignerModule), ו—חשוב—את SourceCode שלו כמאפיין מחרוזת שניתן לכתוב, כך שניתן לקרוא ולכתוב את קוד המקור של המודול באופן תכנותי. VbaModuleCollection.Add(vbaModule) ו-Remove(module) מוסיפים או מסירים מודולים מהפרויקט.


הפניות לספריות

VbaProject.References מחזיר VbaReferenceCollection של VbaReference אובייקטים — ספריות סוג Automation ופרויקטים אחרים של VBA שהקוד המקרו תלוי בהם. VbaReference.Type מדווח על VbaReferenceType (Registered, Project, Original או Control), ו-LibId מזהה את הספרייה שהופנתה אליה. VbaReferenceCollection.Remove(item) / RemoveAt(index) מסירים הפניות.


הסרת פרויקט VBA

Document.RemoveMacros() מסיר את פרויקט ה-VBA ממסמך לחלוטין — שימושי ליצירת עותק ללא מאקרו של מסמך שהגיע במקור עם מאקרו.


טיפים ושיטות עבודה מומלצות

  • בדוק את Document.HasMacros לפני שאתה נוגש ב-Document.VbaProject כדי למנוע טיפול בערכי null במסמכים שמעולם לא היו בהם מאקרו.
  • התייחס ל-VbaModule.SourceCode כטקסט רגיל — מכיוון שאין סביבת ריצה של VBA, עריכה שלו אינה מאמתת את הקוד; VBA פגום עדיין יעבור בתהליך, אך לא ירוץ כראוי ב-Word עד לתיקון.
  • השתמש ב-VbaProject.IsSigned/IsProtected כדי לאתר פרויקטים חתומים או מוגנים לפני שניסיון לשנות את המודולים שלהם.
  • Document.RemoveMacros() היא הדרך הפשוטה ביותר להסיר מאקרוים עבור עותק הפצה “נקי”, במקום לנקות ידנית כל מודול.

בעיות נפוצות

בעיהסיבהתיקון
Document.VbaProject הוא nullלמסמך אין פרויקט VBAבדוק תחילה את Document.HasMacros לפני גישה לחברי VbaProject
מצופה שהמאקרו יופעלו לאחר עריכת SourceCodeל Aspose.Words אין מנוע הרצת VBAהשתמש ב API זה כדי לקרוא/לשנות רק את מקור המקרו והמבנה; הפעל את המסמך המתקבל בסביבה עם זמן ריצה של VBA, כגון Microsoft Word, כדי לבצע את הקוד
אינדוקס של VbaModuleCollection לפי שם מחזיר כלוםחוסר התאמה בשם המודול (רישיות או האיות המדויק)הצג את VbaProject.Modules כדי לאשר את שם המודול המדויק

FAQ

האם Aspose.Words FOSS עבור .NET יכול להריץ מאקרו VBA במסמך?

לא. גם מהדורה זו וגם המוצר המסחרי Aspose.Words אינם כוללים מנוע הרצת VBA — פרויקטי VBA נקראים ומשתנים כנתונים (מקור מודול, הפניות, מטא-נתוני הפרויקט), אף פעם לא מבוצעים.

איך קוראים לקוד המקור של מאקרו?

קבל את המודול על ידי אינדקס VbaProject.Modules לפי שם (למשל modules["ModuleName"]), ואז קרא את המאפיין SourceCode שלו.

האם אני יכול להוסיף מודול VBA חדש לגמרי למסמך?

כן — צור VbaModule והוסף אותו ל-VbaModuleCollection של הפרויקט דרך Add(vbaModule).

איך אני בודק האם למסמך יש מקרוֹות לפני העיבוד שלו?

קרא Document.HasMacros; זה true אם המסמך מכיל פרויקט VBA, מבלי שתצטרך לגשת ל-Document.VbaProject תחילה.

איך אני מסיר את כל המקרוֹות ממסמך?

קרא ל-Document.RemoveMacros().


API Reference סיכום

מחלקה / שיטהתיאור
Document.VbaProjectהVbaProject של המסמך, או null אם אין בו מקרו
Document.HasMacrosהאם קיים פרויקט VBA
VbaProjectName, Modules, References, CodePage, IsSigned, IsProtected
VbaModuleמודול אחד: Name, Type (VbaModuleType), ניתן לכתיבה SourceCode
VbaModuleCollectionAdd(), מאנדקס לפי שם, Remove(), Count
VbaReference / VbaReferenceCollectionספריות טיפוס שהופנו אליהן: Type (VbaReferenceType), LibId
Document.RemoveMacros()מסיר את פרויקט ה-VBA מהמסמך

ראה גם

 עברית