程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi與Word之間的融合技術(1)

Delphi與Word之間的融合技術(1)

編輯:Delphi

一、VBA代碼含義

Microsoft Word是一個集成化環境,是美國微軟公司的字處理系統,但是它決不僅僅是一個字處理系統,它集成了Microsoft Visual Basic,可以通過編程來實現對Word功能的擴展。

Microsoft Visual Basic在word中的代碼即Word的宏,通過編寫Word宏,可實現一些文檔處理的自動化,如實現文檔的自動備份、存盤等,可擴展Word文檔的功能,因此,能夠充分利用Word的特性,甚至使Word成為自己軟件的一部分。

Word的宏既有有利的一部分,因為它能夠幫助我們實現文檔的自動化,但是Word的宏也不是純粹的有利,有時它可能危害我們的文檔、計算機系統甚至網絡,從最開始的Taiwan NO1宏病毒到現在的Melissa宏病毒,從最開始的簡單的提示,耗盡系統資源到現在的亂發電子郵件,將個人的信息發送到網絡上,甚至向硬盤的Autoexec.bat(自動批處理文件)中添加Deltree C: -y,破壞整個Windows系統。

二、Word中內嵌的Com技術

可以說Word是對Com技術支持最好的軟件,這樣說似乎是太極端了一點,但是Word提供的強大的編程接口技術卻能夠是我們通過程序控制Word的任何一部分。無論是文件的打開、存盤、打印還是文檔中表格的自動繪制。

通過編程軟件,可以靈活的操縱Word,這裡只以Borland Delphi為例,進行詳細描述:

1、 在Delphi中調用Word軟件/文件的方法

在Word中調用Word軟件,歸納起來有三種方法:

。通過Delphi的控件TOleContainer 將Word嵌入

a.使用Delphi提供的Servers控件調用Word,使用Word的屬性

b.通過真正的Com技術,將Office軟件目錄中文件MSWord9.OLB中的類庫全部導入Delphi中,利用Com技術編程

c.使用CreateOleObject將啟動Word,然後以Ole方式對Word進行控制。

2、對幾種方法的難易程度的判別

a.通過Delphi的控件TOleContainer 將Word嵌入

這是最簡單的Ole嵌入,能夠直接將Word文檔調用,只需要使用ToleContainer.Run就可以將Word文檔直接啟動。且這樣啟動的Word文檔與Delphi程序是一個整體(從界面上看),但是它存在不可克服的缺點,即不能通過Delphi控制Word文檔,也就不能實現將靈活操縱Word的目的。

b.使用Delphi提供的Servers控件調用Word,使用Word的屬性

使用Delphi的Servers控件來操縱Word,在編程時Delphi能夠實現代碼提示,總體上看能夠較好的實現Delphi對Word的控制,但是還有一些Word的功能不能在Delphi中調用(比如自己編寫的VBA宏代碼)。且實現功能時本來在VBA代碼中可選則參數在Delphi調用的時候必須添加,否則,連編譯都不能通過。本方式啟動的Word與Delphi程序分屬兩個窗體。此辦法僅能作為一個參考。

c.通過真正的Com技術,將Office軟件目錄中文件MSWORD9.OLB中的類庫全部導入Delphi中,利用Com技術編程利用真正的Com技術,將MsWord9.OLD文件類庫導入,然後利用Com技術進行使用。整體上類似使用Delphi的Servers控件,稍微比Servers控件麻煩,優缺點與Servers控件相同。

d.使用CreateOleObject將啟動Word,然後以Ole方式對Word進行控制。

本辦法是使用以CreateOleObjects方式調用Word,實際上還是Ole,但是這種方式能夠真正做到完全控制Word文件,能夠使用Word的所有屬性,包括自己編寫的VBA宏代碼。

與Servers控件和com技術相比,本方法能夠真正地使用Word的各種屬性,和在VBA中編寫自己的代碼基本一樣,可以缺省的代碼也不需要使用。本方式啟動的Word與Delphi程序分屬兩個窗體。缺點是使用本方法沒有Delphi代碼提示,所有異常處理均需要自己編寫,可能編寫時探索性知識比較多。

三、Word宏編輯器

Word能夠真正地進行VBA代碼的編輯,可以編寫窗體、函數。

進入Word宏編輯器的方法:工具->宏->Visual Basic編輯器,可進入Visual Basic編輯器界面。Word的Visual Basic編輯器界面和真正的Visual Basic編輯器基本相同,在此不再向詳述。在VBA代碼中,可以添加用戶窗體、模塊、類模塊。用戶窗體、模塊、類模塊的概念和Visual Basic完全相同。注釋也與Visual Basic完全相同。

可以將光標停留在窗體、模塊的任何一個子程序上,直接按“F5”運行當前子程序。

四、Word的宏的概述

Word充分地將文檔編輯和VB結合起來,真正地實現文檔的自動化。使用Word編程,類似於使用Visual Basic,所不同的是,在Word中,能夠直接運行某一個子程序,直接看見結果,Word的宏,只能解釋運行,而Visual Basic,現在已經能夠編寫成真正的機器碼,從代碼的保護上來說,應該盡可能地減少Word的VBA代碼數量,尤其是關鍵的代碼。

VBA宏,可分成四種:

1、和命令名相同的宏

如FileSave,FileOpen,如果在VBA代碼中包含與Word同名的函數,則直接執行這些VBA代碼,忽略Word本身的命令。

2、Word內特定的宏

這些宏包含AutoExec(啟動 Word 或加載全局模板)、AutoNew(每次新建文檔時)、AutoOpen(每次打開已有文檔時)、AutoClose(每次關閉文檔時),AutoExit(退出 Word 或卸載全局模板時)。

如果VBA代碼中含有這些名稱的函數,則滿足相應的條件,相應代碼就自動執行。

3、相應事件的VBA宏

這些宏是由事件觸發的宏,如Document_Close在文檔關閉的時候觸發事件,Document_New在新建文檔的時候觸發,Document_Open在打開文檔的時候觸發。

4、獨立的宏

自己編寫的VBA代碼,即不屬於上面幾種情況的VBA代碼,可以被其他VBA代碼調用,更重要的是,可以被其他程序調用。

這樣,我們就可以屏棄Word自動執行的宏,通過Delphi直接調用相應宏來達到目的。

五、Word命令宏的詳細描述

Word本身的命令函數包含很多,但是無論是Word聯機幫助還是MSDN幫助,都沒有這方面的介紹,因此只能憑自己的實驗取探索,初步探測的函數如下:

宏名 解釋 注釋

FileNew 新建

FileNewDefault 新建空白文檔

FileSaveAs 另存為

FileOpen 打開

FileClose 關閉

FilePrint 打印

FilePrintPrevIEw 打印預覽

ToolsCustomize 工具欄裡面的自定義

ToolsOptions 工具選項

ToolsRevisions 突出顯示修訂

ToolsRevIEwRevisions 接受或拒絕修訂

ToolsRevisionMarksAccept 接受修訂

ToolsRevisionMarksReject 拒絕修訂

ToolsRevisionMarksToggle 修訂

ToolsMacro 宏

ToolsRecordMacroToggle 錄制新宏

VIEwSecurity 安全性

VIEwVBCode 查看VB編輯器環境

FileTemplates 模板和可加載項

ToolsProtectUnprotectDocument 解除對文檔的保護

InsertHyperlink 插入超級鏈接

EditHyperlink 編輯超級鏈接

DeleteHyperlink 刪除超級鏈接

EditLinks 查看、刪除鏈接

EditPasteAsHyperlink 粘貼超級鏈接

FormatStyle 樣式

EditBookMark 書簽

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved