?? 05.txt
字號:
MS Office 開發工具--VBA
一、VBA 的 發 展 過 程
----在Office 中 包 含 著 一 種 加 強Office 功 能 的 語 言, 即 為Basic 語 言。 經 過 發 展, 在Office 97 中,Word、Excel、Access、Power Point 四 個 軟 件 都 有 了 自 己 的 程 序 設 計 語 言, 分 別 稱 為Microsoft Word Visual Basic、Microsoft Excel Visual Basic、Microsoft Access Visual Basic、Microsoft Power Point Visual Basic。 通 常 統 一 稱 為VBA。 在Outlook 中 的 開 發 語 言 為Visual Basic Scripting Edition, 而 不 是 一 個 完 全 的VBA。 不 過,Visual Basic Scripting Edition 是VBA 的 一 個 較 小 的 子 集, 它 與VBA 兼 容。 當 然, 有 一 些VBA 支 持 的 特 性,Visual Basic Scripting Edition 并 不 支 持。
二、VBA 開 發 特 點
----1. Microsoft Office 對 象 模 型
----Visual Basic 是 一 種 面 向 對 象 的 開 發 語 言。 VBA 將Microsoft Office 中 的 每 一 個 應 用 程 序 都 看 成 一 個 對 象。 每 個 應 用 程 序 都 由 各 自 的Application 對 象 代 表。
----在Word 中, Application 對 象 中 包 容 了Word 的 菜 單 欄、 工 具 欄、Word 命 令 等 的 相 應 對 象, 以 及 文 檔 對 象 等 等。 菜 單 欄 對 象 中 包 容 了 所 有 的 菜 單 及 菜 單 命 令。 工 具 欄 對 象 中 包 容 了 各 種 命 令 按 鈕。 文 檔 對 象 中 則 包 容 了 所 有 的 文 字、 表 格、 圖 像 等 文 檔 組 成 部 分 的 相 應 對 象。 文 檔 對 象 是Microsoft Word Visual Basic 中 的 主 要 對 象。
----在Excel 中, Application 對 象 中 包 容 了Excel 的 菜 單 欄、 工 具 欄 等 的 相 應 對 象, 以 及 工 作 表 對 象 和 圖 表 對 象 等 等。 工 作 表 對 象 和 圖 表 對 象 是Microsoft Excel Visual Basic 中 的 主 要 對 象。
----在Access 中, Application 對 象 中 包 容 了Access 的 菜 單 欄、 工 具 欄 等 的 相 應 對 象, 以 及 報 表 對 象 和 窗 體 對 象 等 等。 報 表 對 象 和 窗 體 對 象 是Microsoft Access Visual Basic 中 的 主 要 對 象。
----在Power Point 中, Application 對 象 中 包 容 了Power Point 的 菜 單 欄、 工 具 欄 等 的 相 應 對 象, 以 及 演 示 文 檔 對 象 等 等。 演 示 文 檔 對 象 是Microsoft Power Point Visual Basic 中 的 主 要 對 象。
----2. 基 于 對 象 的 開 發
----(1) 使 用Microsoft Office 對 象
----Office 已 經 具 有 了 強 大 的 功 能,Office 的 對 象 模 型 使 得 可 以 使 用Microsoft Office 中 的 對 象 來 完 成 自 己 的 工 作。 程 序 員 可 以 不 必 浪 費 時 間 開 發 自 己 的 組 件, 只 需 充 分 地 利 用 Office 的 功 能。Office 開 發 者 可 以 在Office 的 基 礎 上 進 行 自 己 的 開 發, 而 不 必 一 切 從 頭 開 始。 例 如,Office 開 發 者 可 以 使 用Word 的 拼 寫 檢 查 器, 而 不 必 自 己 來 開 發 一 個 拼 寫 檢 查 器。
----(2) 用 戶 創 建 對 象
----Office 開 發 者 可 以 在Office 對 象 中 創 建 自 己 的 對 象: 可 以 創 建 自 己 的 菜 單 和 工 具 欄, 添 加 到Office 的 對 象 集 合 中; 可 以 創 建 一 個 窗 體, 并 且 在 窗 體 中 添 加 控 件, 等 等。 例 如, 在 Word 中, 可 以 往 自 動 更 正 的 詞 庫 中 添 加 自 己 的 詞 條。
----3. VBA 開 發Office 的 功 用
----有 人 也 許 覺 得Office 的 功 能 已 經 足 夠 強 大 了, 是 否 還 有 必 要 使 用VBA 來 開 發Office。 的 確, 即 使 根 本 不 用 編 寫 一 句 語 句,Office 就 可 以 完 成 用 戶 所 能 遇 到 的 各 種 任 務。 但 是, 人 們 對 效 率 的 追 求 是 永 不 滿 足 的, 這 就 是 使 用VBA 來 開 發Offic 的 原 動 力。
----(1)VBA 可 以 使Office 任 務 自 動 化
----在 使 用Office 的 過 程 中, 往 往 要 遇 到 一 些 重 復 性 的 系 列 工 作, 特 別 是 在 處 理 大 批 量 的 文 檔 或 數 據 時。 通 過 錄 制 宏 或 使 用Visual Basic 編 寫 宏, 使 一 系 列 的 工 作 只 需 要 一 個 指 令 便 能 完 成, 這 就 成 倍 地 提 高 了 工 作 效 率。
----(2)VBA 可 以 定 制Office 滿 足 自 己 的 需 要
----Office 是 一 個 功 能 異 常 龐 雜 的 軟 件 包, 對 某 一 用 戶 來 所 說, 許 多 命 令 可 能 一 輩 子 也 用 不 著, 而 另 外 一 些 命 令 可 能 得 經 常 使 用。 有 時 候, 功 能 復 雜 反 而 顯 得 多 余。
----另 外,Office 的 外 觀 顯 得 異 常 的 繁 雜, 許 多 用 戶 面 對 如 此 繁 雜 的 界 面 往 往 手 足 無 措。
----通 過VBA 可 以 設 置 自 己 的 界 面, 把 自 己 經 常 用 到 的 菜 單 命 令 和 工 具 欄 放 置 到 顯 眼 的 地 方, 隱 藏 一 些 不 常 用 的 菜 單 或 工 具 欄, 并 且, 可 以 把 自 己 所 編 寫 的 宏 設 置 為 菜 單 命 令 或 設 置 為 工 具 欄 中 的 命 令 按 鈕, 方 便 了 使 用。
----并 且, 可 以 根 據 自 己 的 需 要 來 定 制Office 的 功 能, 滿 足 自 己 的 需 要。
----(3)VBA 可 以 增 強Office 的 功 能
----Office 的 功 能 雖 然 強 大, 但 它 不 可 能 考 慮 到 所 有 情 況, 而 且 情 況 是 千 變 萬 化 的, 各 種 情 況 都 有 特 定 的 要 求。
----通 過VBA 可 以 增 強Office 的 功 能, 以 處 理 各 種 各 樣 的 任 務。 例 如, 可 以 設 置Word 拼 寫 檢 查 的 詞 庫; 可 以 往 詞 庫 中 添 加 新 的 詞 語; 可 以 設 置 自 動 更 正, 設 置 自 己 經 常 遇 到 的 誤 拼 等。
----(4)VBA 可 以 增 強Office 與 用 戶 的 交 互
----在Office 中, 可 以 利 用Visual Basic 創 建 窗 體, 并 在 窗 體 中 添 加 控 件 等 用 戶 接 口 元 素。 通 過 用 戶 接 口, 應 用 程 序 可 以 得 到 用 戶 的 請 求, 并 對 其 作 出 響 應。
----(5)VBA 可 以 集 成Office 的 功 能
----Office 不 是 幾 個 軟 件 的 簡 單 組 合, 而 成 為 一 個 有 機 的 整 體 發 揮 巨 大 的 作 用。Visual Basic 提 供 了 集 成Office 的 功 能 的 一 種 手 段。
----通 過OLE( 對 象 的 鏈 接 和 嵌 入) 和DDE( 動 態 數 據 交 換) 技 術 的 使 用 可 以 集 成Office 的 功 能。 例 如, 利 用Visual Basic, 可 以 在Word 文 檔 中 鏈 接Excel 數 據 表, 調 用Excel 來 對 該 數 據 進 行 處 理。 在Excel 中 處 理 該 數 據 表, 得 到 結 果 也 要 刷 新Word 文 檔 中 的 數 據 表, 保 持 了 數 據 的 更 新。 這 時 的 文 檔 確 切 地 說 應 該 是 一 個 復 合 文 檔。
----OLE 自 動 化 技 術 則 提 供 了 一 種 在 應 用 程 序 中 控 制 源 文 檔 的 方 法。OLE 自 動 化 的 優 點 是, 在 單 一 的 環 境 中 工 作, 同 時 可 以 使 用 其 他 應 用 程 序 的 功 能。
----在Microsoft Office 環 境 中, 利 用Visual Basic 開 發 應 用 程 序 時, 可 以 利 用OLE 自 動 化 組 合Microsoft Office 中 的 多 個 應 用 程 序, 建 立 自 動 化 應 用 程 序。Microsoft Office 提 供 了 大 量 的 材 料, 只 需 把 它 們 拼 湊 起 來。
三、 簡 單 開 發 實 例:
字 符 統 計 程 序
----有 時 候, 要 對 某 字 符 在 文 檔 中 的 出 現 次 數 進 行 統 計。 要 完 成 這 一 任 務, 可 以 在Word 中 開 發 一 程 序 來 較 快 地 統 計。
----打 開 要 統 計 的 文 檔 后, 在 文 本 框 中 輸 入 要 統 計 的 字 符, 如“OK!”, 然 后 選 擇 是 否 區 分 大 小 寫, 單 擊“ 確 定” 按 鈕, 便 可 以 進 行 統 計 了。
----設 計 該 程 序 的 步 驟 如 下:
----1 . 新 建 一 窗 體Userform1, 窗 體 的caption 屬 性 設 置 為“ 字 符 統 計”。 窗 體 中 包 容 以 下 控 件:
----復 選 框 控 件CheckBox1 Caption = “ 區 分 大 小 寫"
----命 令 按 鈕 控 件CommandButton1 Caption = “ 確 定 "
----標 簽 控 件Label1 Caption = “ 輸 入 您 要 統 計 的 字 符:"
----2 . 在 單 擊 命 令 按 鈕 控 件CommandButton1 后 便 執 行 統 計 工 作, 代 碼 如 下:
Private Sub CommandButton1_Click()
Dim countofappear as Integer
Selection.WholeStory
With Selection
.Find.ClearFormatting
With .Find
.Text = UserForm1.TextBox1.Text
If UserForm1.CheckBox1.Value = True Then
.MatchCase = True
Else
.MatchCase = False
End If
.Execute
End With
End With
If Not Selection.Find.Found() Then
MsgBox “ 未 找 到"
Exit Sub
End If
While Selection.Find.Found()
countofappear = countofappear + 1
Selection.Find.Execute
Wend
MsgBox “ 找 到 了" & countofappear & “ 個"
End Sub
----講 解: 首 先 用 語 句Selection.WholeStory 選 定 全 文。
----使 用Selection.find.execute 語 句 進 行 一 次 對 字 符 的 查 找 操 作, 如 下:
With Selection
.Find.ClearFormatting
With .Find
.Text = UserForm1.TextBox1.Text
If UserForm1.CheckBox1.Value = True Then
.MatchCase = True
Else
.MatchCase = False
End If
.Execute
End With
End With
----上 述 語 句 中 使 用Find 對 象 的ClearFormatting 方 法 作 用 是 清 除 任 何 為 進 行 查 找 或 替 換 操 作 所 指 定 的 格 式, 相 當 于“ 編 輯” 菜 單“ 查 找 和 替 換” 對 話 框 中 的“ 不 限 定 格 式” 按 鈕。
----另 外,MatchCase 屬 性 設 置 查 找 操 作 是 否 區 分 大 小 寫。
----如 果 沒 有 找 到, 則 彈 出 一 消 息 框, 告 知 沒 有 找 到, 并 退 出 子 程 序, 語 句 為:
If Not Selection.Find.Found() Then
MsgBox “ 未 找 到"
Exit Sub
End If
----如 果 找 到 一 處, 然 后 進 行 下 一 次 查 找, 以 下 如 此 循 環, 每 找 到 一 次countofappear 變 量 便 加1, 來 代 表 指 定 字 符 在 文 檔 中 出 現 的 次 數, 語 句 為:
While Selection.Find.Found()
countofappear = countofappear + 1
Selection.Find.Execute
Wend
----在 程 序 中Selection.Find.Found() 函 數 用 來 知 道 是 否 找 到 指 定 的 字 符。
----最 后, 彈 出 一 個 消 息 框 來 告 知 字 符 在 文 檔 中 出 現 的 次 數。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -