您透過PowerPoint內建的程式語言將簡化您在PowerPoint中的工作,而這個程式語言就是
所有包含在Microsoft Office 2000的軟體都共同分享這項VBA程式工具,它讓您在Office應用軟體中建立一個自動化的商用性對策。實際上,這可以取代選購一套專為貴公司所設計的軟體,因為有許多公司行號已經在使用Office軟體及VBA語言程式滿足他們的需求。例如:人力資源部門使用Word製作一份商用申請表格而不需要購買一套表格專用的產生器,在這份表格中將簡化人事部門檢視這份表格的過程並自動產生評估的結果。同樣的,您可以在PowerPoint中使用VBA產生工具列或功能表指令,以幫助您及在工作團隊中的其他人建立一份標準的簡報。
本章將提供如何使用語言程式解決在PowerPoint工作中自動化的介紹。
電腦語言就是下達命令給電腦使其執行該指令或動作。例如,您可以設計一個程式控制電腦,啟動電腦時,在螢幕上就顯示Hello的文字,而當關閉電腦時就顯示Bye的文字。電腦語言是一連串的指令(Code, 一般稱為程式碼),它是用來控制電腦去執行某些動作的語言(即程式)。
VBA,通常您使用它以產生一個code,它是BASIC程式語言最新的版本,同時被設計用以指導程式設計的初學者。BASIC的命令本來就是以英文書寫,所以您將發現它們很容易被理解的。
在您開始建立一個簡單的VBA程式之前,您必須清楚知道這個程式的一些基本處理程序,這些就是本章所討論的重點。所以您應該會知道如何:
- 錄製巨集
在早期個人電腦的巨集(macroinstruction術語的縮寫)就是簡單的錄製下一連續的按鍵動作,然後將它指定在某個鍵盤上按鍵,而當按一下這個按鍵就可以再執行一次您所錄製的電腦操作。而Microsoft重新開發及延伸這早期的巨集觀念,而建立一個完全可以編輯程式的巨集程式語言以符合Office應用軟體的需求。之後Microsoft以真實的程式語言VBA融入到巨集的編輯語言中,VBA於是誕生。
巨集語言就是一種程式的語言,它內建在Microsoft Office軟體,以讓您自動完成一連串的工作,而這些工作被組合在一個單一的命令上。巨集的錄製允許您錄製下所需要的程式碼而自動完成一連串的工作。之後,當您再次需要完成這項工作時您可以再執行一次這個巨集。Microsoft Excel、Microsoft Word和Microsoft PowerPoint等應用程式都提供巨集錄製的功能,即VBA程式。
雖然當您使用巨集錄製的一長串的程式碼時您必須要很小心,因為當您錄下巨集的這些程式碼是一個延伸巨集內容很好的開始點。
若要使用PowerPoint的巨集錄製功能,請依照下列的步驟操作:
- 在PowerPoint視窗中請在
![](20-1.gif)
圖20-1. 在 錄製巨集 對話方塊中,您可為您所錄製的巨集取個名稱。 |
- 改變巨集名稱以更貼切描述這個巨集的功能。
![](b517.gif)
無論您錄製什麼樣的巨集,只要您希望所錄製的巨集再執行一次,即可以執行這個巨集。在某些案例中,您或許會得到一個錯誤的訊息以指出這個巨集不能完成它試圖執行的命令。有時候像這樣的錯誤訊息產生是因為您正試著再執行一些已經做過的工作。例如,您試著開啟已經被開啟的檔案,或關閉已經被關閉的檔案。所以如果遇上這樣的例子,請先做必要的調整後再執行這個巨集。
若要執行您已經錄製完成的巨集,請依照下列的步驟操作:
- 在
![](20-2.gif)
圖20-2.在 巨集 對話方塊中,您可以執行、編輯、建立和刪除巨集。 |
當您錄製完或一個巨集後,您或許想要檢視它的內容,甚至想要編輯它。如何檢視(或修改)這個巨集呢?請依照下列的步驟操作:
- 請在
當您要編輯這個巨集,其實您是在PowerPoint視窗中開啟另一個應用程式─
Visual Basic編輯器 。(您是否注意到這個 Microsoft Visual Basic 視窗已經顯示,而且包含巨集程式的功能表及工具列。)當您第一次編輯這個巨集,這個Visual Basic編輯器視窗將會顯示如下所說明的三個視窗:- Module X(程式碼)
因為您可以排列、放大縮小或關閉這些視窗,所以在您目前所看到的
Microsoft Visual Basic 視窗並不一定如同本書圖20-3所顯示的一樣。想要 關閉專案-VBAProject 視窗,請按一下該視窗右上角 關閉視窗 按鈕。![](20-3.gif)
圖20-3.Visual Basic編輯器視窗。 |
若要關閉這個
Microsoft Visual Basic 視窗,請在 檔案 功能表中按一下 關閉並回到PowerPoint 指令,或直接關閉這個視窗。想要看懂VBA程式語言最好的方法是錄製一個簡單的巨集,然後在切換到
Microsoft Visual Basic 視窗瞭解它們的意思。之後您將學習如何寫下一些簡單的式碼。這些範例的程式碼都是簡短的,所以您可以很容易的複製這些程式碼並且在您的電腦上執行它。舉例說明,我們要錄製一個開啟範例簡報檔案的巨集,而這個巨集名稱請取為
開啟範例簡報 ,它的目的是開啟一個PowerPoint現有的檔案。在您錄製巨集前請先開啟一個新簡報檔案(或一個已存在的檔案),並將它儲存在C:\My Documents資料夾,檔案名稱為 範例簡報 。然後請關閉這個檔案,再開啟另一個新簡報檔案要在這個檔案上錄製巨集,但您也可以開啟一個舊檔案錄製巨集。若要錄製這個巨集,請依照下列的步驟操作:
- 請在
如果想要看看您剛剛所錄製的巨集內容,請在
工具 功能表中按一下 巨集 指令,然後在該層選單中再按一下 巨集 指令,然後在 巨集 對話方塊中選取 開啟範例簡報檔案 巨集名稱,再按一下 編輯 指鈕。這巨集程式的內容應該如下所示:
Sub開啟範例簡報() ' ' 巨集錄製者: John Wu 錄製日期: 1999/10/12 ' Presentations.Open FileName:="C:\My Documents_ \範例簡報.ppt", ReadOnly:=msoFalse End Sub
注意 |
在這些程式碼中,如果有出現底線( _ )符號,即表示以下的程式碼是這一列的延續。 |
若要閱讀在這個巨集中的VBA程式碼(如以上所示的),您必須對巨集有個基本的認識。第一點,每個被錄製下來的巨集就是一個 程序 ,而它被定義成一個命令以完成指定的工作。而每一個程序都以這個英文單字 Sub 開始,例如這個案例,在 Sub 之後就是巨集名稱和一對括弧。而所有的程序都以 End Sub 字串為結束點。 第二點,VBA程式碼由主要的 例如,PowerPoint簡報就是一個物件,您在程式碼中得到簡報名稱,這就是物件中 在任何一行的程式碼,您可以設定物件的屬性或完成的方法,但不能同時執行這兩項。 這個範例的程式碼如之前所示(或重覆如下),Presentation 接續在Open 這個FileName描述的資訊使用中括弧及等於符號,用來說明您要開啟的簡報檔案路徑及名稱,並且由字串符號(")括起來。在VBA中,所有的文字字串都必須使用字串符號(")將它們前後括起來,以讓VBA知道這是一般的文字而不是拼錯單字的物件、屬性或方法。而ReadOnly描述的資訊是一個值(也稱之為內部的常數),它是內建在VBA而且等於False。這 這裡有兩種其他的方法是您必須知道如何閱讀(或寫下)VBA: 請不要隨意的按 ENTER 鍵,否則將打斷 VBA 的屬性、方法、陳述、功能及備註,而將其分為好幾個列。 使用錄製巨集的功能所產生的程式碼在某些陳述上是指固定的位置,換句話說,它只能完成您錄製時的指定動作。例如,就您之前所錄製的巨集而言,它只能開啟您指定位在My Documents資料夾內的檔案─範例簡報。若要將這位置的陳述轉換為適用性更寬廣的程式碼需要使用這兩項技術:一是加入變數,另一種是由使用這巨集的人自行輸入所需要的可變資訊。 想像電視機是接受單一頻道的硬體,所以您必須擁有3台電視機以觀看主要的三個網路頻道。(請暫時不要考慮有線電視。)程式碼將不會使用如電視機般無效率的只選用單一的頻道。 變數 最好的練習方法,當常去呼叫一個變數,也就是說在開始撰寫一個程式時即列出變數清單和代表每個變數可使用的資料型態項目。您可以使用鍵盤輸入這個呼叫的變數 例如,在下列的範例程式碼中,緊接在 請依照下列的步驟操作,您可以建立一個新的巨集並輸入上述的程式碼,然後試驗這變數是如何執行的(同時看看如何寫下程式碼): 如果您剛建立的巨集是在您目前PowerPoint簡報中的第一個巨集,這個MyName程序將會顯示在這 您可調整 程式碼 視窗以方便您只查看目前想要編輯的巨集名稱的程式碼內容,請在 程式碼 視窗的左下角上按一下 程序檢視 按鈕,即只顯示目前插入點所在的巨集名稱的程式碼內容,而不顯示其他在同一個模組(Module)內的巨集,當然您只要再按一下 全模組檢視 按鈕可再檢視這個模組內的所有巨集程式碼。 若要加入程式碼在這個程序內,請依照下列的步驟操作: 請注意當您在輸入時,Visual Basic編輯器會提出一連串的關鍵字清單(其排序根據英文字母的次序),而這個選項也會因為您所輸入的第二個或第三個的字母而提出相關的項目,例如,當您開始輸入 string 時,Visual Basic編輯器會列出第一個字母是s開頭的項目(如圖20-4),但當您輸入到 str 字串時在這清單中 string 即顯示出來,此時您不需要完全輸入這個變數的全部字串,只需按 ENTER 鍵就會將這個 string 變數放在插入點所在的位置上。 您是否注意到當輸入 現在,您可以利用下列這兩種方法執行這個巨集(程式)。 當您執行這個巨集後,您應該可以看到如圖20-7所顯示的一個訊息方塊。 若要想改變這個巨集以顯示另一個姓名,請在這個程式碼中,將第二列MyName = "Sharon"的Sharon改為其他的姓名。例如,輸入 根據下列所顯示的程式碼內容,將會在訊息方塊中顯示 若要結束Visual Basic編輯器,請在 雖然這些在您的巨集中,其變數的內容可以很輕易的被修改,如同上述所舉的一個程序(巨集)例子,但仍然是固定的陳述程式碼。換言之,只有這個程式設計者(就是您本人)可以在變數 若想讓使用者提供資訊到您的巨集中,最簡單的方法是:使用 請注意在這個程序中,變數 當然,這個輸入方塊 InputBox 函數是獲得使用者資訊最簡單的方法。而要產生這些對話方塊,而更加彈性及複雜的方法是在 Visual Basic 編輯器中使用 自訂表單 功能。您可以在 Visual Basic編輯器 視窗中利用輔助說明瞭解如何使用這項 自訂表單 功能。 雖然您可以在 巨集 對話方塊中按一下 執行 按鈕執行巨集(請參閱 <如何執行巨集> )。而如果執行巨集就如同在PowerPoint中,利用功能表列中的指令或工具列中的按鈕,這樣的操作不也是更方便嗎? 當您建立一個自訂的工具列或加入一個自訂的功能表在功能表列中,實際上您就是利用這相同的方式自訂Microsoft的工具列。在這工具列中可以包含按鈕、功能表或是組合這兩項。 若要建立一個自訂的工具列並加入巨集到這工具列中,請依照下列的步驟操作: 一個新的且是空的工具列即顯示在畫面上,但如果這個新工具列與 若要建立一個自訂的功能表並加入巨集到這功能表列中,請依照下列的步驟操作: 將巨集加入到您自訂的功能表(專屬區),請依照下列的步驟操作: 為了建立更複雜且精密的巨集,例如,這個巨集可以讓它自己做判斷該執行那一列的程式碼,則您需要瞭解如何使用這決策控制的陳述式架構。這個控制架構決定程式碼執行的順序。一般來說,巨集一次只執行一列的程式碼,從最前面的一列逐一往下執行到最後一列,除非在這相繼而來的執行過程中被某個 If...Then ...Else 當程式在執行這個
決策控制的陳述式時,它首先會判斷 Beep 是 VBA 陳述式中最簡單的方法之一:只執行它被指定的動作。 兩個陳述式:ElseIf及Else,它們允許您加入其他的驗証資料在 If...Then...Else 的決策控制中。使用這兩個選擇性的陳述式可以讓您的程式碼根據目前的狀況(或使用者的輸入資料)產生不同的動作(或結果)。請參閱下列的範例程式碼(這由中括弧所包圍的選項是決策控制中的一部份。) 當執行這個決策控制的程式時,將首先判斷 在這 這裡有個較為複雜的範例,其使用 Concatenation是個很常的英文字單字,在VBA程式中其表示 當您參閱上述的範列,即發現這連結運算符號讓您為使用者提供更多詳細的回覆資訊。而下列的範例程式碼,將以 比較運算符號(Comparison Operators)是一群數學上的標記,您可以使用它們撰寫比較的陳述式。其中最簡單的比較運算符號是=(等於)符號,而其他的比較運算符號,請參閱下列的清單。 接下來的範例使用 使用Val函數是將之後括弧內的資料轉換為數字(文字或可變的字串轉換為數字),例如,Val("10")=10。 除了在PowerPoint中使用巨集完成例行的工作外,您也可以使用VBA程式與Microsoft Office的其他程式產生互動。例如,建立一個PowerPoint巨集,經由這個巨集從Excel中帶進一些數字,或利用巨集將Word文件放入PowerPoint中。 如何在PowerPoint中使用VBA自動開啟Office其他應用程式,請依照下列的操作步驟錄製一個PowerPoint巨集,將Excel的工作表嵌入到簡報中,並加入程式調整這個嵌入的物件大小,同時並允許使用者在輸入方塊訊息中輸入要嵌入的檔案路徑。在開始錄製前,請先確定這Excel工作表中有現成的資料以方便在PowerPoint放映投影片時顯示出來。 在錄製完這個巨集後,請按 由於這個巨集不需要一些冗長的程式碼,請刪除下列所指定的程式碼(因為這將更容易的調整物件的大小): 現在您的巨集內容應該與下列所示的程式碼相似吧! 上述的引數 如果想要在另一張投影片執行您剛剛所錄製的巨集執行這個巨集,將會插入相同的Excel工作表在這目前的投影片上,因為這是受到 所以您目前的巨集內容,應該下列所示: 如果要讓使用者可以在輸入方塊中,自行輸入要嵌入的Excel工作表的檔案路徑,請在這個巨集的註解文字之下加入這幾列的程式碼: 請將嵌入Excel工作表的路徑改為 最後,您的巨集內容應該如下所示: 當您完成這個巨集後,請在 請切換到另一張投影片,然後執行 如果想要在PowerPoint中建立自動的解決方案對策,請參閱:Sub NameOfThisSubroutine()
Code
End Sub
object.property或object.method
Presentations.Open
FileName:="C:\My Documents_\範例簡報.ppt", ReadOnly:=msoFalsePresentations.Open FileName:= "C:\ My Documents_
\範例簡報.ppt"
, ReadOnly:= msoFalse
換行鍵 為結束。例如,在這個範例的巨集中 Presentations.Open FileName:="C:\My Documents\範例簡報.ppt", ReadOnly:=msoFalse 就是一列的單一程式碼,而最後以 換行鍵 為結束點。' 巨集錄製者: John Wu 錄製日期: 1999/10/12
注意 Sub MyName ()
Dim MyName As String
MyName = "Sharon"
MsgBox prompt:= MyName
End Sub
Sub MyName()
End Sub
注意 Dim MyName As String
MyName="Sharon"
MsgBox Prompt:=MyName
圖20-4.當您輸入程式碼時,Visual Basic編輯器將顯示其相對應的程式提示。 圖20-5.
當您輸入MsgBox這關鍵字串時,Visual Basic編輯器將顯示這個MsgBox函數所需要的完整引數串列。
巨集 對話方塊中執行這個巨集。圖20-6.
Visual Basic編輯器的一般工具列。 圖20-6.
執行MyName巨集所顯示出變數名稱MyName所指定的內容。 MyName = " John Wu "
MyName = "George Washington是美國第一任總統"
Sub YourName()
Dim YourName As String
YourName=InputBox(Prompt:="請輸入您的姓名")
MsgBox Prompt:= YourName
End Sub
圖20-8.無論使用者在輸入方塊中(左圖)輸入什麼資料,都將顯示在訊息方塊中(右圖)。 注意
檢視 功能表中按一下 工具列 指令,然後再按一下 自訂 指令。圖20-9.
在 自訂 對話方塊中,您可在左方的 類別 清單中選取 巨集 項目,然後在右方的 指令 窗格即顯示可供使用的巨集。 圖20-10.
這個自訂的工具列其中的巨集按鈕包含了文字與圖示。
檢視 功能表中按一下 工具列 指令,然後再按一下 自訂 指令。
自訂 對話方塊中,按一下 指令 標籤,並在 類別 選項中選取 巨集 項目。
是外部的元件,它將會影響電腦程式,例如,在指定的一段時間內讓使用者按一下指定的按鈕或開啟指定的檔案。If條件1 Then
執行程式碼1
End If
Sub ExampleI()
Dim x As Integer
x = 1
If x = 1 Then
Beep
End If
End Sub
If條件1 Then
程式碼1
[ElseIf條件2 Then
程式碼2]
[ElseIf條件3 Then
程式碼3]
.
.
.
[ElseIf條件N Then
程式碼N]
[Else
其他的程式碼]
End If
的條件是真的(在這個例子中,將執行這區塊中的程式碼。)Sub ExampleII()
Dim x As Integer
Dim y As Integer
x = -1
y = 0
If x = -1 And y = -1 Then
Beep
ElseIf y = 0 Then
Else
MsgBox prompt:="Hi!"
End If
End Sub
"Your name is" & YourName
Sub日期()
Dim Today As String
Today = Date
MsgBox prompt:="今天是西元 " & Today & "."
End Sub
= 等於 <> 不等於 < 小於 > 大於 <= 小於或等於 >= 大於或等於 注意 Sub ShowAnswer()
Dim Answer As String
Answer = InputBox(Prompt:="Enter a number_from 1 through 99")
If Val(Answer) <= 99 And Val(Answer) >= 1 Then
MsgBox Prompt:="You entered: " & Answer & "."
Else
Beep
MsgBox Prompt:="You entered an invalid number."
End If
End Sub
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
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 SubDim WhichWorkbook As String
WhichWorkbook = InputBox(prompt:="請輸入嵌入至簡報的Excel工作表路徑及檔案名稱(.xls).")
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
注意
Copyright1997-2001 SoftChina Corporation. All rights reserved.