VSTO 開發中級教程

劉永富

  • 出版商: 清華大學
  • 出版日期: 2020-01-01
  • 售價: $594
  • 貴賓價: 9.5$564
  • 語言: 簡體中文
  • ISBN: 7302537763
  • ISBN-13: 9787302537762
  • 立即出貨

  • VSTO 開發中級教程-preview-1
  • VSTO 開發中級教程-preview-2
  • VSTO 開發中級教程-preview-3
VSTO 開發中級教程-preview-1

買這商品的人也買了...

商品描述

本書由資深軟件開發專家根據自己十餘年VBA開發經驗編寫而成,深入闡釋VSTO開發。全書內容體系完善,知識點高階,案例豐富,讓讀者身臨其境體會VSTO編程策略和魅力。 全書共20章,全面介紹VSTO開發的環境要求和配置、VSTO項目的概念和實現方法,主要內容包括Visual Studio的安裝和使用、VB.NET語言基礎和進階技術、VSTO外接程序項目的開發、使用功能區可視化設計器以及Ribbon XML進行customUI設計、自定義任務窗格、文檔自定義項的開發、Excel-DNA開發自定義公式和加載項等核心技術。 本書內容由淺入深、難易結合,兼顧不同基礎和水平的讀者。採用VB.NET語言作為VSTO的開發語言,特別適合於具有VBA、VB6編程基礎的人員學習和研究。由於C#和VB.NET同屬.NET語言,因此本書也適合使用C#進行VSTO開發的人員參考學習。 另外,本書使用的案例內容豐富、重點突出,所處理的對象是Windows用戶經常遇到的問題,因此普適性非常強,從事其他編程語言的開發人員亦可將本書作為參考書。

作者簡介

資深軟件開發專家多年開發經驗結晶,系統且深入闡釋VSTO開發涉及的工具、方法和實踐
系統全面,易學易用。《數據庫開發技術標準教程》構築了面向實際應用的知識體系,體現了理論的適度性、實踐的指導性和應用的典型性,對難點和重點做了詳細講解和特別提示。
緊貼實際,案例導航。每章根據所講內容配備精彩案例和課後練習,讀者可邊學邊練,既可全面了解數據庫開發的各種方案,又可快速掌握基於實際應用的項目和任務。

目錄大綱

第1章 VSTO開發綜述 1 
1.1 Office開發方式的選擇 ? 1 
1.1.1 VBA ? 2 
1.1.2 VB6 ? 2 
1.1.3 VSTO ? 2 
1.1.4 用戶自定義函數的開發 ? 3 
1.2 VB.NET語言概述 ? 4 
1.2.1 VB.NET和 VB6的關係 ? 4 
1.2.2 VB.NET和 VB6程序結構的差別 4 
1.3 Office界面方案的選擇 ? 5 
1.3.1 customUI設計 6 
1.3.2 工具欄設計 6 
1.3.3 任務窗格設計 ? 7 
1.4 VSTO開發環境的選擇 ? 8 
1.5 小結 8

第2章 Visual Studio的安裝和使用 ? 9 
2.1 Visual Studio 2017的安裝 ? 9 
2.1.1 安裝引導程序的下載 9 
2.1.2 系統需求和安裝環境確認 ?11 
2.1.3 Visual Studio 2007 Professional的安裝 11 
2.1.4 Visual Studio的啟動 15 
2.1.5 Visual Studio的修復和卸載 ?15 
2.2 項目管理 ?16 
2.2.1 創建 VSTO項目 ?17 
2.2.2 項目模板 18 
2.2.3 創建時保存新項目 19 
2.2.4 與項目有關的快捷鍵 ?20 
2.3 Visual Studio的選項設置 ?20 
2.3.1 更改默認開發語言 21 
2.3.2 更改 Visual Studio界面語言 22 
2.3.3 更改代碼風格 23 
2.4 代碼編寫技巧 ?24 
2.4.1 代碼的自動完成 ?24 
2.4.2 智能提示 24 
2.4.3 查看定義 24 
2.4.4 變量的重命名 25 
2.4.5 查找和替換 ?26 
2.5 最常用的對話框 27 
2.6 小結 ?27

第3章 VB.NET語言基礎 29 
3.1 VB.NET程序的編譯和運行 30 
3.1.1 使用 vbc.exe編譯程序 ?30
3.1.2 第一個 VB.NET程序 ?31 
3.1.3 使用 Visual Studio進行 VB.NET編程 ?32 
3.2 VB.NET語法基礎 34 
3.2.1 變量、常量和賦值 35 
3.2.2 字符和字符串 36 
3.2.3 日期時間類型 36 
3.2.4 整數類型 40 
3.2.5 布爾和邏輯運算 ?41 
3.2.6 新增賦值運算符 ?43 
3.2.7 信息輸入和結果輸出 ?43 
3.2.8 輸入和輸出對話框 45 
3.3 類型的判斷和轉換 ?49 
3.3.1 編譯選項設置 49 
3.3.2 判斷數據、變量的類型 50 
3.3.3 類型轉換 51 
3.4 String.Format方法 52 
3.4.1 對號入座 52 
3.4.2 格式化數字 ?53 
3.4.3 格式化日期和時間 55 
3.5 ToString方法 56 
3.6 數組 ?56 
3.6.1 一維數組 57 
3.6.2 數組的排序和倒序 60 
3.6.3 數組的去重 ?60 
3.6.4 數組統計 61 
3.6.5 兩個數組的集合運算 ?61 
3.6.6 一維數組與字符串相互轉換 62 
3.6.7 二維數組 63 
3.6.8 數組維數的判斷 ?63 
3.7 條件選擇 ?64 
3.7.1 If...Else結構 64 
3.7.2 Select...Case結構 65 
3.8 循環結構 ?66 
3.8.1 Do...Loop循環 ?66 
3.8.2 While循環 67 
3.8.3 For循環 ?67 
3.8.4 For...Each循環 ?68 
3.9 匿名用法 ?69 
3.9.1 匿名類 ?69 
3.9.2 匿名過程 70 
3.9.3 匿名函數 71 
3.10 List泛型類 ?71 
3.10.1 泛型類與數組的轉換 72 
3.10.2 數組的過濾?72 
3.10.3 泛型類的過濾 ?73 
3.11 異常處理 73 
3.11.1 異常原因分析 ?74 
3.11.2 異常分類處理 ?74 
3.12 項目組織 76 
3.12.1 項目中添加文件 76 
3.12.2 調用 Module中的內容 77 
3.12.3 類的創建和使用 78 
3.13 項目的引用管理 ?79 
3.13.1 外部引用的添加和移除 ?79 
3.13.2 使用 Imports指令 81 
3.14 小結 ?82

第4章 VB.NET窗體應用程序 83 
4.1 窗體 ?83 
4.1.1 窗體的創建和顯示 83 
4.1.2 窗體的添加 ?85 
4.1.3 自動創建窗體 87 
4.1.4 窗體的隱藏和卸載 88 
4.2 控件的屬性 89 
4.2.1 常規屬性設置 89 
4.2.2 改變控件的位置和大小 91 
4.2.3 通過 Anchor屬性設置控件基準點 ?92 
4.2.4 通過 Dock屬性設置控件的擴展 93 
4.2.5 使用 Splitter控件手動調整控件分佈 94 
4.3 控件的事件 95 
4.3.1 使用 WithEvents為控件添加事件 95 
4.3.2 使用 AddHandler和RemoveHandler添加和移除事件 ?97 
4.3.3 按鍵事件 100 
4.3.4 窗體的 KeyPreview屬性 ? 101 
4.3.5 鼠標單擊事件 102 
4.3.6 調用事件過程 103 
4.4 專業窗體設計 ? 104 
4.4.1 主菜單的設計 104 
4.4.2 打開和保存對話框 105 
4.4.3 創建右鍵快捷菜單 107 
4.4.4 創建工具欄 ? 109 
4.4.5 創建狀態欄 ? 110 
4.5 自動添加和刪除控件 111 
4.5.1 自動添加控件 111 
4.5.2 自動刪除控件 112 
4.5.3 自動添加控件數組 112 
4.6 小結 ? 114

第5章 VB.NET控件技術 115 
5.1 文本編輯類控件 115 
5.1.1 TextBox 115 
5.1.2 RichTextBox 116 
5.1.3 MaskedTextBox 117 
5.2 標籤類控件 118 
5.2.1 Label ? 119 
5.2.2 LinkLabel ? 119 
5.3 選擇類控件 120 
5.3.1 CheckBox ? 120
5.3.2 RadioButton 121 
5.4 列表條目類控件 121 
5.4.1 ComboBox 121 
5.4.2 ListBox 122 
5.4.3 CheckedListBox 124 
5.5 數值調節類控件 125 
5.5.1 HScrollBar和 VScrollBar 125 
5.5.2 TrackBar ? 126 
5.5.3 NumericUpDown 126 
5.5.4 DomainUpDown ? 127 
5.6 狀態提示類控件 128 
5.6.1 NotifyIcon ? 128
5.6.2 ProgressBar ? 128 
5.6.3 ToolTip 129 
5.7 圖片類控件 130 
5.7.1 PictureBox 130 
5.7.2 ImageList 130 
5.8 日期時間類控件 132 
5.8.1 DateTimePicker 132 
5.8.2 Timer ? 133 
5.8.3 Stopwatch對象? 134 
5.9 其他控件 ? 135 
5.9.1 WebBrowser 135 
5.9.2 WindowsMediaPlayer ? 136 
5.9.3 PropertyGrid 137 
5.9.4 FileSystemWatcher 139 
5.10 表格控件 DataGridView 141 
5.10.1 顯示Access數據庫中的查詢結果 141 
5.10.2 顯示DataTable對像中的數據 ? 143 
5.10.3 處理選中的行 ? 144 
5.10.4 導出DataGridView數據到 Excel ? 145 
5.11 列表控件 ListView 146 
5.11.1 顯示ADODB查詢 Access的結果 148 
5.11.2 處理選中的行 ? 149 
5.11.3 導出 ListView數據到 Excel 150 
5.12 樹狀控件 TreeView ? 151 
5.12.1 節點的添加和移除 ? 152 
5.12.2 處理選中的節點 154 
5.12.3 節點的遍歷 154 
5.13 選項卡控件 TabControl 155 
5.13.1 編輯選項卡 155 
5.13.2 處理選中的選項卡 ? 156 
5.13.3 顯示和隱藏選項卡 ? 157 
5.13.4 動態增刪選項卡 158 
5.13.5 遍歷選項卡 158 
5.14 圖表控件 Chart 159 
5.14.1 圖表的數據源 ? 160 
5.14.2 圖表的標題 164 
5.14.3 圖表的圖例 165 
5.14.4 數據系列 166 
5.14.5 圖表區域 167 
5.15 小結 ? 169

第6章 VB.NET GDI+編程基礎 170 
6.1 圖形對象 ? 170 
6.1.1 繪圖方法 171 
6.1.2 坐標系 ? 171 
6.2 結構數組 ? 172 
6.2.1 畫筆 172 
6.2.2 畫刷 173 
6.2.3 點和點數組 ? 173 
6.2.4 矩形框和矩形框數組 ? 173 
6.3 繪圖實例分析 ? 174 
6.3.1 直線、多義線、多邊形的繪製 174 
6.3.2 矩形的繪製 ? 175 
6.3.3 橢圓、弧線、扇形的繪製 ? 176 
6.3.4 實心填充圖形的繪製 ? 177 
6.3.5 文字的繪製 ? 178 
6.3.6 利用 Paint事件自動重繪 ? 179 
6.4 坐標系變換 180 
6.4.1 坐標系平移 ? 180 
6.4.2 坐標系旋轉 ? 181 
6.4.3 坐標系縮放 ? 181 
6.5 小結 ? 182

第7章 VB.NET進階技術 183 
7.1 使用 StringBuilder 183 
7.1.1 追加字符串 ? 184 
7.1.2 插入、移除和替換操作 185 
7.2 使用字典 ? 186 
7.2.1 利用字典去除重複項 ? 186 
7.2.2 利用字典實現查詢功能 187 
7.2.3 字典的遍歷 ? 188 
7.3 使用哈希表 189 
7.3.1 添加和移除鍵值對 189 
7.3.2 遍歷鍵值對 ? 190 
7.4 使用正則表達式 190 
7.4.1 驗證 191 
7.4.2 查找 192 
7.4.3 替換 193 
7.4.4 分隔 194 
7.4.5 正則表達式選項 ? 194 
7.4.6 直接使用正則表達式 ? 195 
7.4.7 分組 196 
7.5 目錄和文件操作 197
7.5.1 使用 DriveInfo獲取磁盤驅動器
7.5.2 使用 Directory.GetDirectories獲取子文件夾 199 
7.5.3 使用 Directory.GetFiles獲取文件夾下所有文件 200 
7.5.4 使用 DirectoryInfo獲取文件夾信息 200 
7.5.5 使用 FileInfo獲取文件信息 ? 200 
7.5.6 使用 Path進行路徑操作 ? 201 
7.5.7 Directory類的方法 201 
7.5.8 File類的方法 ? 202 
7.6 文本文件的讀寫 202 
7.6.1 讀取文件內容 202 
7.6.2 寫入和追加內容到文本文件 204 
7.6.3 使用 StreamWriter和 StreamReader讀寫文本文件 204 
7.7 MD5加密 205 
7.7.1 字符串的 MD5加密 206 
7.7.2 文件的 MD5計算 ? 206 
7.8 GUID的生成 207 
7.9 XML文件的讀寫 ? 208 
7.9.1 使用 XMLWriter創建 XML文件 ? 209 
7.9.2 使用 XMLReader讀取 XML內容 ? 211 
7.9.3 使用 XML DOM創建 XML ? 211 
7.9.4 使用 XML DOM讀取 XML文件 ? 213 
7.10 使用 API函數 ? 213 
7.10.1 API函數的聲明 214 
7.10.2 API結構類型的聲明 214 
7.10.3 API常量的聲明 215 
7.10.4 句柄、類名和標題 ? 215 
7.10.5 修改窗口和控件的文字 ? 216 
7.11 發送郵件 218 
7.11.1 啟用郵箱的 SMTP服務 ? 218 
7.11.2 使用 CDO ? 219 
7.11.3 使用 Net.Mail ? 221 
7.12 讀寫註冊表 ? 223 
7.12.1 認識註冊表的結構 ? 223 
7.12.2 RegistryKey對象? 224 
7.12.3 打開子項 225 
7.12.4 獲取所有鍵值信息 ? 227 
7.12.5 獲取所有子項 ? 227 
7.12.6 創建子項 229 
7.12.7 修改和刪除鍵值 229 
7.12.8 刪除子項 230 
7.13 操作進程 230 
7.13.1 創建進程 231 
7.13.2 查看進程 232 
7.13.3 結束進程 233 
7.13.4 進程退出事件 ? 234 
7.14 類庫項目的創建和調用 234 
7.14.1 被 VB.NET程序調用的類庫項目 235 
7.14.2 被 VBA程序調用的類庫項目 239 
7.15 小結 ? 243

