您目前已離線,請等候您的網際網路重新連線

如何使用 Visual Basic .NET 2003 處理 Office PowerPoint 2003 事件

Office 2003 支援已結束

Microsoft 於 2014 年 4 月 8 日結束對 Office 2003 的支援。此變更已影響您的軟體更新和安全性選項。 瞭解這對您的意義為何且如何持續受保護。

簡介
本文將告訴您,如何利用以 Microsoft Visual Basic .NET 2003 所開發的 Automation 用戶端來處理 Microsoft Office PowerPoint 2003 事件 。

回到頁首

建構事件處理常式

您可以使用下列其中一種方法利用 Visual Basic .NET 建構事件處理常式。請根據您想要如何建立事件處理常式和事件之間的關聯,選擇一種方法 。
  • 方法 1

    通常,您是使用 Handles 關鍵字搭配 WithEvents 關鍵字來建立事件處理常式。當您利用 WithEvents 關鍵字宣告物件參考變數時,Visual Basic .NET 會自動在執行階段連接到該物件的事件。如果要處理物件的某特定事件, 請在程式碼檢視狀態時,使用 Visual Studio .NET 環境中的 Class 清單與 Method 清單加入相關處理常式 。
  • 方法 2

    Visual Basic .NET 提供另一種處理事件的方式。您可以使用 AddHandler 陳述式與 RemoveHandler 陳述式,這樣就可以動態地開始和動態地停止特定事件的事件處理。

    注意 如果您使用 WithEvents 關鍵字建構事件處理常式,可能會收到 System.Reflection.TargetInvocationException 例外狀況。因此,請使用 AddHandler 事件建構事件處理常式。
回到頁首

建立處理 PowerPoint 事件的 Visual Basic .NET Automation 用戶端

下列幾組步驟將示範如何從利用 Visual Basic .NET 所開發的 Automation 用戶端,以 AddHandler 陳述式處理 PowerPoint 應用程式事件 。

如果要建立 Visual Basic .NET 專案,請依照下列步驟執行:
  1. 啟動 Microsoft Visual Studio .NET 2003。
  2. [檔案] 功能表中,按一下 [新增],再按一下 [專案]
  3. 按一下 [專案類型] 清單中的 [Visual Basic 專案]。在 [範本] 清單中,按一下 [Windows 應用程式]
  4. 將專案命名為 PowerPointEvents,然後按一下 [確定]

    根據預設,會建立名為 Form1 的表單。
如果要加入 Microsoft PowerPoint Object Library 和 Microsoft Graph Object Library 的參考,請依照下列步驟執行:
  1. [專案] 功能表上,按一下 [加入參考]
  2. [COM] 索引標籤上,按一下 [Microsoft PowerPoint 11.0 Object Library],然後按一下 [選取]
  3. [COM] 索引標籤上,按一下 [Microsoft Graph 11.0 Object Library],然後按一下 [選取]
  4. [加入參考] 對話方塊中,按一下 [確定] 以接受您的選取。
  5. 按兩下表單。

    [程式碼] 視窗就會開啟。
  6. 在 Form1.vb 檔案的頂端,加入下列程式碼:
     Imports PowerPoint = Microsoft.Office.Interop.PowerPoint	Imports Office = Microsoft.Office.Core	Imports Graph = Microsoft.Office.Interop.Graph
  7. 按一下 [檢視] 功能表上的 [設計工具]
  8. [檢視] 功能表上,按一下 [工具箱],然後在 Form1 上加入一個按鈕。
  9. 按兩下 [Button1]

    [程式碼] 視窗會在 Button1_Click 事件的地方開啟。
  10. 在 [程式碼] 視窗中,將下列程式碼放在 Button1_Click 事件的前面:
    	Dim oApp As PowerPoint.Application	Dim oPres As PowerPoint.Presentation
  11. 將下列程式碼加入至 Button1_Click 事件:
    	Const sTemplate = "C:\Program Files\Microsoft Office\Templates\Presentation Designs\Orbit.pot"' 如果先前的範本無法使用,將範本名稱改成存在於系統上的範本名稱。Const sVideo = "C:\WINDOWS\system32\oobe\images\intro.wmv"Dim oPresentations As PowerPoint.PresentationsDim oSlides As PowerPoint.SlidesDim oSlide As PowerPoint.SlideDim oShapes As PowerPoint.ShapesDim oShape As PowerPoint.ShapeDim oMovie As PowerPoint.ShapeDim oAnimationSettings As PowerPoint.AnimationSettingsDim oPlaySettings As PowerPoint.PlaySettingsDim oTextFrame As PowerPoint.TextFrameDim oTextRange As PowerPoint.TextRangeDim oFont As PowerPoint.FontDim oOLEFormat As PowerPoint.OLEFormatDim oShadow As PowerPoint.ShadowFormatDim oForeColor As PowerPoint.ColorFormatDim oRange As PowerPoint.SlideRangeDim oSlideShowTransition As PowerPoint.SlideShowTransition'啟動 PowerPoint 然後將 PowerPoint 視窗設為可見但最小化。oApp = New PowerPoint.Application'加入事件處理常式。AddHandler oApp.SlideShowBegin, AddressOf oApp_SlideShowBeginAddHandler oApp.SlideShowNextSlide, AddressOf oApp_SlideShowNextSlideAddHandler oApp.PresentationClose, AddressOf oApp_PresentationCloseoApp.Visible = TrueoApp.WindowState = PowerPoint.PpWindowState.ppWindowMinimized'依據指定的範本建立新的簡報。oPresentations = oApp.PresentationsoPres = oPresentations.Open(sTemplate, , , True)'建立第 1 張投影片。'將文字加入至投影片、變更字型,然後在第 1 張投影片上'插入或放置影片。oSlides = oPres.SlidesoSlide = oSlides.Add(1, PowerPoint.PpSlideLayout.ppLayoutTitleOnly)oShapes = oSlide.ShapesoShape = oShapes.Item(1)oTextFrame = oShape.TextFrameoTextRange = oTextFrame.TextRangeoTextRange.Text = "My sample presentation"oFont = oTextRange.FontoFont.Name = "Comic Sans MS"oFont.Size = 48oMovie = oShapes.AddMediaObject(sVideo, 150, 150, 500, 350)oAnimationSettings = oMovie.AnimationSettingsoPlaySettings = oAnimationSettings.PlaySettingsoPlaySettings.PlayOnEntry = TrueoPlaySettings.HideWhileNotPlaying = True''NAR 以釋放參考。NAR(oPlaySettings)NAR(oAnimationSettings)NAR(oMovie)NAR(oFont)NAR(oTextRange)NAR(oTextFrame)NAR(oShape)NAR(oShapes)NAR(oSlide)NAR(oSlides)'建立第 2 張投影片。'在投影片標題中加入文字,然後設定文字的格式。此外,在投影片中加入圖表,'然後將圖表類型改成立體直條圖群組。oSlides = oPres.SlidesoSlide = oSlides.Add(2, PowerPoint.PpSlideLayout.ppLayoutTitleOnly)oShapes = oSlide.ShapesoShape = oShapes.Item(1)oTextFrame = oShape.TextFrameoTextRange = oTextFrame.TextRangeoTextRange.Text = "My chart"oFont = oTextRange.FontoFont.Name = "Comic Sans MS"oFont.Size = 48Dim oChart As Graph.ChartoShape = oShapes.AddOLEObject(150, 150, 480, 320, "MSGraph.Chart.8")oOLEFormat = oShape.OLEFormatoChart = oOLEFormat.ObjectoChart.ChartType = Graph.XlChartType.xl3DColumnClustered''NAR 以釋放參考。NAR(oChart)NAR(oOLEFormat)NAR(oFont)NAR(oTextRange)NAR(oTextFrame)NAR(oShape)NAR(oShapes)NAR(oSlide)NAR(oSlides)'建立第 3 張投影片。'在投影片中加入文字效果,然後將陰影套用至文字效果。oSlides = oPres.SlidesoSlide = oSlides.Add(3, PowerPoint.PpSlideLayout.ppLayoutBlank)oSlide.FollowMasterBackground = FalseoShapes = oSlide.ShapesoShape = oShapes.AddTextEffect(Office.MsoPresetTextEffect.msoTextEffect27, _"The End", "Impact", 96, False, False, 230, 200)oShadow = oShape.ShadowoForeColor = oShadow.ForeColoroForeColor.SchemeColor = PowerPoint.PpColorSchemeIndex.ppForegroundoShadow.Visible = TrueoShadow.OffsetX = 3oShadow.OffsetY = 3''NAR 以釋放參考。NAR(oShadow)NAR(oForeColor)NAR(oShape)NAR(oShapes)NAR(oSlide)NAR(oSlides)'修改簡報中這三張投影片的'投影片放映切換設定。Dim SlideIdx(3) As IntegerSlideIdx(0) = 1SlideIdx(1) = 2SlideIdx(2) = 3oSlides = oPres.SlidesoRange = oSlides.Range(SlideIdx)oSlideShowTransition = oRange.SlideShowTransitionoSlideShowTransition.AdvanceOnTime = FalseoSlideShowTransition.EntryEffect = PowerPoint.PpEntryEffect.ppEffectBoxOut'以個別方法執行投影片放映。RunSlideShow()''NAR 以釋放參考。NAR(oSlideShowTransition)NAR(oRange)NAR(oSlides)'關閉簡報但不儲存變更,然後結束 PowerPoint。oPres.Saved = TrueoPres.Close()'NAR 處理簡報物件。NAR(oPres)NAR(oPresentations)'移除所有事件處理常式。RemoveHandler oApp.SlideShowBegin, AddressOf oApp_SlideShowBeginRemoveHandler oApp.SlideShowNextSlide, AddressOf oApp_SlideShowNextSlideRemoveHandler oApp.PresentationClose, AddressOf oApp_PresentationClose'結束 PowerPoint。oApp.Quit()NAR(oApp)GC.Collect()
  12. 在 [程式碼] 視窗中,將下列程式碼放在 Button1_Click 事件下方:
    	Private Sub RunSlideShow()Dim oSettings As PowerPoint.SlideShowSettings	    Dim oSlideShowWindows As PowerPoint.SlideShowWindows	    oSettings = oPres.SlideShowSettings	    oSettings.StartingSlide = 1	    oSettings.EndingSlide = 3'執行投影片放映。等候投影片放映完成。oSettings.Run()oSlideShowWindows = oApp.SlideShowWindowsOn Error Resume NextDo While oSlideShowWindows.Count >= 1	        System.Windows.Forms.Application.DoEvents()	    Loop	    NAR(oSlideShowWindows)NAR(oSettings)	End Sub	'NAR 函式以移除參考。	Private Sub NAR(ByVal o As Object)Try	        System.Runtime.InteropServices.Marshal.ReleaseComObject(o)CatchFinallyo = NothingEnd Try	End Sub
  13. 將下列事件處理常式加入至前述程式碼的下方:
    	'事件處理常式	Private Sub oApp_SlideShowBegin(ByVal Wn As Microsoft.Office.Interop.PowerPoint.SlideShowWindow)'變更投影片放映視窗的位置和大小。Dim oView As PowerPoint.SlideShowViewWith Wn.Height = 325.Width = 400.Left = 100.Activate()End With'啟動第 1 張投影片上的影片。oView = Wn.ViewoView.Next()NAR(oView)NAR(Wn)	End Sub	Private Sub oApp_SlideShowNextSlide(ByVal Wn As Microsoft.Office.Interop.PowerPoint.SlideShowWindow)'依據投影片變更指標的顏色和類型。Dim Showpos As IntegerDim oView As PowerPoint.SlideShowViewDim oColorFormat As PowerPoint.ColorFormatoView = Wn.ViewShowpos = oView.CurrentShowPosition + 1If Showpos = 3 ThenoColorFormat = oView.PointerColoroColorFormat.RGB = RGB(255, 0, 0)oView.PointerType = PowerPoint.PpSlideShowPointerType.ppSlideShowPointerPenElseoColorFormat = oView.PointerColoroColorFormat.RGB = RGB(0, 0, 0)oView.PointerType = PowerPoint.PpSlideShowPointerType.ppSlideShowPointerArrowEnd IfNAR(oColorFormat)NAR(oView)NAR(Wn)	End Sub	Private Sub oApp_PresentationClose(ByVal Pres As Microsoft.Office.Interop.PowerPoint.Presentation)'在關閉簡報之前,先將簡報另存為 HTML。Pres.SaveAs("C:\TestEvents.htm", PowerPoint.PpSaveAsFileType.ppSaveAsHTML)NAR(Pres)	End Sub
回到頁首

試試看

  1. 按 F5 以執行此應用程式。
  2. 按一下 [Button1]

    PowerPoint 會開始放映投影片。請注意下列資訊:
    • 第 1 張投影片會開始播放影片。
    • 指標類型會變更。
    • 含有圖表的第 2 張投影片上的顏色會變更。
  3. 關閉簡報。
回到頁首
参考
如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
308330How to handle PowerPoint 2002 events by using Visual Basic .NET 2002
254009 INFO: PowerPoint 2000 Event Demonstration Available for Download
303717 如何透過 Visual Basic .NET 2002 或 Visual Basic .NET 2003,使用自動化功能來建立及顯示 PowerPoint 2002 簡報或 Office PowerPoint 2003 簡報
823996 PRB: PIA Is Not Found When You Reference an Office Type Library in Visual Studio .NET
回到頁首
powerpoint vb net event power point connection
內容

文章識別碼:824021 - 最後檢閱時間:12/14/2005 09:02:00 - 修訂: 1.1

Microsoft Office PowerPoint 2003, Microsoft Visual Basic .NET 2003 Standard Edition

  • kbhowtomaster kbautomation KB824021
意見反應