MS Office 自動化巨集
文章推薦指數: 80 %
提供巨集的各Windows 應用軟體中,目前以Word 5.x 以後版本、 Excel 5.x 以後版本、 ... 為特殊目的而修改程式碼的狀況在此不多加敘述,本範例簡單介紹如何利用Excel ...
撰寫日期:1996/07/10
MSOffice自動化巨集
網頁化日期:1999/02/03
本報告的目的:
1.
自動化的目的促進工作效率,減少人工成本。
(1)論文、報告及作業的圖形大量繪製或重新繪製。
(2)論文、報告及作業的相似表格大量繪製或重新繪製。
(3)重複性的動作。
2.
應用軟體特殊性影響程式架構的位置。
(1)利用Excel現成函數或功能時,如反矩陣、統計函數、線性規劃等。
(2)利用
MicroStation功能時,如圖元截取、圖元修改編製等。
3.可利用資源充沛。
(1)可利用ODBC
連結存取任一資料庫,不須修改程式碼。
(2)操作介面製作容易。
(3)可利用
Windows所提供之所有資源。
(4)可透過OLE、DDE等利用Windows下相關應用軟體資源。
4.與VisualBASIC相容。
(1)除各應用軟體所提供之特殊物件外,程式碼及觀念皆相容。
(2)若透過OLE引入應用軟體時,則特殊物件亦同時引入
VB。
2.1 巨集
巨集(marco)的意思就是以簡單的按鍵取代一連串的按鍵動作。
後來在組合語言、程式編譯設定檔
(MakeFile)及程式啟始設定檔大量使用
marco的名詞,使巨集有了新的含義,巨集代表一連串的指定動作。
在
MSOffice中定義廣義的巨集含義,巨集是一連串的事件、動作的組合。
這種廣義的定義來說,巨集已和程式無異了。
提供巨集的各
Windows應用軟體中,目前以
Word5.x以後版本、
Excel5.x以後版本、
Access7.0及MicroStation
95有相同的標準及操作:
1.以BASIC為基本語法,並與Visual
BASICforApp.相容。
2.
可完全不用瞭解巨集語法,僅以「錄製巨集」、「執行巨集」即可使用。
3.有完整的編緝、除錯、輔助說明及操作環境。
4.均具有完整的對話盒編緝器,可建立私有的操作環境。
2.2 建立巨集
建立巨集可以從最簡單的「錄製巨集」開始。
例如說我們有多個文件,其中有多個須要替換的詞句,如「規畫」改成「規劃」、「計劃」改成「計畫」等,雖然應用軟體皆提供了替換的工具箱,但若要替換的檔案或詞句一多,工作量則以倍份增加。
這時可考慮採用「巨集」,怎麼作呢?
1.由選單中選出「錄製巨集」,並決定巨集名。
2.正常操作單一檔案的各個替換工作。
3.單一檔案的各個替換工作完畢後,選擇「停止錄製巨集」。
4.開啟其它工作檔並選擇原巨集後執行。
從第二個工作檔以後,所有的替換動作皆僅須一執行巨集的功能即可取代。
但並不一定所有的動作街皆可由「錄製巨集」完成,例如判斷或迴圈等,這種情形就須進入編緝巨集來完成。
例如前例改為所有同目錄或指定文件希望一次完成,則巨集就必須迴圈化來處理。
但若做該巨集僅使用少次,則須考慮時間及工作量是否有確切減少,以免增加工作時間及工作量。
以Word來說,所有錄製之巨集皆存放於
Normal.dot下,建議利用組合管理的功能將自己需要保存的巨集另存它檔,一方面便於管理分類,一方面若有巨集病毒入侵也可以比較容易發現。
最好是將對
Normal.dot檔的存取確認盒設定打開,這樣也容易過濾巨集病毒。
2.3 遙控應用軟體
Windows提供四種方法控制其它應用軟體或傳遞資料:
1.動態資料交換
(DDE)。
2.物件插入(OLE)。
3.剪貼簿
(Clpboard)。
4.應用程式控制
(App.Control)。
本報告僅介紹方法
4,方法1及方法2坊間皆有超過1,000頁的專書介紹,在本報告中不多作說明,方法
1約需專章討論,在本報告中亦不多加說明。
應用程式控制常用之主要函數分述如下:
1.AppActivate陳述式:啟動應用程式視窗。
語法:AppActivate
title[,wait]
2.Shell函數:執行一個可執行的程式。
語法:Shell(pathname[,windowstyle])
3.SendKeys陳述式:將一或多個按鍵傳送到作用中的視窗上,如同在鍵盤上做輸入一樣。
語法:SendKeys
string[,wait]
由上面常用之主要函數可知,凡是要啟動其它軟體且所有步驟皆可以鍵盤處理之情形時,可以利用自動化來操作個軟體,與
DOS的批次檔頗有異曲同工之妙。
2.4 範例
為特殊目的而修改程式碼的狀況在此不多加敘述,本範例簡單介紹如何利用
Excel強大的繪圖功能,將其繪圖的成果自動送進
Word成為報告或論文。
透過
Excel來處理繪圖的原因是
Excel有強大的文字轉取精靈,一般格式化的文字檔可輕易的轉入
Excel,不論計算、繪圖、表格皆適宜,透過
Excel處理可節省發展資料讀取程式的時間。
以繪圖來說,繪圖範例做好後,調整資料內容或資料區間即可複製送入
Word,若有範例外的功能要調整,亦可利用「錄製巨集」取得修改簡例,範例可由錄製巨集進行修改,亦可重新打入。
在
Word部份來說,Word收Excel圖要貼成Graph5的格式,因此這部份由貼上到完成利用「錄製巨集」的功能,簡單的錄製成一巨集
"PasteGraph5"以方便處理。
Sub自動繪圖送入word()
' 讀入所有欲處理之資料檔名
DataSSEDefineName$=
"D:\STAFF\Netflow\Neural\annpc\paper\autodraw.in"
OpenDataSSEDefineName$ForInputAs1
TotalFileInN=0
Do
LineInput#1,TempC$
IfTempC$<>""Then
TotalFileInN=TotalFileInN+1
EndIf
LoopUntilEOF(1)
Close1
ReDimFileSSEInC$(1ToTotalFileInN)
OpenDataSSEDefineName$ForInputAs1
Fori=1ToTotalFileInN
LineInput#1,FileSSEInC$(i)
Nexti
Close1
' 依序處理所有讀入之資料檔
Fori=1ToTotalFileInN
' Select如同滑鼠點選一下!相當於在畫面下方
Sheet1按一下滑鼠左鍵
Sheets("Sheet1").Select
' 利用Excel開啟一般ASCII檔
Workbooks.OpenText
Filename:=FileSSEInC$(i),StartRow:=1,DataType:=
xlFixedWidth
Columns("B:C").Select
Selection.Copy
Windows("autodraw.xls").Activate
Columns("A:B").Select
ActiveSheet.Paste
Forj=Len(FileSSEInC$(i))To1Step
-1
IfMid(FileSSEInC$(i),j,1)=
"\"Then
CloseWindowName$=
Mid(FileSSEInC$(i),j+1)
ExitFor
EndIf
Nextj
Windows(CloseWindowName$).Activate
Range("a1").Select
Selection.Copy
ActiveWindow.Close
Sheets("Sheet1").Select
Columns("A").Select
Selection.Copy
Sheets("Sheet2").Select
Columns("A").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Columns("C").Select
Selection.Copy
Sheets("Sheet2").Select
Columns("B").Select
Selection.PasteSpecialPaste:=xlValues,
Operation:=xlNone
Range("a1")="觀測流量"
Range("b1")="推算流量"
MaximumLine=0
Do
MaximumLine=MaximumLine+1
TempRange$="a"+
Format(MaximumLine,"#")
IfRange(TempRange$)=""
Then
MaximumLine=MaximumLine-1
ExitDo
EndIf
Loop
summy=DoEvents()
ActiveSheet.DrawingObjects("Chart
1").Select
TempRange$="a1:b"+
Format(MaximumLine,"#")
ActiveChart.ChartWizard
Source:=Range(TempRange$)
summy=DoEvents()
ActiveSheet.DrawingObjects("Chart
1").Select
Selection.Copy
' 切換或啟動
Word
Application.ActivateMicrosoftApp
xlMicrosoftWord
summy=DoEvents()
SendKeys"{ENTER}",True
SendKeys"^{END}",True
SendKeys"{ENTER}",True
SendKeysFileSSEInC$(i),True
SendKeys"{ENTER}",True
SendKeys"%t",True
SendKeys"m",True
SendKeys"PasteGraph5",True
SendKeys"%r",True
SendKeys"{ENTER}",True
ForTimeSleep=1To50
summy=DoEvents()
NextTimeSleep
AppActivate"MicrosoftExcel"
'回到
Excel。
Nexti
EndSub
延伸文章資訊
- 1【Day 02】Word 很大,你要看一下- Microsoft Office Phishing
雖然巨集很方便,但是也被惡意程式濫用。 VBA Macro. 建立一個word(.docx) 檔案,按下Alt+F11 會進入Macro Editor。 在程式碼 ...
- 2WORD自動化文件設計範例:聯絡簿範本| 十年磨一劍 - - 點部落
然後點選[增益集]\[自訂工具列]\[複製訊息],巨集程式自動將訊息複製貼到表格中所有格子(如下),使用者就不用複製貼上那麼多次。 image. 巨集程式碼如下.
- 3word巨集範例的蘋果、安卓和微軟相關APP,YOUTUBE
word巨集範例的蘋果、安卓和微軟相關APP,在YOUTUBE、FACEBOOK、DCARD、MOBILE01、PTT.CC和這樣回答,找word巨集範例在在YOUTUBE、FACEBOOK、D...
- 4建立或執行巨集
在Word 中,您可以建立及執行宏來自動化常用的工作。 宏是一系列命令和指示,您以單一命令分組,以自動完成任務。 較新的版本Office 2007.
- 5錄製巨集來產生程式碼 - Microsoft Docs
巨集錄製會將您的動作轉譯成Visual Basic 程式碼。 在錄製完動作之後,可以依照您的要求來修正 ... 下列程式碼範例會將選取的段落縮排二分之一英吋。