第8章 VB.NET操作 Office對象 244 
8.1 操作 Excel應用程序對象 ? 244 
8.1.1 獲取正在運行的 Excel 245 
8.1.2 創建 Excel應用程序對象 246 
8.1.3 調用 Excel工作表函數 ? 247 
8.1.4 調用 VBA中的過程和函數 247 
8.1.5 使用單元格選擇對話框 248 
8.2 操作 Excel工作簿 248 
8.2.1 工作簿的新建和保存 ? 248 
8.2.2 工作簿的打開和關閉 ? 249 
8.3 操作 Excel工作表 249 
8.3.1 工作表的插入和刪除 ? 249 
8.3.2 工作表的移動和復制 ? 250 
8.4 操作 Excel單元格 250 
8.4.1 單元格的遍歷 250 
8.4.2 單元格接收一維數組 ? 251 
8.4.3 單元格接收二維數組 ? 251 
8.4.4 數組接收單元格 ? 252 
8.5 處理 Excel中的事件 ? 253 
8.5.1 使用 WithEvents創建 Excel事件 253 
8.5.2 使用 AddHandler和 RemoveHandler處理 Excel事件 254 
8.6 操作其他 Office對象 257 
8.6.1 自定義 Office工具欄 ? 257 
8.6.2 文件選擇對話框 ? 259 
8.6.3 操作 VBE ? 261 
8.7 ADO.NET操作 Access數據庫 ? 263 
8.7.1 連接數據庫 ? 264 
8.7.2 增加記錄 265 
8.7.3 刪除記錄 267 
8.7.4 更新記錄 267 
8.7.5 返回標量 Select查詢 267 
8.7.6 遍歷結果記錄集 ? 267 
8.7.7 生成 DataTable對象 268 
8.7.8 斷開數據庫 ? 269 
8.8 小結 ? 270

第9章 VSTO外接程序 ? 271 
9.1 VSTO外接程序與 COM加載項 ? 271 
9.2 開發環境配置 ? 272 
9.3 Office主互操作程序集 273 
9.3.1 PIA的副本 ? 273 
9.3.2 添加其他 Office組件的引用 275 
9.4 創建 VSTO外接程序項目 276 
9.5 外接程序項目的調試 279 
9.6 Visual Studio 2010 Tools for Office Runtime ? 282 
9.7 VSTO外接程序項目中的引用和命名空間 ? 283 
9.7.1 Excel對像類型 283 
9.7.2 自定義 Office界面方面的命名空間 286 
9.7.3 Excel的 VSTO對像類型 287 
9.7.4 Office對像類型 288 
9.8 COM加載項與註冊表的關係 289 
9.9 訪問宿主應用程序的對象 291 
9.9.1 調用 VBA中的過程和函數 292 
9.9.2 自動斷開 COM加載項 ? 292 
9.10 VBA調用 VSTO中的過程和函數 292 
9.11 外接程序項目允許包含的內容 ? 294 
9.12 小結 ? 294

第10章 使用功能區可視化設計器 ? 295 
10.1 可視化設計器的基本用法 ? 295 
10.1.1 在內置選項卡中定制 296 
10.1.2 自定義新選項卡 300 
10.1.3 Group中加入 DialogBoxLauncher 302 
10.2 可視化設計器的文件構成 ? 303 
10.2.1 查看可視化設計器源文件 304 
10.2.2 限制控件標題的自動換行 305 
10.2.3 可視化設計器的事件文件 306 
10.3 可視化設計器對像模型 306 
10.3.1 OfficeMenu 307 
10.3.2 功能區控件 309 
10.3.3 Button 309 
10.3.4 通用屬性 310 
10.3.5 EditBox 310 
10.3.6 CheckBox和 ToggleButton ? 311 
10.3.7 ComboBox和 DropDown ? 312 
10.3.8 Gallery ? 314 
10.3.9 Menu、SplitButton和 Separator? 316 
10.4 CreateRibbonExtensibilityObject函數 317 
10.4.1 選擇性加載指定的可視化設計器 ? 318 
10.4.2 使用代碼自動添加和移除功能區控件 319 
10.5 操作運行時的可視化設計器 323 
10.5.1 利用 IRibbonUI對象激活選項卡 ? 323 
10.5.2 遍歷和讀寫功能區控件 ? 323 
10.6 修改可視化設計器的默認模板 ? 324 
10.6.1 內置選項卡改為自定義選項卡 ? 325 
10.6.2 移除默認的 Group1 326 
10.7 小結 ? 326

