עבודה עם VBA פקודות מאקרו
Visual Basic עבור יישומים (VBA) עבור Microsoft Word היא שפת תכנות פשוטה אך חזקה שניתן להשתמש בה כדי להרחיב את הפונקציונליות. Aspose.Words API מספק שלוש כיתות כדי לקבל גישה לקוד המקור של הפרויקט VBA:
- הכיתה VBAProject מספקת גישה למידע על הפרויקט VBA
- הכיתה VBAModulesCollection מחזירה את האוסף של מודולים של פרויקט VBA
- הכיתה VbaModule מספקת גישה למודול הפרויקט VBA
צור פרויקט VBA
Aspose.Words API מספק Document.VbaProject
נכס לקבל או להגדיר VbaProject במסמך.
דוגמת הקוד הבאה מדגימה כיצד ליצור מודול VBA פרויקט ו VBA יחד עם מאפיינים בסיסיים, למשל שם וסוג:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(); | |
// Create a new VBA project. | |
System::SharedPtr<VbaProject> project = System::MakeObject<VbaProject>(); | |
project->set_Name(u"AsposeProject"); | |
doc->set_VbaProject(project); | |
// Create a new module and specify a macro source code. | |
System::SharedPtr<VbaModule> vbModule = System::MakeObject<VbaModule>(); | |
vbModule->set_Name(u"AsposeModule"); | |
vbModule->set_Type(VbaModuleType::ProceduralModule); | |
vbModule->set_SourceCode(u"New source code"); | |
// Add module to the VBA project. | |
doc->get_VbaProject()->get_Modules()->Add(vbModule); | |
doc->Save(outputDataDir + u"WorkingWithVbaMacros.CreateVbaMacros.docm"); |
קרא פקודות מאקרו
Aspose.Words גם מספק למשתמשים את היכולת לקרוא VBA פקודות מאקרו.
דוגמת הקוד הבאה מראה כיצד לקרוא VBA פקודות מאקרו מהמסמך:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"VbaProject.docm"); | |
if (doc->get_VbaProject() != nullptr) | |
{ | |
for (System::SharedPtr<VbaModule> module : System::IterateOver(doc->get_VbaProject()->get_Modules())) | |
{ | |
std::cout << module->get_SourceCode().ToUtf8String() << std::endl; | |
} | |
} |
כתוב או שנה פקודות מאקרו
באמצעות Aspose.Words, משתמשים יכולים לשנות VBA פקודות מאקרו.
דוגמת הקוד הבאה מראה כיצד לשנות VBA פקודות מאקרו באמצעות המאפיין SourceCode:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"VbaProject.docm"); | |
System::SharedPtr<VbaProject> project = doc->get_VbaProject(); | |
System::String newSourceCode = u"Test change source code"; | |
// Choose a module, and set a new source code. | |
project->get_Modules()->idx_get(0)->set_SourceCode(newSourceCode); |
שיבוט VBA פרויקט
עם Aspose.Words אפשר גם לשכפל VBA פרויקטים.
דוגמת הקוד הבאה מראה כיצד לשכפל את הפרויקט VBA באמצעות המאפיין Clone שיוצר עותק של הפרויקט הקיים:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"VbaProject.docm"); | |
System::SharedPtr<VbaProject> project = doc->get_VbaProject(); | |
System::SharedPtr<Document> destDoc = System::MakeObject<Document>(); | |
// Clone the whole project. | |
destDoc->set_VbaProject(doc->get_VbaProject()->Clone()); | |
destDoc->Save(outputDataDir + u"WorkingWithVbaMacros.CloneVbaProject.docm"); |
מודול שיבוט VBA
ניתן גם לשכפל VBA מודולים במידת הצורך.
דוגמת הקוד הבאה מראה כיצד לשכפל את מודול VBA באמצעות המאפיין Clone שיוצר עותק של הפרויקט הקיים:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"VbaProject.docm"); | |
System::SharedPtr<VbaProject> project = doc->get_VbaProject(); | |
System::SharedPtr<Document> destDoc = System::MakeObject<Document>(); | |
destDoc->set_VbaProject(System::MakeObject<VbaProject>()); | |
// Clone a single module. | |
System::SharedPtr<VbaModule> copyModule = doc->get_VbaProject()->get_Modules()->idx_get(u"AsposeModule")->Clone(); | |
destDoc->get_VbaProject()->get_Modules()->Add(copyModule); | |
destDoc->Save(outputDataDir + u"WorkingWithVbaMacros.CloneVbaModule.docm"); |