मैक्रोज़ पावरपॉइंट स्टार्टअप पर लोड नहीं करता है


0

स्लाइड शो शुरू होने पर मैंने बैच फ़ाइल चलाने के लिए एक पावरपॉइंट मैक्रोज़ बनाया है। यह मेरा कोड है

Sub OnSlideShowPageChange(ByVal SSW As SlideShowWindow)
    If SSW.View.CurrentShowPosition = _
        SSW.Presentation.SlideShowSettings.StartingSlide Then
    Dim argh As Double
    argh = Shell("D:\test.bat", vbNormalFocus)
    End If
End Sub

मेरी समस्या यह है कि मैं पावर पॉइंट को बंद करने और खोलने के बाद बैच फ़ाइल को नहीं चलाता। Alt + F11 दबाने के बाद स्लाइड को खोलने और फिर पावर पॉइंट पर वापस आने के बाद स्लाइड शो को लोड करते हुए मैक्रो बैच फ़ाइल चलाता है। मैं मैक्रो को स्टार्टअप पर पावर प्वाइंट पर लोड करना चाहता हूं। कोई विचार जहाँ मैंने गलती की है?

जवाबों:


1

मैंने बहुत सारे VBA किए हैं, लेकिन PowerPoint के साथ नहीं, इसलिए मेरे पास पूर्ण उत्तर नहीं है।

हालाँकि, मैं देख सकता हूँ कि आप स्लाइड परिवर्तन की घटना का पता लगाने की कोशिश कर रहे हैं और फिर कार्रवाई को केवल पहली स्लाइड तक सीमित कर रहे हैं। मुझे संदेह है कि समस्या यह है कि, स्टार्टअप पर, स्लाइड परिवर्तन की घटना में आग नहीं लगती है। इसलिए जब तक आप दूसरी से पहली स्लाइड में पीछे की ओर नहीं जाते, तब तक आप स्लाइड परिवर्तन + पहली स्लाइड का संयोजन नहीं देख सकते। जाहिर है, आप दूसरी स्लाइड में जाकर आसानी से साबित कर सकते हैं और फिर पहले पर लौट सकते हैं।

जिस घटना को आप चाहते हैं उसे SlideShowBegin कहा जाता है ।

अद्यतन: SlideShowBeginकाम पर जाना एक साधारण उप की तुलना में थोड़ा अधिक जटिल है क्योंकि इसे applicationवर्ग को संदर्भित करने की आवश्यकता है । हालाँकि, निम्न काम करता है जैसा आप चाहते हैं।

Sub OnSlideShowPageChange()
    Dim i As Integer
    i = ActivePresentation.SlideShowWindow.View.CurrentShowPosition
    If i <> 1 Then Exit Sub
    ' Insert any code you want activated on slide 1 after here
    MsgBox "This is slide 1"
End Sub

अन्य विधि का उपयोग करने के लिए, आपको सबसे पहले एक सामान्य मॉड्यूल में निम्नलिखित जोड़ना होगा:

विकल्प

Option Explicit
' Class1 is the name of the class module you create
Dim X As New Class1
Sub InitializeApp()
    Set X.App = Application
End Sub

फिर आपको निम्नलिखित के साथ एक क्लास मॉड्यूल (इस उदाहरण में Class1 कहा जाना चाहिए) जोड़ना होगा:

Option Explicit
Public WithEvents App As Application
Private Sub App_SlideShowBegin(ByVal Wn As SlideShowWindow)
    Dim argh As Double
    Debug.Print "Slideshow started"
    argh = Shell("D:\test.bat", vbNormalFocus)
End Sub

स्पष्ट रूप से पहला उदाहरण उपयोग करने के लिए बहुत आसान है!

अद्यतन 2:

मैंने कहा कि मैं पीपी में VBA का उपयोग नहीं किया! मुझे पता चला है कि पीपी के पास VBA के लिए एक ऑटोस्टार्ट क्षमता नहीं है जब तक कि आप अपने कोड को ऐडिन से एक्सेस नहीं करते हैं। काम करने के लिए चीजों को प्राप्त करने का सबसे आसान तरीका यह है कि वास्तव में स्लाइड-शो शुरू करने के लिए एक लाइन को शामिल करने के लिए अपने कोड (साधारण मॉड्यूल में क्लास मॉड्यूल नहीं) को बदलें।

फिर डेवलपर टूलबार से उस मैक्रो को कॉल करें (या उस पर मैक्रो के साथ अपना टूलबार बनाएं) ताकि वह स्लाइड शो शुरू करे और आपके कोड को कॉल करे।


आपके संकेत @JulianKnight के लिए धन्यवाद। मैं इस पावर प्वाइंट VBA में नया हूं। मैंने आपके द्वारा बताए गए लिंक से वाक्य रचना की कोशिश की और नीचे दिए गए कोडिंग को संशोधित किया: Private Sub App_SlideShowBegin(ByVal Wn As SlideShowWindow) With Wn Dim argh As Double argh = Shell("D:\test.bat", vbNormalFocus) End With End Subलेकिन जब मैं स्लाइड शो शुरू करता हूं तो कुछ भी नहीं होता है
ड्रैगनबॉर्न

कोई बात नहीं, मेरा अपडेट देखिए। SlideShowBegin का उपयोग करने के लिए, आपको एक वर्ग बनाना होगा और इसे संदर्भित करना होगा। ऐसा इसलिए है क्योंकि यह एक एप्लिकेशन स्तर की घटना है।
जूलियन नाइट

मैं आपके समर्थन @Julian के लिए धन्यवाद देता हूं। मैं अभी भी समस्या का सामना कर रहा हूं। पहले विकल्प में एक ही मुद्दा है। ओपन पावर पॉइंट और स्टार्ट स्लाइड शो को बंद करने के बाद, मैक्रो नहीं चलता है। लेकिन पॉवर पॉइंट को खोलने के बाद, फिर VBA विंडो से Alt + F11 को दबाकर स्विच करना और दो बार मैक्रो ठीक काम करता है। दूसरा विकल्प मैंने निर्देश के रूप में मैक्रो को बनाया है लेकिन कुछ भी नहीं होता है। ईवेंट लोड नहीं हो रहा है।
ड्रैगनबॉर्न

पहली स्लाइड में एक ActiveX नियंत्रण जोड़ने का प्रयास करें .. एक पाठ बॉक्स या जो भी हो। स्लाइड से इसे खींचें ताकि स्लाइड शो चलने पर यह दर्शक को दिखाई न दे। यह ध्वनि के रूप में असंभव के रूप में, यह एक बग को ठीक करता है जो OnSlideShowPageChange को आग नहीं दे सकता है।
स्टीव रिंड्सबर्ग

@SteveRindsberg क्या मुझे इस ActiveX नियंत्रण के लिए कोई कोड लिखना है या इसे वैसा ही छोड़ना है?
ड्रैगनबॉर्न
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.