使用VBA自動開啟Office程式

除了在PowerPoint中使用巨集完成例行的工作外,您也可以使用VBA程式與Microsoft Office的其他程式產生互動。例如,建立一個PowerPoint巨集,經由這個巨集從Excel中帶進一些數字,或利用巨集將Word文件放入PowerPoint中。

如何在PowerPoint中使用VBA自動開啟Office其他應用程式,請依照下列的操作步驟錄製一個PowerPoint巨集,將Excel的工作表嵌入到簡報中,並加入程式調整這個嵌入的物件大小,同時並允許使用者在輸入方塊訊息中輸入要嵌入的檔案路徑。在開始錄製前,請先確定這Excel工作表中有現成的資料以方便在PowerPoint放映投影片時顯示出來。

  1. 在PowerPoint中,切換到一張空白投影片以剛好顯示Excel的工作表,例如,選用一張 只有標題 投影片,同時請不要在這張投影上選取任何物件。
  2.  工具 功能表中按一下 巨集 指令,再按一下 錄製新巨集 按鈕,請將巨集名稱改為 InsertWorkbook 
  3. 請依照下列的步驟錄製巨集:在 插入 功能表中按一下 物件 指令,開啟 插入物件 對話方塊。

  4.  插入物件 對話方塊中,請選擇 檔案來源 項目。
  5. 按一下 瀏覽 按鈕開啟 瀏覽 對話方塊,請切換資料夾位置便選擇檔案,以嵌入到目前的PowerPoint簡報。
  6. 當選取Excel檔案後,請按一下 確定 按鈕,回到 插入物件 對話方塊。
  7. 請在 插入物件 對話方塊,按一下 確定 按鈕,此時嵌入的Excel工作表即顯示在PowerPoint的簡報上。
  8. 請按一下 停止錄製 按鈕。

在錄製完這個巨集後,請按 Alt+F11 組合鍵開啟Visual Basic編輯器檢視這個巨集的程式碼。當然這個巨集包含您嵌入工作表的路徑:D:\office2000\銷售預估一覽表.xls。而您也會注意到一些數值,其記錄這個嵌入物件的高度及寬度(或許不同)。然而,您的巨集的內容應該與下列所示的程式碼相去不遠。

Sub insertworkbook()
'
' 巨集錄製者: John Wu  錄製日期: 1999/10/12
'

    ActiveWindow.Selection.SlideRange.Shapes.AddOLEObject(Left:=120#, Top:=110#, Width:=480#, Height:=320#, _
    FileName:="D:\office2000\銷售預估一覽表.xls", Link:=msoFalse).Select
    With ActiveWindow.Selection.ShapeRange
        .Left = 154.125
        .Top = 103.125
        .Width = 411.75
        .Height = 333.75
    End With
End Sub

由於這個巨集不需要一些冗長的程式碼,請刪除下列所指定的程式碼(因為這將更容易的調整物件的大小):

With ActiveWindow.Selection.ShapeRange
        .Left = 154.125
        .Top = 103.125
        .Width = 411.75
        .Height = 333.75

現在您的巨集內容應該與下列所示的程式碼相似吧!

Sub insertworkbook()
'
' 巨集錄製者: John Wu  錄製日期: 1999/10/12
'

 ActiveWindow.Selection.SlideRange.Shapes.AddOLEObject
(Left:=120#, Top:=110#, Width:=480#, Height:=320#, _
    FileName:="D:\office2000\銷售預估一覽表.xls", Link:=msoFalse).Select
End Sub

上述的引數 Width  Height 是設定 Workbook 物件的屬性,就是設定這工作表。要以手動方式調整工作表的大小,請選取這個物件後,在 編輯 功能表中按一下 工作表 物件 指令(或按一下滑鼠右鍵),再按一下 編輯 指令,此時請拖曳這嵌入物件的 控點 加大或縮小工作表的顯示內容,然後在這物件的外圍按一下滑鼠左鍵結束編輯這個物件。當您插入這個物件後,想要自動顯示較大的嵌入物件,您可以在這個巨集中增加 Width  Height 的數值。請注意,如果您是在VGA的顯示模式下,則 Width  Height 最大值分別是640與480。

如果想要在另一張投影片執行您剛剛所錄製的巨集執行這個巨集,將會插入相同的Excel工作表在這目前的投影片上,因為這是受到 ActiveWindow 這物件的程式碼所影響的。而在某些案例中,這嵌入的工作表有時會顯示出不妥當的形狀,而如果您輸入下列的四列程式碼請立即加在最後一列程式碼之後 End Sub 之前,即可以根據原始大小縮放這個物件以解決前面所提到的問題。

With ActiveWindow.Selection.ShapeRange
            .ScaleHeight 1, msoCTrue
            .ScaleWidth 1, msoCTrue
End With

所以您目前的巨集內容,應該下列所示:Sub insertworkbook() ' ' 巨集錄製者: John Wu 錄製日期: 1999/10/12 ' ActiveWindow.Selection.SlideRange.Shapes.AddOLEObject (Left:=120#, Top:=110#, Width:=480#, Height:=320#, _ FileName:="D:\office2000\銷售預估一覽表.xls", Link:=msoFalse).Select With ActiveWindow.Selection.ShapeRange .ScaleHeight 1, msoCTrue .ScaleWidth 1, msoCTrue End With End Sub

如果要讓使用者可以在輸入方塊中,自行輸入要嵌入的Excel工作表的檔案路徑,請在這個巨集的註解文字之下加入這幾列的程式碼:

Dim WhichWorkbook As String
    WhichWorkbook = InputBox(prompt:="請輸入嵌入至簡報的Excel工作表路徑及檔案名稱(.xls).")

請將嵌入Excel工作表的路徑改為 WhichWorkbook 變數,所以現在 FileName 的參數應該如下所示:

FileName:=WhichWorkbook

最後,您的巨集內容應該如下所示:

Sub insertworkbook()
'
' 巨集錄製者: John Wu  錄製日期: 1999/10/12
'
    Dim WhichWorkbook As String
    WhichWorkbook = InputBox(prompt:="請輸入嵌入至簡報的Excel工作表路徑及檔案名稱(.xls).")
    ActiveWindow.Selection.SlideRange.Shapes.AddOLEObject
(Left:=120#, Top:=110#, Width:=480#, Height:=320#, _
    FileName:=WhichWorkbook, Link:=msoFalse).Select
        With ActiveWindow.Selection.ShapeRange
            .ScaleHeight 1, msoCTrue
            .ScaleWidth 1, msoCTrue
        End With
  End Sub

當您完成這個巨集後,請在 檔案 功能表中按一下 關閉並回到Microsoft PowerPoint 指令。

請切換到另一張投影片,然後執行 insertworkbook 巨集,此時將會出現 輸入訊息方塊 ,請輸入要嵌入的Excel工作表檔案路徑,但別忘了要加上.xls副檔名。

注意

如果想要在PowerPoint中建立自動的解決方案對策,請參閱:

  • Visual Basic編輯器的線上輔助說明。

  • 由Christine Solomon編著的Microsoft Office Developer's Handbook,由Microsoft Press出版。



    Copyright1997-2001 SoftChina Corporation. All rights reserved.