استخراج رمز VBA المرتبط بماكرو متصل بزر إجراء في PowerPoint
-
04-10-2019 - |
سؤال
لديّ حوالي 25 عرضًا تقديميًا ، ولكل منها 45 شريحة على الأقل. في كل شريحة ، يوجد سؤال يحتوي على أربع إجابات محتملة وزر مساعدة يوفر تلميحًا ذا صلة بالسؤال. كل من الإجابات وزر المساعدة هو زر عمل PowerPoint الذي يطلق ماكرو.
أحاول ترحيل جميع الأسئلة/الإجابات/التلميحات إلى قاعدة بيانات SQL. لقد عملت مع Office.Interop من قبل عند العمل مع Excel و Word ولدي الكثير من تجربة SQL DB ، لذلك لا أتوقع أي مشكلات في استخراج جزء النص فعليًا من السؤال والإجابة ووضعه في DB.
ما ليس لدي أي فكرة عن كيفية القيام به هو إعطاء كائن على شريحة -> احصل على معلومات زر الإجراء -> احصل على اسم الماكرو -> وأخيراً احصل على رمز VB الخاص بالماكرو. من هناك يمكنني معرفة كيفية تحليل ما هو الإجابة الصحيحة وما هو نص التلميح.
أي مساعدة/أفكار سيكون موضع تقدير كبير.
المحلول
للحصول على اسم العناصر الخاصة بك ، قم بتشغيل إعدادات الماكرو ، ستقوم بتشغيل شيء من هذا القبيل:
Sub ActionSettingName()
Dim p As Presentation
Set p = ActivePresentation
Dim s As Slide
Dim sh As Shape
Dim macroName As String
For Each s In p.Slides
For Each sh In s.Shapes
If sh.Type = msoGroup Then
Dim gs As Shape
For Each gs In sh.GroupItems
PrintMacroName gs
Next
Else
PrintMacroName sh
End If
Next
Next
End Sub
Sub PrintMacroName(sh As Shape)
If sh.ActionSettings(ppMouseClick).Action = ppActionRunMacro Then
macroName = sh.ActionSettings(ppMouseClick).Run
Debug.Print macroName
End If
End Sub
تحديث: للحصول على عمليات الإجراءات لـ Textranges ، يرجى العثور على أدناه:
Sub ActionSettingName()
Dim p As Presentation
Set p = ActivePresentation
Dim s As Slide
Dim sh As Shape
For Each s In p.Slides
For Each sh In s.Shapes
Dim tr As TextRange
Set tr = sh.TextFrame.TextRange
Dim macroName As String
For i = 1 To tr.Runs.Count
macroName = tr.Runs(i).ActionSettings(ppMouseClick).Run
If Len(macroName) > 0 Then
Dim runText As String
runText = tr.Runs(i).Text
Debug.Print "RUN: " & runText & vbCrLf & "MACRO: " & macroName
End If
Next
Next
Next
End Sub
بعد ذلك ، ستحتاج إلى البحث عن هذا الماكرو واستخراجه (وأي شيء آخر تحتاجه) من VBE داخل الحلقة الأخيرة لـ/Next.
هناك بعض المراجع على ذلك حول كيفية استخراج جميع وحدات الماكرو في Excel/Word والعمل مع نموذج VBProject - تقنيات متطابقة مع PowerPoint. نرى استخراج برمجيا رمز الماكرو (VBA) من مستندات Word 2007 لأحد أفضل الأمثلة. يوجد مقدمة أكثر شمولاً لنموذج كائن VBProject في برمجة محرر VBA.