對大多數(shù)人來講,想要學習ExcelVBA編程技術都起因于需要執(zhí)行一些利用Excel的標準工具無法完成的任務。對于我們每個人來講,任務都各不相同。這任務可能是需要為數(shù)據(jù)集中的所有行自動創(chuàng)建單獨的工作簿,也可能是需要自動發(fā)送很多報告郵件。不管你面對的是什么樣的任務,基本上都可以肯定已經(jīng)有人使用ExcelVBA來解決跟你一樣的問題了。
就ExcelVBA來講,最美妙的事莫過于你不是必須成為專家后才能解決問題。你可以為解決一個具體問題而學習相關知識,也可以為處理各種自動化場景而深入學習各種技巧。
無論你的目標如何,本書都可以幫助你駕馭VBA語言的強大功能來使任務自動化、工作更省心更有效率。
本書涵蓋的內(nèi)容
本書主要介紹VBA(VisualBasicforApplications),這是一種構(gòu)建于Excel(和其他MicrosoftOffice應用程序)中的編程語言。更具體地說,本書將展示如何編寫使Excel中各種任務自動化的程序。本書覆蓋了從錄制簡單的宏乃至創(chuàng)建復雜的、面向用戶的應用程序和實用程序等所有內(nèi)容。
你可以按自己所需來學習本書的內(nèi)容?梢詮念^讀到尾,也可以從中挑出覺得對自己有用的部分。VBA編程通常都是面向任務的,因此在面對一個具有挑戰(zhàn)性的任務時,可以先從本書中查一查哪些章節(jié)是專門針對你所面對的問題的。
本書并沒有涵蓋VSTO(VisualStudioToolsforOffice)中的內(nèi)容。VSTO是一門較新技術,它使用了VisualBasic.NET和MicrosoftVisualC#。VSTO也可用于控制Excel和其他MicrosoftOffice應用程序。
你可能知道,Excel2016也可用于其他平臺。例如,你可以在瀏覽器中使用微軟的ExcelWebApp,甚至在iPad和平板電腦上運行Excel。這些版本不支持VBA。也就是說,本書介紹的是針對Windows平臺的Excel2016桌面版本。
本書讀者對象
本書并不是為Excel的初學者編寫的。如果讀者對使用Excel沒有任何經(jīng)驗,那么最好先閱讀Wiley出版社出版的JohnWalkenbach撰寫的《中文版Excel2016寶典》,該書全面概括了Excel的所有功能,它是為各個層次的讀者服務的。
為發(fā)揮本書的最大功效,讀者應該是有一定使用經(jīng)驗的Excel用戶。本書假設讀者已經(jīng)掌握了如下技能:
●如何創(chuàng)建工作簿、插入工作表、保存文件等
●如何在工作簿中導航
●如何使用Excel功能區(qū)用戶界面
●如何輸入公式
●如何使用Excel的工作表函數(shù)
●如何給單元格和單元格區(qū)域命名
●如何使用基本的Windows功能,例如文件管理方法和剪貼板的使用
所需的資源
為充分學習本書的知識,應該安裝Excel的完整版。如果想要學習本書中的高級技術(如Excel)與其他Office程序之間的通信,你還需要安裝Office軟件。
雖然本書大部分內(nèi)容都可在Excel前期版本上使用,但還是假定已安裝了Excel2016。如果你計劃開發(fā)用于Excel前期版本的應用程序,還是強烈建議你使用目標客戶所使用的前期版本。
你使用什么版本的Windows并不太重要。只要能運行Windows的計算機系統(tǒng)都沒問題,但最好還是使用內(nèi)存大速度快的機器。因為Excel程序比較大,如果在速度慢內(nèi)存小的系統(tǒng)上使用會令人崩潰。
本書沒有介紹適用于Mac計算機上的Excel版本。
本書約定
請花點時間閱讀本節(jié)內(nèi)容,這里介紹本書使用的一些約定。
Excel命令
Excel使用上下文相關的功能區(qū)系統(tǒng)。頂部的單詞(如“插入”、“視圖”等)稱為“選項卡”。單擊某個選項卡,圖標的功能區(qū)就將顯示最適合當前任務的命令。每個圖標都有一個名稱,通常顯示在該圖標的旁邊或下方。圖標是按組排列的,組名顯示在圖標下方。
本書約定:先指明的是選項卡的名稱,隨后是組的名稱,最后是圖標的名稱。例如,用于處理單元格中自動換行的命令如下所示:
“開始”|“對齊方式”|“自動換行”
單擊第一個選項卡,即“文件”選項卡,將進入一個名為Backstage的新界面。Backstage窗口的左側(cè)有一列命令。為了指明Backstage命令,先使用單詞“文件”,然后是命令名。例如,下面的命令將顯示“Excel選項”對話框:
“文件”|“選項”
VBE命令
VBE是在其中使用VBA代碼的窗口。VBE使用傳統(tǒng)的“菜單和工具欄”界面。下面的命令指單擊“工具”菜單并選中“引用”菜單項:
“工具”|“引用”
鍵盤的約定
需要使用鍵盤來輸入數(shù)據(jù)。此外,使用鍵盤還可以直接操作菜單和對話框,如果雙手已經(jīng)放到鍵盤上,那么這種方法會更方便一些。
輸入
較長的輸入通常以等寬字體顯示在單獨一行中。例如,書中可能提示輸入以下公式:
=VLOOKUP(StockNumber,PriceList,2)
VBA代碼
本書包含許多VBA代碼片段以及完整的過程清單。每個清單以等寬字體顯示,每行代碼占據(jù)單獨一行(筆者直接從VBA模塊中復制這些清單,并把它們粘貼到了自己的字處理程序中)。為使代碼更易于閱讀,書中使用一個或多個制表符進行縮進。縮進是可選的,但確實可以幫助限定一起出現(xiàn)的語句。
當本書中的單獨一行放不下一行代碼時,本書使用標準的VBA續(xù)行符:在一行的結(jié)尾,采用空格后跟下劃線字符的方式表明代碼行延伸到了下一行。例如,下面兩行是一條代碼語句:
columnCount=Application.WorksheetFunction._
CountA(Range("A:A"))+1
可按上面的顯示把代碼輸入到兩行中,或者刪除下劃線字符并把代碼輸入到一行中。
函數(shù)、文件名和命名單元格區(qū)域
Excel的工作表函數(shù)以大寫字母顯示,如“在單元格C20中輸入一個SUM公式”。對于VBA過程名、屬性、方法和對象,本書經(jīng);旌鲜褂么髮懞托懽帜敢员阕x者閱讀這些名稱。
圖標的含義
本書使用一些圖標來引起讀者的注意,告訴讀者這些信息非常重要。
注意使用“注意”圖標來告訴讀者這些信息很重要,也許是有助于讀者掌握隨后任務的概念,或是有助于理解后面資料的一些基礎知識。
提示“提示”圖標指出更有效的工作方式或可能不是很明顯的方法。
示例下載這類圖標表明示例文件可在下載的示例文件包中找到。具體說明參見前言中的“關于下載的示例文件包”一節(jié)。
警告“警告”圖標表明在操作時不小心可能會導致出現(xiàn)問題。
交叉參考這類圖標表明請讀者參閱其他章節(jié)中關于某個主題的詳細信息。
本書的組織結(jié)構(gòu)
本書的章節(jié)分為5個主要部分。
第I部分ExcelVBA基礎知識
第I部分介紹ExcelVBA,為創(chuàng)建和管理Excel子例程和函數(shù)提供編程基礎知識。第1章全面介紹Excel應用開發(fā)方面的各種概念。第2章到第6章討論在進行VBA編程時需要了解的各種知識。第7章則列舉許多有用的示例助你鞏固前面所學的VBA知識點。
第II部分高級VBA技術
第Ⅱ部分涵蓋一些VBA高級編程技術。第8章和第9章討論如何使用VBA來處理透視表和圖表(包括迷你圖)。第10章討論在與其他應用程序(如Word和Outlook)交互時所采用的各種技術。第11章介紹如何處理文件和外部數(shù)據(jù)源。
第III部分操作用戶窗體
該部分的4章內(nèi)容主要介紹自定義對話框(也稱為用戶窗體)。第12章介紹創(chuàng)建自定義用戶窗體的一些內(nèi)置方法。第13章介紹用戶窗體以及可供使用的各種控件。第14章和第15章則列舉從基本到高級的自定義對話框的大量示例。
第IV部分開發(fā)Excel應用程序
該部分講述創(chuàng)建面向用戶的應用程序的重要內(nèi)容。第16章手把手教你創(chuàng)建加載項。第17章和第18章討論如何修改Excel的功能區(qū)和快捷菜單。第19章介紹向應用程序提供在線幫助的幾種不同方法。第20章展示如何開發(fā)面向用戶的應用程序。第21章探討在進行ExcelVBA編程時與兼容性相關的一些信息。
第V部分附錄
第V部分包含了1個附錄。附錄A是一份參考指南,列出作為VBA中關鍵字的所有語句和函數(shù)。
關于下載的示例文件包
本書中討論過的幾乎所有知識都配有示例。可以下載本書中所包含的很多有用示例。
本書的配書網(wǎng)站是www.wiley.com/go/excel2016powerprogramming。
也可登錄www.tupwk.com.cn/downpage下載相關內(nèi)容;蛘邟呙璞緯獾椎亩S碼直接下載。
關于PowerUtilityPakOffer
PowerUtilityPak軟件收集了很多有用的Excel實用程序和許多新的工作表函數(shù)。
你可以花點錢購買該產(chǎn)品的完整VBA源代碼。研究這些代碼是學習一些重要編程技巧的極佳方式。
該軟件作者JohnWalkenbach的網(wǎng)站上還提供了PowerUtilityPak軟件的30天試用版,下載地址為:
http://spreadsheetpage.com
如果覺得該軟件有用,可憑票證購買,購買有優(yōu)惠。
第Ⅰ部分 Excel VBA基礎知識
第1章 電子表格應用開發(fā)入門 3
1.1 關于電子表格應用 3
1.2 應用開發(fā)的步驟 4
1.3 確定用戶的需求 4
1.4 對滿足這些需求的應用
進行規(guī)劃 5
1.5 確定最適用的用戶界面 6
1.5.1 自定義功能區(qū) 7
1.5.2 自定義快捷菜單 7
1.5.3 創(chuàng)建快捷鍵 7
1.5.4 創(chuàng)建自定義對話框 8
1.5.5 在工作表中使用
ActiveX控件 8
1.5.6 開始開發(fā)工作 10
1.6 關注最終用戶 10
1.6.1 測試應用 10
1.6.2 應用的安全問題 11
1.6.3 如何讓應用程序看起來更
簡明美觀 13
1.6.4 創(chuàng)建用戶幫助系統(tǒng) 13
1.6.5 將開發(fā)成果歸檔 14
1.6.6 給用戶發(fā)布應用程序 14
1.6.7 在必要時對應用進行更新 14
1.7 其他開發(fā)問題 14
1.7.1 用戶安裝的Excel版本 15
1.7.2 語言問題 15
1.7.3 系統(tǒng)速度 15
1.7.4 顯示模式 15
第2章 VBA概述 17
2.1 宏錄制器 17
2.1.1 創(chuàng)建你的第一個宏 17
2.1.2 比較宏錄制的絕對模式和
相對模式 20
2.1.3 關于宏錄制的其他概念 24
2.2 Visual Basic編輯器概述 28
2.2.1 了解VBE組件 28
2.2.2 使用工程資源管理器 29
2.2.3 使用代碼窗口 31
2.2.4 自定義VBA環(huán)境 33
2.2.5 “編輯器格式”選項卡 34
2.2.6 “通用”選項卡 35
2.2.7 “可連接的”選項卡 35
2.3 VBA的基礎知識 36
2.3.1 了解對象 36
2.3.2 了解集合 37
2.3.3 了解屬性 37
2.4 使用Range對象 40
2.4.1 找到Range對象的屬性 41
2.4.2 Range屬性 41
2.4.3 Cells屬性 42
2.4.4 Offset屬性 44
2.5 需要記住的基本概念 45
2.6 學習更多信息 46
2.6.1 閱讀本書剩余的章節(jié) 47
2.6.2 讓Excel來幫助編寫宏 47
2.6.3 使用幫助系統(tǒng) 47
2.6.4 使用對象瀏覽器 47
2.6.5 從網(wǎng)上獲取 48
2.6.6 利用用戶論壇 49
2.6.7 訪問專家博客 49
2.6.8 通過YouTube查找視頻 50
2.6.9 通過Microsoft OfficeDev
Center獲取信息 50
2.6.10 解析其他的Excel文件 50
2.6.11 咨詢周圍的Excel人才 50
第3章 VBA編程基礎 51
3.1 VBA語言元素概覽 51
3.2 注釋 53
3.3 變量、數(shù)據(jù)類型和常量 54
3.3.1 定義數(shù)據(jù)類型 55
3.3.2 聲明變量 56
3.3.3 變量的作用域 58
3.3.4 使用常量 61
3.3.5 使用字符串 62
3.3.6 使用日期 62
3.4 賦值語句 63
3.5 數(shù)組 65
3.5.1 聲明數(shù)組 66
3.5.2 聲明多維數(shù)組 66
3.5.3 聲明動態(tài)數(shù)組 66
3.6 對象變量 67
3.7 用戶自定義的數(shù)據(jù)類型 68
3.8 內(nèi)置函數(shù) 69
3.9 處理對象和集合 71
3.9.1 With-End With結(jié)構(gòu) 72
3.9.2 For Each-Next結(jié)構(gòu) 72
3.10 控制代碼的執(zhí)行 74
3.10.1 GoTo語句 74
3.10.2 If-Then結(jié)構(gòu) 75
3.10.3 Select Case結(jié)構(gòu) 78
3.10.4 指令塊的循環(huán) 82
第4章 VBA的子過程 89
4.1 關于過程 89
4.1.1 子過程的聲明 90
4.1.2 過程的作用域 90
4.2 執(zhí)行子過程 91
4.2.1 通過“運行子過程/用戶
窗體”命令執(zhí)行過程 92
4.2.2 從“宏”對話框執(zhí)行過程 92
4.2.3 用Ctrl+快捷鍵組合
執(zhí)行過程 93
4.2.4 從功能區(qū)執(zhí)行過程 94
4.2.5 從自定義快捷菜單中
執(zhí)行過程 94
4.2.6 從另一個過程中執(zhí)行過程 95
4.2.7 通過單擊對象執(zhí)行過程 98
4.2.8 在事件發(fā)生時執(zhí)行過程 99
4.2.9 從“立即窗口”執(zhí)行過程 100
4.3 向過程中傳遞參數(shù) 100
4.4 錯誤處理技術 103
4.4.1 捕獲錯誤 104
4.4.2 錯誤處理示例 105
4.5 使用子過程的實際示例 108
4.5.1 目標 108
4.5.2 工程需求 108
4.5.3 已經(jīng)了解的信息 108
4.5.4 解決方法 109
4.5.5 初步的錄制工作 109
4.5.6 初始設置 111
4.5.7 代碼的編寫 112
4.5.8 排序過程的編寫 112
4.5.9 更多測試 116
4.5.10 修復問題 117
4.5.11 實用程序的可用性 120
4.5.12 對工程進行評估 121
第5章 創(chuàng)建函數(shù)過程 123
5.1 子過程與函數(shù)過程的比較 123
5.2 為什么創(chuàng)建自定義的函數(shù) 124
5.3 自定義函數(shù)示例 124
5.3.1 在工作表中使用函數(shù) 125
5.3.2 在VBA過程中使用函數(shù) 125
5.3.3 分析自定義函數(shù) 126
5.4 函數(shù)過程 128
5.4.1 函數(shù)的作用域 129
5.4.2 執(zhí)行函數(shù)過程 129
5.5 函數(shù)過程的參數(shù) 131
5.6 函數(shù)示例 132
5.6.1 無參數(shù)的函數(shù) 132
5.6.2 帶有一個參數(shù)的函數(shù) 134
5.6.3 帶有兩個參數(shù)的函數(shù) 136
5.6.4 使用數(shù)組作為參數(shù)的函數(shù) 137
5.6.5 帶有可選參數(shù)的函數(shù) 138
5.6.6 返回VBA數(shù)組的函數(shù) 140
5.6.7 返回錯誤值的函數(shù) 142
5.6.8 帶有不定數(shù)量參數(shù)的函數(shù) 144
5.7 模擬Excel的SUM函數(shù) 145
5.8 擴展后的日期函數(shù) 148
5.9 函數(shù)的調(diào)試 149
5.10 使用“插入函數(shù)”對話框 150
5.10.1 使用MacroOptions方法 151
5.10.2 指定函數(shù)類別 152
5.10.3 手動添加函數(shù)說明 153
5.11 使用加載項存儲自定義函數(shù) 154
5.12 使用Windows API 154
5.12.1 Windows API示例 155
5.12.2 確定Windows目錄 155
5.12.3 檢測Shift鍵 157
5.12.4 了解有關API函數(shù)的
更多信息 158
第6章 了解Excel事件 159
6.1 Excel可以監(jiān)視的事件類型 159
6.1.1 了解事件發(fā)生的順序 160
6.1.2 存放事件處理程序的位置 160
6.1.3 禁用事件 161
6.1.4 輸入事件處理代碼 162
6.1.5 使用參數(shù)的事件處理程序 163
6.2 工作簿級別的事件 165
6.2.1 Open事件 165
6.2.2 Activate事件 166
6.2.3 SheetActivate事件 166
6.2.4 NewSheet事件 167
6.2.5 BeforeSave事件 167
6.2.6 Deactivate事件 167
6.2.7 BeforePrint事件 168
6.2.8 BeforeClose事件 169
6.3 檢查工作表事件 171
6.3.1 Change事件 171
6.3.2 監(jiān)視特定單元格區(qū)域的
修改 172
6.3.3 SelectionChange事件 177
6.3.4 BeforeDoubleClick事件 177
6.3.5 BeforeRightClick事件 178
6.4 監(jiān)視應用程序事件 179
6.4.1 啟用應用程序級別的事件 180
6.4.2 確定工作簿何時被打開 180
6.4.3 監(jiān)視應用程序級別的事件 181
6.5 訪問與對象無關聯(lián)的事件 182
6.5.1 OnTime事件 182
6.5.2 OnKey事件 184
第7章 VBA編程示例與技巧 189
7.1 通過示例學習 189
7.2 處理單元格區(qū)域 190
7.2.1 復制單元格區(qū)域 190
7.2.2 移動單元格區(qū)域 191
7.2.3 復制大小可變的
單元格區(qū)域 191
7.2.4 選中或者識別各種類型的
單元格區(qū)域 193
7.2.5 調(diào)整單元格區(qū)域大小 194
7.2.6 提示輸入單元格中的值 195
7.2.7 在下一個空單元格中
輸入一個值 196
7.2.8 暫停宏的運行以便獲得
用戶選中的單元格區(qū)域 197
7.2.9 計算選中單元格的數(shù)目 199
7.2.10 確定選中的單元格
區(qū)域的類型 199
7.2.11 有效地循環(huán)遍歷選中的
單元格區(qū)域 201
7.2.12 刪除所有空行 204
7.2.13 任意次數(shù)地復制行 205
7.2.14 確定單元格區(qū)域是否包含
在另一個單元格區(qū)域內(nèi) 206
7.2.15 確定單元格的數(shù)據(jù)類型 207
7.2.16 讀寫單元格區(qū)域 208
7.2.17 在單元格區(qū)域中寫入值的
更好方法 209
7.2.18 傳遞一維數(shù)組中的內(nèi)容 211
7.2.19 將單元格區(qū)域傳遞給
Variant類型的數(shù)組 211
7.2.20 按數(shù)值選擇單元格 212
7.2.21 復制非連續(xù)的單元格
區(qū)域 213
7.3 處理工作簿和工作表 215
7.3.1 保存所有工作簿 215
7.3.2 保存和關閉所有工作簿 216
7.3.3 隱藏除選區(qū)之外的區(qū)域 216
7.3.4 創(chuàng)建超鏈接內(nèi)容表 217
7.3.5 同步工作表 218
7.4 VBA技巧 219
7.4.1 切換布爾類型的屬性值 219
7.4.2 顯示日期和時間 220
7.4.3 顯示友好時間 222
7.4.4 獲得字體列表 223
7.4.5 對數(shù)組進行排序 224
7.4.6 處理一系列文件 225
7.5 用于代碼中的一些有用函數(shù) 227
7.5.1 FileExists函數(shù) 227
7.5.2 FileNameOnly函數(shù) 227
7.5.3 PathExists函數(shù) 228
7.5.4 RangeNameExists函數(shù) 228
7.5.5 SheetExists函數(shù) 229
7.5.6 WorkbookIsOpen函數(shù) 229
7.5.7 檢索已經(jīng)關閉的
工作簿中的值 230
7.6 一些有用的工作表函數(shù) 231
7.6.1 返回單元格的格式信息 232
7.6.2 會說話的工作表 233
7.6.3 顯示保存或打印文件的
時間 233
7.6.4 理解對象的父對象 234
7.6.5 計算介于兩個值之間的
單元格數(shù)目 235
7.6.6 確定行或列中最后一個
非空的單元格 236
7.6.7 字符串與模式匹配 237
7.6.8 從字符串中提取
第n個元素 238
7.6.9 拼寫出數(shù)字 239
7.6.10 多功能函數(shù) 240
7.6.11 SHEETOFFSET函數(shù) 240
7.6.12 返回所有工作表中的
最大值 241
7.6.13 返回沒有重復隨機整數(shù)
元素的數(shù)組 242
7.6.14 隨機化單元格區(qū)域 244
7.6.15 對單元格區(qū)域進行排序 245
7.7 Windows API調(diào)用 246
7.7.1 理解API聲明 246
7.7.2 確定文件的關聯(lián)性 247
7.7.3 確定默認打印機的信息 248
7.7.4 確定視頻顯示器的信息 249
7.7.5 讀寫注冊表 250
第Ⅱ部分 高級VBA技術
第8章 使用透視表 255
8.1 數(shù)據(jù)透視表示例 255
8.1.1 創(chuàng)建數(shù)據(jù)透視表 256
8.1.2 檢查錄制的數(shù)據(jù)
透視表代碼 257
8.1.3 整理錄制的數(shù)據(jù)
透視表代碼 258
8.2 創(chuàng)建更復雜的數(shù)據(jù)透視表 260
8.2.1 創(chuàng)建數(shù)據(jù)透視表的代碼 261
8.2.2 更復雜數(shù)據(jù)透視表的
工作原理 262
8.3 創(chuàng)建多個數(shù)據(jù)透視表 263
8.4 創(chuàng)建轉(zhuǎn)換的數(shù)據(jù)透視表 266
第9章 使用圖表 269
9.1 關于圖表 269
9.1.1 圖表的位置 269
9.1.2 宏錄制器和圖表 270
9.1.3 Chart對象模型 270
9.2 創(chuàng)建嵌入式圖表 271
9.3 在圖表工作表上創(chuàng)建圖表 273
9.4 修改圖表 273
9.5 使用VBA激活圖表 274
9.6 移動圖表 275
9.7 使用VBA使圖表取消激活 276
9.8 確定圖表是否被激活 276
9.9 從ChartObjects或Charts
集合中刪除圖表 277
9.10 循環(huán)遍歷所有圖表 277
9.11 調(diào)整ChartObjects對象的
大小并對齊 280
9.12 創(chuàng)建大量圖表 281
9.13 導出圖表 283
9.14 修改圖表中使用的數(shù)據(jù) 285
9.14.1 基于活動單元格修改
圖表數(shù)據(jù) 286
9.14.2 用VBA確定圖表中
使用的單元格區(qū)域 287
9.15 使用VBA在圖表上顯示
任意數(shù)據(jù)標簽 289
9.16 在用戶窗體中顯示圖表 292
9.17 理解圖表事件 295
9.17.1 使用圖表事件的一個
示例 295
9.17.2 為嵌入式圖表啟用事件 298
9.17.3 示例:在嵌入式圖表上
使用圖表事件 299
9.18 VBA制圖技巧 301
9.18.1 在整個頁面上打印
嵌入式圖表 301
9.18.2 創(chuàng)建未鏈接的圖表 301
9.18.3 用MouseOver事件
顯示文本 303
9.18.4 滾動圖表 305
9.19 使用迷你圖 307
第10章 與其他應用程序的交互 311
10.1 了解Microsoft Office
自動化 311
10.1.1 了解綁定概念 311
10.1.2 一個簡單的自動化示例 313
10.2 從Excel中自動執(zhí)行
Access任務 314
10.2.1 從Excel中運行
Access查詢 314
10.2.2 從Excel運行Access宏 315
10.3 從Excel自動執(zhí)行Word任務 316
10.3.1 將Excel數(shù)據(jù)傳遞給
Word文檔 316
10.3.2 模擬Word文檔的郵件
合并功能 317
10.4 從Excel自動執(zhí)行
PowerPoint任務 319
10.4.1 將Excel數(shù)據(jù)發(fā)送到
PowerPoint演示文稿中 319
10.4.2 將所有Excel圖表發(fā)送到
PowerPoint演示文稿中 321
10.4.3 將工作表轉(zhuǎn)換成PowerPoint
演示文稿 322
10.5 從Excel自動執(zhí)行Outlook
任務 323
10.5.1 以附件形式發(fā)送活動
工作簿 324
10.5.2 以附件形式發(fā)送指定
單元格區(qū)域 324
10.5.3 以附件形式發(fā)送指定的
單個工作表 326
10.5.4 發(fā)送給聯(lián)系人列表中的
所有Email地址 327
10.6 從Excel啟動其他應用程序 328
10.6.1 使用VBA的Shell函數(shù) 328
10.6.2 使用Windows的ShellExecute
API函數(shù) 330
10.6.3 使用AppActivate語句 331
10.6.4 激活“控制面板”對話框 332
第11章 處理外部數(shù)據(jù)和文件 335
11.1 處理外部數(shù)據(jù)連接 335
11.1.1 手動創(chuàng)建連接 335
11.1.2 手動編輯數(shù)據(jù)連接 338
11.1.3 使用VBA創(chuàng)建動態(tài)連接 339
11.1.4 遍歷工作簿中的所有連接 340
11.2 使用ADO和VBA來提取
外部數(shù)據(jù) 342
11.2.1 連接字符串 342
11.2.2 聲明記錄集 343
11.2.3 引用ADO對象庫 344
11.2.4 以編程方式使用ADO
連接Access 344
11.2.5 對活動工作簿使用ADO 345
11.3 處理文本文件 348
11.3.1 打開文本文件 348
11.3.2 讀取文本文件 349
11.3.3 編寫文本文件 349
11.3.4 獲取文件序號 349
11.3.5 確定或設置文件位置 349
11.3.6 讀寫語句 350
11.4 文本文件操作示例 350
11.4.1 導入文本文件的數(shù)據(jù) 350
11.4.2 將單元格區(qū)域的數(shù)據(jù)
導出到文本文件 351
11.4.3 將文本文件的內(nèi)容導出到
單元格區(qū)域 352
11.4.4 記錄Excel日志的用法 353
11.4.5 篩選文本文件 354
11.5 執(zhí)行常見的文件操作 354
11.5.1 使用與VBA文件
相關的指令 355
11.5.2 使用FileSystemObject
對象 359
11.6 壓縮和解壓縮文件 361
11.6.1 壓縮文件 362
11.6.2 解壓縮文件 363
第Ⅲ部分 操作用戶窗體
第12章 使用自定義對話框 367
12.1 創(chuàng)建用戶窗體之前需要
了解的內(nèi)容 367
12.2 使用輸入框 367
12.2.1 VBA的InputBox函數(shù) 368
12.2.2 Excel的InputBox方法 370
12.3 VBA的MsgBox函數(shù) 373
12.4 Excel的GetOpenFilename
方法 377
12.5 Excel的GetSaveAsFilename
方法 380
12.6 提示輸入目錄名稱 380
12.7 顯示Excel的內(nèi)置對話框 381
12.8 顯示數(shù)據(jù)記錄單 383
12.8.1 使得數(shù)據(jù)記錄單變得
可以訪問 383
12.8.2 通過使用VBA來顯示
數(shù)據(jù)記錄單 384
第13章 用戶窗體概述 385
13.1 Excel如何處理自定義
對話框 385
13.2 插入新的用戶窗體 386
13.3 向用戶窗體中添加控件 386
13.4 “工具箱”中的控件 387
13.4.1 復選框 387
13.4.2 組合框 388
13.4.3 命令按鈕 388
13.4.4 框架 388
13.4.5 圖像 389
13.4.6 標簽 389
13.4.7 列表框 389
13.4.8 多頁 389
13.4.9 選項按鈕 389
13.4.10 RefEdit 389
13.4.11 滾動條 390
13.4.12 數(shù)值調(diào)節(jié)鈕 390
13.4.13 TabStrip 390
13.4.14 文本框 390
13.4.15 切換按鈕 390
13.5 調(diào)整用戶窗體的控件 391
13.6 調(diào)整控件的屬性 393
13.6.1 使用“屬性”窗口 393
13.6.2 共同屬性 394
13.6.3 滿足鍵盤用戶的需求 396
13.7 顯示用戶窗體 397
13.7.1 調(diào)整顯示位置 398
13.7.2 顯示非模態(tài)的用戶窗體 398
13.7.3 顯示基于變量的用戶窗體 398
13.7.4 加載用戶窗體 399
13.7.5 關于事件處理程序 399
13.8 關閉用戶窗體 399
13.9 創(chuàng)建用戶窗體的示例 400
13.9.1 創(chuàng)建用戶窗體 401
13.9.2 編寫代碼顯示對話框 403
13.9.3 測試對話框 404
13.9.4 添加事件處理程序 405
13.9.5 完成對話框 406
13.10 理解用戶窗體的事件 407
13.10.1 了解事件 407
13.10.2 用戶窗體的事件 408
13.10.3 數(shù)值調(diào)節(jié)鈕的事件 408
13.10.4 數(shù)值調(diào)節(jié)鈕與文本框
配套使用 410
13.11 引用用戶窗體的控件 412
13.12 自定義“工具箱” 413
13.12.1 在“工具箱”中添加新頁 413
13.12.2 自定義或組合控件 413
13.12.3 添加新的ActiveX控件 415
13.13 創(chuàng)建用戶窗體的模板 415
13.14 用戶窗體問題檢測列表 416
第14章 用戶窗體示例 417
14.1 創(chuàng)建用戶窗體式菜單 417
14.1.1 在用戶窗體中使用
命令按鈕 417
14.1.2 在用戶窗體中使用
列表框 418
14.2 從用戶窗體選中單元格區(qū)域 419
14.3 創(chuàng)建歡迎界面 421
14.4 禁用用戶窗體的關閉按鈕 423
14.5 改變用戶窗體的大小 424
14.6 在用戶窗體中縮放和滾動
工作表 425
14.7 列表框技巧 427
14.7.1 向列表框控件中添加
條目 428
14.7.2 確定列表框中選中的
條目 432
14.7.3 確定列表框中的多個
選中條目 433
14.7.4 單個列表框中的多個
列表 434
14.7.5 列表框條目的轉(zhuǎn)移 435
14.7.6 在列表框中移動條目 436
14.7.7 使用多列的列表框控件 438
14.7.8 使用列表框選中
工作表中的行 440
14.7.9 使用列表框激活工作表 442
14.7.10 通過文本框來篩選
列表框 444
14.8 在用戶窗體中使用多頁控件 446
14.9 使用外部控件 448
14.10 使標簽動畫化 450
第15章 高級用戶窗體技術 453
15.1 非模態(tài)對話框 453
15.2 顯示進度條 457
15.2.1 創(chuàng)建獨立的進度條 458
15.2.2 集成到用戶窗體中的
進度條 461
15.2.3 創(chuàng)建非圖形化進度條 465
15.3 創(chuàng)建向?qū)?467
15.3.1 為向?qū)гO置多頁控件 468
15.3.2 在向?qū)в脩舸绑w中添加
按鈕 468
15.3.3 編寫向?qū)О粹o的程序 468
15.3.4 編寫向?qū)е械南嚓P代碼 470
15.3.5 使用向?qū)?zhí)行任務 471
15.4 模仿MsgBox函數(shù) 472
15.4.1 模仿MsgBox函數(shù):
MyMsgBox函數(shù)的代碼 473
15.4.2 MyMsgBox函數(shù)的
工作原理 474
15.4.3 使用MyMsgBox函數(shù) 476
15.5 帶有可移動控件的用戶窗體 476
15.6 沒有標題欄的用戶窗體 477
15.7 使用用戶窗體模擬工具欄 479
15.8 使用用戶窗體來模仿
任務面板 481
15.9 可調(diào)整大小的用戶窗體 482
15.10 用一個事件處理程序處理
多個用戶窗體控件 485
15.11 在用戶窗體中選擇顏色 488
15.12 在用戶窗體中顯示圖表 490
15.12.1 將圖表保存為GIF文件 491
15.12.2 更改圖像控件的Picture
屬性 491
15.13 使用戶窗體半透明 491
15.14 用戶窗體上的數(shù)字推盤 493
15.15 用戶窗體上的電動撲克 494
第Ⅳ部分 開發(fā)Excel應用程序
第16章 創(chuàng)建和使用加載項 497
16.1 什么是加載項 497
16.1.1 加載項與標準工作簿的
比較 497
16.1.2 創(chuàng)建加載項的原因 498
16.2 理解Excel的加載項管理器 500
16.3 創(chuàng)建加載項 501
16.4 加載項示例 502
16.4.1 為加載項示例添加描述
信息 503
16.4.2 創(chuàng)建加載項 503
16.4.3 安裝加載項 504
16.4.4 測試加載項 505
16.4.5 發(fā)布加載項 505
16.4.6 修改加載項 505
16.5 比較XLAM和XLSM文件 506
16.5.1 XLAM文件中的VBA
集合成員 506
16.5.2 XLSM和XLAM文件的
可見性 507
16.5.3 XLSM和XLAM文件的
工作表和圖表工作表 507
16.5.4 訪問加載項中的VBA
過程 508
16.6 用VBA操作加載項 511
16.6.1 向AddIns集合中添加項 511
16.6.2 從AddIns集合中刪除項 512
16.6.3 AddIn對象屬性 513
16.6.4 作為工作簿訪問加載項 516
16.6.5 AddIn對象事件 516
16.7 優(yōu)化加載項的性能 516
16.8 加載項的特殊問題 517
16.8.1 確保加載項已經(jīng)安裝 517
16.8.2 從加載項中引用其他
文件 519
16.8.3 為加載項檢測適用的
Excel版本 519
第17章 使用功能區(qū) 521
17.1 功能區(qū)基礎 521
17.2 自定義功能區(qū) 522
17.2.1 向功能區(qū)中添加按鈕 523
17.2.2 向快速訪問工具欄中
添加按鈕 525
17.2.3 自定義功能區(qū)的局限性 526
17.3 創(chuàng)建自定義的功能區(qū) 527
17.3.1 將按鈕添加到現(xiàn)有的
選項卡中 527
17.3.2 向已有的選項卡中添加
復選框 532
17.3.3 功能區(qū)控件演示 535
17.3.4 dynamicMenu控件示例 542
17.3.5 關于自定義功能區(qū)的
其他內(nèi)容 544
17.4 VBA和功能區(qū) 546
17.4.1 訪問功能區(qū)控件 546
17.4.2 使用功能區(qū) 546
17.4.3 激活選項卡 548
17.5 創(chuàng)建老式工具欄 549
17.5.1 Excel 2007及后續(xù)版本中
老式工具欄的局限性 549
17.5.2 創(chuàng)建工具欄的代碼 549
第18章 使用快捷菜單 553
18.1 命令欄簡介 553
18.1.1 命令欄的類型 553
18.1.2 列出快捷菜單 554
18.1.3 引用命令欄 555
18.1.4 引用命令欄中的控件 555
18.1.5 命令欄控件的屬性 557
18.1.6 顯示所有的快捷菜單項 557
18.2 使用VBA自定義快捷菜單 559
18.2.1 快捷菜單和單文檔界面 559
18.2.2 重置快捷菜單 561
18.2.3 禁用快捷菜單 562
18.2.4 禁用快捷菜單項 562
18.2.5 向“單元格”快捷菜單中
添加一個新項 563
18.2.6 向快捷菜單添加一個子
菜單 565
18.2.7 將快捷菜單限制到單個
工作簿 567
18.3 快捷菜單與事件 567
18.3.1 自動添加和刪除菜單 568
18.3.2 禁用或隱藏快捷菜單項 568
18.3.3 創(chuàng)建一個上下文相關的
快捷菜單 568
第19章 為應用程序提供幫助 571
19.1 Excel應用程序的“幫助” 571
19.2 使用Excel組件的幫助系統(tǒng) 573
19.2.1 為幫助系統(tǒng)使用
單元格批注 573
19.2.2 為幫助系統(tǒng)使用文本框 574
19.2.3 使用工作表來顯示
幫助文本 575
19.2.4 在用戶窗體中顯示
幫助信息 576
19.3 在Web瀏覽器中顯示
“幫助” 580
19.3.1 使用HTML文件 580
19.3.2 使用一個MHTML文件 581
19.4 使用HTML幫助系統(tǒng) 582
19.4.1 使用Help方法來顯示
HTML幫助信息 585
19.4.2 將“幫助”文件與應用
程序相關聯(lián) 585
19.4.3 將一個幫助主題與一個
VBA函數(shù)相關聯(lián) 586
第20章 理解類模塊 589
20.1 什么是類模塊 589
20.1.1 內(nèi)置的類模塊 590
20.1.2 自定義類模塊 590
20.2 創(chuàng)建NumLock類 591
20.2.1 插入類模塊 591
20.2.2 給類模塊添加VBA代碼 592
20.2.3 使用CNumLock類 593
20.3 屬性、方法和事件編程 594
20.3.1 對象屬性編程 594
20.3.2 對象的方法編程 595
20.3.3 類模塊事件 596
20.4 QueryTable事件 596
20.5 創(chuàng)建存儲類的類 599
20.5.1 創(chuàng)建CSalesRep和
CSalesReps類 599
20.5.2 創(chuàng)建CInvoice和
CInvoices類 601
20.5.3 用對象填充父類 602
20.5.4 計算傭金 603
第21章 兼容性問題 605
21.1 什么是兼容性 605
21.2 兼容性問題的類型 606
21.3 避免使用新功能 607
21.4 在Mac機器上是否可用 608
21.5 處理64位Excel 609
21.6 創(chuàng)建一個國際化應用程序 610
21.6.1 多語言應用程序 611
21.6.2 VBA語言的考慮 612
21.6.3 使用本地屬性 612
21.6.4 系統(tǒng)設置識別 613
21.6.5 日期和時間設置 615
第Ⅴ部分 附錄
附錄A VBA語句和函數(shù)引用 619