第11章 使用 XML實現 customUI 327 
11.1 Ribbon XML概述 ? 327 
11.1.1 可以定制的場所 328 
11.1.2 使用方式 ? 328 
11.2 VSTO項目中實現 Ribbon XML 329 
11.2.1 創建 Ribbon類 ? 329 
11.2.2 重寫 CreateRibbonExtensibility -Object函數 ? 330 
11.3 GetCustomUI函數 330 
11.3.1 RibbonID參數 331 
11.3.2 回調函數 ? 333 
11.3.3 IRibbonUI對象 ? 334 
11.3.4 Ribbon XML代碼的返回方式 335 
11.4 Ribbon XML設計實例分步講解 ? 336 
11.4.1 使用類創建 Ribbon接口 336 
11.4.2 回調函數的查詢 340 
11.4.3 使用 Visual Studio的 XML編輯器 341 
11.4.4 使用外部 XML文件 ? 344 
11.4.5 動態生成 XML代碼 ? 346 
11.5 其他控件和回調處理 ? 348 
11.5.1 處理以 on開頭的回調函數 348 
11.5.2 處理以 get開頭的回調函數 351 
11.6 使用自定義圖標 ? 354 
11.6.1 loadImage-image 354 
11.6.2 getImage ? 358 
11.7 小結 363

第12章 自定義任務窗格 ? 364 
12.1 創建任務窗格 364 
12.2 處理任務窗格的可見性 367 
12.3 處理任務窗格的停靠位置 ? 368 
12.4 任務窗格操作 Office對象 ? 369 
12.5 使用任務窗格的事件 ? 370 
12.5.1 任務窗格的可見性同步 customUI控件 370 
12.5.2 通過任務窗格的停靠位置改變控件佈局 373 
12.6 處理新窗口的任務窗格 375 
12.7 任務窗格中加入 WPF用戶控件 ? 379 
12.8 小結 ? 384 

第13章 VSTO開發項目實戰 385 
13.1 Excel外接程序開發:數組公式​​的自動擴展 386 
13.2 Word外接程序開發:表格內容自動匯總工具 389 
13.3 PowerPoint外接程序開發:幻燈片導出為圖片 391 
13.4 Outlook外接程序開發:來信自動執行任務 395 
13.5 小結 ? 398

第14章 VSTO外接程序的打包與發布 ? 399 
14.1 簡單發布 399 
14.1.1 從部署文件中獲取安裝信息 ? 400 
14.1.2 寫入註冊信息 ? 401 
14.1.3 刪除註冊信息 ? 401 
14.1.4 使用 VBA實現自動安裝和卸載 Office外接程序 401 
14.2 使用 Inno Setup製作安裝包 404 
14.2.1 iss腳本文件的構成 404 
14.2.2 製作 iss腳本文件 405 
14.2.3 產品的安裝和卸載 ? 407 
14.2.4 使用 iss模板文件 408 
14.3 小結 ? 409

第15章 開發Office文檔 ? 410 
15.1 創建 Excel工作簿項目? 410 
15.2 使用 Office事件 ? 412 
15.3 添加 customUI ? 414 
15.4 使用文檔操作窗格 416 
15.5 NamedRange宿主控件 ? 419 
15.6 ListObject宿主控件 423 
15.7 運行時動態增刪宿主控件 ? 428 
15.8 VSTO外接程序向工作表增刪控件 431 
15.9 Office文檔的發布 ? 433 
15.10 創建 Word文檔項目 433 
15.11 文檔上添加宿主控件 ? 436 
15.12 小結 439

第16章 Office 2003的 VSTO開發 440 
16.1 開發環境配置 440 
16.1.1 Office 2003的安裝 ? 440 
16.1.2 Visual Studio 2008的安裝 441 
16.1.3 安裝 Office 2003補丁 ? 443 
16.2 Office 2003外接程序 ? 444 
16.3 Office 2003文檔自定義項 ? 446 
16.3.1 Excel 2003工作簿的開發 446 
16.3.2 Word 2003文檔的開發 450 
16.4 小結 ? 452

