2013-03-15 104 views
2

我想添加一個計數器到Powerpoint演示文稿。有人向我提到,這可能在VBA中可行。你知道這是否可以在VBA中完成,以及如何?添加一個計數器到Power Point演示文稿

基本上這裏是我想要做的: 顯示一個計數器,代表自從我的演示開始以來租用的汽車數量。例如,在開始時,計數器爲0,每分鐘增加2000(這只是一個例子)。我們可以在每張幻燈片上看到櫃檯,因此在我的演講結束時,人們可以看到(並且我會告訴他們)從開始談話X(大量)開始,汽車已經租用。

我試圖找到在互聯網上的東西,但沒有成功......我希望有人能夠幫助我嗎?

+3

我不確定這是否更適合超級用戶 – 2013-03-15 08:21:52

+0

不確定它是否屬於[su],但它不適合[so](至少不在當前狀態),請參閱[faq]。 – Dukeling 2013-03-15 08:27:53

+0

好吧,我的壞,我認爲這是一個可以問的實際問題。 – user1314776 2013-03-15 08:32:24

回答

0

我給你一些想法。可能他們會很有幫助,即使我沒有提供任何代碼。

  1. 一般來說,你需要有一些像在演示文稿中「定時器」,這將開始你的簡報和計算使用的時間。不幸的是,在PowerPoint中沒有這樣的東西。你可能會使用一些外部解決方案,如C#COM插件,但它非常複雜。

  2. 您可以使用PP應用程序事件,但汽車的值不會每分鐘更改,但您輸入的每個新滑動或任何其他事件觸發(如反向移動等)。這有點複雜,但在我們(StackOverflow用戶)的知識範圍內。

您可以搜索或根據那link詢問我曾經在哪裏找到很多有趣的想法。

我承諾提供解決方案,因此我想這樣做,即使問題已關閉。因此,我通過重新編輯我希望允許的答案來做到這一點。

  1. 我們必須確定在每張幻燈片上放置了「計數值」的「文本框」。將以下代碼添加到Module 1中並運行它。

    Sub Add_CarValue_Text() 
    
    Dim SLD As Slide, SHP As Shape, shCarValue As Shape 
    Dim boCarValue As Boolean 
    
    For Each SLD In ActivePresentation.Slides 
        For Each SHP In SLD.Shapes 
         If SHP.Name = "CarValue" Then 
          boCarValue = True 
          Exit For 
         End If 
        Next 
    
        If Not boCarValue Then 
         Set shCarValue = SLD.Shapes.AddTextbox(msoTextOrientationHorizontal, 0, 0, 150, 50) 
         With shCarValue 
          .Name = "CarValue" 
          .TextFrame.TextRange.Text = "Cars counter: " 
         End With 
    
        End If 
        boCarValue = False 
    Next 
    End Sub 
    
  2. 添加新的類模塊並將代碼放在下面的代碼中。如有必要更改。

    Public WithEvents PPApp As Application 
    
    Private TimerStart As Long 
    Private Const increasePerMinute = 1000 
    
    Private Sub PPApp_SlideShowBegin(ByVal Wn As SlideShowWindow) 
        TimerStart = Int(Timer) 
    End Sub 
    
    Private Sub PPApp_SlideShowNextSlide(ByVal Wn As SlideShowWindow) 
        If Not Wn.View.Slide.Shapes("CarValue") Is Nothing Then 
         Dim Lap As Integer 
         Lap = (Int(Timer) - TimerStart)/10 'change for 60 to change from 10sec to 1 min 
         Wn.View.Slide.Shapes("CarValue").TextFrame.TextRange = "Cars volume: " & Lap * increasePerMinute 
        End If 
    End Sub 
    
  3. 將以下代碼添加到Module2並運行該過程。

    Public tmpPPApp As New AppClass 
    Sub StartUp() 
        Set tmpPPApp.PPApp = PowerPoint.Application 
    End Sub 
    
  4. 開始您的演示文稿。

重要!如果您更改代碼中的任何內容,請再次運行第3步。此外,爲了以防萬一,您需要在午餐前始終運行程序3。

+0

好吧,我會研究這些不同的選項,並看看你給的鏈接。非常感謝。 – user1314776 2013-03-15 09:51:12

+0

如果第二個解決方案足夠了,我的意思是'汽車的價值'只有在從幻燈片移動到幻燈片時纔會改變,我可以嘗試爲您提供代碼。 – 2013-03-15 09:56:04

+0

如果可能的話,這可能是一個很好的選擇,因爲使用計時器看起來相當複雜。謝謝。 – user1314776 2013-03-15 10:08:54

相關問題