第17章 Excel-DNA開發入門 453 
17.1 Excel-DNA入門概述 ? 453 
17.1.1 Excel-DNA開發的意義和優勢 453 
17.1.2 Excel-DNA與 VSTO的比較 454 
17.1.3 認識 Excel-DNA開發包 454 
17.1.4 Excel-DNA的加載方式 ? 455 
17.2 .NET程序的編譯 ? 456 
17.2.1 編譯生成 .exe可執行文件 ? 458 
17.2.2 編譯生成 .dll動態鏈接庫 459 
17.3 使用記事本創建 Excel-DNA項目 ? 459 
17.3.1 dna文件的部署 460 
17.3.2 dll文件的生成 460 
17.3.3 xll文件的拷貝 461 
17.3.4 功能測試 461
17.4 Excel-DNA項目的打包 463 
17.5 小結  464

第18章 Excel-DNA函數設計 465 
18.1 自定義函數的屬性修飾 465 
18.1.1 更改函數的屬性 465 
18.1.2 更改函數參數屬性 ? 466 
18.2 函數的參數類型 ? 468 
18.2.1 工作表的一行或者一列作為參數 469 
18.2.2 工作表的矩形區域作為參數 470 
18.3 函數的返回值類型 471 
18.3.1 返回一維數組 ? 471 
18.3.2 返回二維數組 ? 472 
18.4 小結 ? 473

第19章 使用Visual Studio進行 Excel-DNA開發 ? 474 
19.1 創建 Excel-DNA類庫項目 475 
19.1.1 添加 ExcelDna.Integration引用 475 
19.1.2 修改函數代碼 ? 477 
19.1.3 添加 dna文件 ? 477 
19.1.4 生成 dll文件 479 
19.2 Excel VBA中調用 Excel-DNA加載項中的函數和過程 481 
19.3 Excel-DNA項目的啟動和卸載事件 482 
19.4 自定義函數和參數的智能感知設計 484 
19.4.1 獨立加載
19.4.2 引用並打包 ExcelDna.IntelliSense.dll 486 
19.5 Excel-DNA項目的調試 490 
19.6 Excel-DNA中使用 cutomUI  493 
19.6.1 考慮 Excel版本 498 
19.6.2 使用自定義圖標 500 
19.7 Excel-DNA中使用任務窗格 503 
19.8 Excel-DNA中使用 Excel事件 ? 506 
19.9 Excel-DNA中使用 Office工具欄 ? 510 
19.10 使用 NuGet程序包管理器快速創建 Excel-DNA項目 515 
19.10.1 工作表標籤右鍵菜單設計 517 
19.10.2 排序功能設計 ? 520 
19.11 小結 523

第20章 語言差異和轉換技巧 524 
20.1 VB.NET與 VBA的語言差異 ? 524 
20.1.1 My對象 524 
20.1.2 Continue和自身賦值語句 526 
20.1.3 字符串是對象 ? 526 
20.1.4 不能使用默認屬性 ? 526 
20.1.5 調用過程、函數、對象的方法必須使用圓括號 527 
20.1.6 窗體和控件的變化 ? 527 
20.1.7 顏色的設置和獲取 ? 527 
20.2 VB.NET與 C#的語言差異 ? 529 
20.2.1 程序結構 529 
20.2.2 命名空間的導入方式 530 
20.2.3 數據類型關鍵字 530 
20.2.4 變量、常量的聲明方式 ? 530 
20.2.5 過程、函數的聲明和調用方式 530 
20.2.6 類型轉換方式 ? 531 
20.2.7 比較運算符 531 
20.2.8 邏輯運算符 531 
20.2.9 字符串連接 531 
20.2.10 條件選擇結構 ? 532 
20.2.11 循環結構 ? 532 
20.2.12 數組的聲明和元素的訪問 533 
20.2.13 特殊字符串常量的表達 ? 533 
20.2.14 異常處理 ? 533 
20.2.15 事件的動態增加和移除 ? 534 
20.3 VBA代碼如何轉換為 C# 534 
20.3.1 補全 VBA代碼 ? 534 
20.3.2 VBA改寫 C#的注意點 ? 535 
20.3.3 Excel VBA轉 C#? 537 
20.3.4 Outlook VBA轉 C# 538 
20.4 小結 539