VSTO開發者指南

VSTO開發者指南

《VSTO開發者指南》是為有興趣把技能遷移到下一代Office開發的VBA開發者寫的。你可以得到編寫Word 2003、Excel 2003和Outlook 2003託管代碼程式的易懂且實用的介紹,還將學到如何用VSTO 2005 SE為最受歡迎的Office 2003和Microsoft Office 2007應用程式創建外掛程式。作為這方面的專家,作者通過豐富的代碼示例來展示受歡迎的VSTO功能,例如智慧型標記和操作窗格。示例代碼也向你演示了如何定製Microsoft Office 2007新的uI功能,包括功能區、自定義任務窗格和Outlook窗體區域。

基本信息

內容簡介

VSTO開發者指南》是為有興趣把技能遷移到下一代Office開發的VBA開發者寫的。你可以得到編寫Word 2003、Excel 2003和Outlook 2003託管代碼程式的易懂且實用的介紹,還將學到如何用VSTO 2005 SE為最受歡迎的Office 2003和microsoft office 2007應用程式創建外掛程式。

作為這方面的專家,作者通過豐富的代碼示例來展示受歡迎的VSTO功能,例如智慧型標記和操作窗格。示例代碼也向你演示了如何定製Microsoft Office 2007新的uI功能,包括功能區、自定義任務窗格和Outlook窗體區域。

作者簡介

Kathleen McGrath在Microsoft做編程作家。她為Visual Studio 2005 Tools for the Microsoft Office System(VSTO)、Visual Studio Tools for Applications(VSTA)和Visual Basic寫過文檔。在加入Microsoft之前,她是一個VBA開發者,為金融印刷及法律行業定製Word應用程式。Kathleen還創建了短錄像,示範VSTO和Visual Basic的功能,這些錄像放在她的部落格上:http://blogs.msdn.com/kathleen。

Paul Stubbs在Microsoft的Visual Studio Tools for Office(VSTO)組做程式經理。除了VSTO,Paul還和VSTA組合作為infopath2007和獨立軟體供應商(ISV)開發新的託管代碼應用程式的可程式開發工具。Paul為MSDN Magazine寫過文章,也在諸如TechEd和TechReady的活動上演講過。

媒體推薦

“真希望第一次接觸VSTO和.NET Framework時就擁有這本書。它對於那些考慮VSTO以及從Office VBA轉到Visual Basic.net的人都是極具價值的。廣泛涉獵的主題為MSDN和其他地方的更加深入的面向開發者的文檔提供了一個切入點。”

—Cindy Meister,MS Word MVP

“《VSTO入門經典》做了一件很好的事,在VBA和VSTO這兩個世界之間架起了一座橋。Kathleen和Paul告訴我們,VBA開發者如何在擁有豐富的Office知識的同時也能獲得Visual Studio的強大、可維護性和安全性。他們成功地寫了一本容易接受、易於理解和令人信服的書。”

—KD Hallman,總經理,Microsoft,Developer Division

“對於想要轉到使用Visual Studio Tools for Office為Office進行.NET開發的VBA開發者,這本書是一個不錯的選擇。很多示例都展示了VB.NET代碼和對應的VBA代碼,幫助解釋關鍵概念和用法的區別。”

—Steve Hansen,OfficeZealot.com,

編輯推薦

VBA開發者將會輕鬆獲得:

對託管代碼和Visual Studio集成開發環境(IDE)的深入理解。

多個如何使用視圖控制項、數據綁定和操作窗格為Word 2003和Excel 2003創建文檔級別的定製程式的示例。

為Outlook 2003開發外掛程式的全面概覽。

用VSTO和VSTO 2005 SE創建的解決方案在安全和部署方面的有用信息。

如何把VBA解決方案遷移到Visual Basic 2005和VSTO的詳細說明。

更多關於Microsoft Office 2007開發VSTO 2005 SE外掛程式定製

功能區、自定義任務窗格和Outlook窗體區域的詳細信息。

目錄

對《VSTO入門經典》的讚譽 1

譯者序 2

譯者簡介 3

序 3

前言 5

介紹 5

致謝 8

作者簡介 9

目錄 9

第一部分 VSTO介紹 23

第1章 VSTO入門 23

1.1 本章涉及的主題 23

1.2 什麼是VSTO? 23

1.3 為什麼用VSTO代替VBA? 24

1.4 VSTO的功能 25

1.4.1 宿主項和宿主控制項 26

1.4.2 Windows Forms控制項 27

1.4.3 智慧型標記 28

1.4.4 定製任務窗格 28

1.4.5 在文檔中快取數據 29

1.4.6 託管外掛程式 29

1.4.7 安全和部署 29

1.4.8 功能區支持 30

1.4.9 增強開發環境 30

1.5 創建VSTO解決方案 30

1.5.1 用VBA創建Office解決方案 30

1.5.2 用VSTO創建Office解決方案 31

1.5.3 項目類型 32

1.6 VSTO如何與Visual Studio集成 34

1.6.1 把Word和Excel當作設計器來用 34

1.6.2 VSTO中的代碼檔案 35

1.7 摘要 35

1.8 複習問題 36

第2章 編程環境 36

2.1 本章涉及的話題 36

2.2 Visual Studio IDE介紹 36

2.2.1 環境設定 37

2.2.2 創建Visual Studio Tools for Office項目 37

2.2.3 準予訪問VBA項目系統 38

2.2.4 選單和工具列 38

2.3 查看IDE視窗 39

2.3.1代碼視圖39

2.3.2 探究Solution Explorer 40

2.3.3 Properties視窗 44

2.3.4 瀏覽Object Browser 45

2.3.5 項目屬性 46

2.3.6 查看其他Visual Studio視窗 47

2.4編碼工具48

2.4.1 使用智慧型感知 48

2.4.2 編輯並繼續 52

2.5 構建和運行代碼 52

2.6 調試你的代碼 53

2.6.1 設定斷點 55

2.6.2 逐語句、逐過程和跳出代碼 56

2.6.3 試用調試工具 58

2.6.4 使用調試視窗 60

2.7 查找和使用幫助 63

2.7.1 目錄 63

2.7.2 索引 64

2.7.3 搜尋 64

2.7.4 如何實現 64

2.7.5 動態幫助 65

2.8 摘要 65

2.9 複習問題 65

第3章 託管代碼介紹 66

3.1本章涉及的話題 66

3.2 什麼是託管代碼? 66

3.3 面向對象編程介紹 67

3.3.1 理解類和對象 67

3.3.2分部類72

3.3.3泛型類73

3.3.4 接口 73

3.3.5 面向對象概念 74

3.4 探究 .NET Framework 75

3.4.1 程式集 75

3.4.2 命名空間 76

3.4.3 套用程序域77

3.4.4 公共語言運行庫 77

3.4.5公共語言規範79

3.4.6 .NET Framework類庫 79

3.5 VSTO和託管代碼 82

3.5.1 主互操作程式集 82

3.5.2 解決方案程式集 83

3.5.3 運行VSTO解決方案 84

3.6摘要 85

3.7複習問題 85

第4章 從VBA轉到VSTO和Visual Basic 2005 85

4.1本章涉及的話題 85

4.2轉到Visual Studio 2005 85

4.3 Visual Basic 2005的新功能 86

4.3.1 My對象 86

4.3.2智慧型感知代碼段 88

4.3.3語句 89

4.3.4運算符 90

4.4 VBA和Visual Basic 2005在語言上的差別 91

4.4.1數據類型 91

4.4.2 方法 94

4.4.3 變數的聲明和作用域 94

4.4.4 默認屬性 95

4.4.5 枚舉 96

4.4.6 異常處理 96

4.5 UserForm對Windows Forms 97

4.5.1 比較ActiveX控制項和Windows Forms控制項 98

4.5.2 控制項功能的改變 103

4.6 摘要 106

4.7 複習問題 106

第二部分 Word和Excel 106

第5章 定製Word和Excel任務窗格 106

5.1 本章涉及的話題 107

5.2 什麼是任務窗格? 107

5.3 定製Document Actions任務窗格 108

5.4 管理操作窗格 109

5.4.1 管理操作窗格的大小和位置 109

5.4.2 顯示和隱藏操作窗格 110

5.5 設計操作窗格解決方案 110

5.5.1 創建操作窗格解決方案 111

5.5.2 添加操作窗格控制項 112

5.5.3 從文檔訪問操作窗格 112

5.5.4 從操作窗格訪問文檔 113

5.5.5 管理控制項順序 114

5.6 創建上下文相關的解決方案 115

5.6.1 創建XML架構 115

5.6.2 映射XML元素到你的文檔 116

5.6.3 創建多個操作窗格控制項 117

5.6.4 顯示和隱藏操作窗格上的控制項 117

5.6.5 向操作窗格控制項添加功能 118

5.7 摘要 119

5.8 複習問題 119

第6章 使用VSTO定製Word 119

6.1 本章涉及的話題 119

6.2 對Word進行編程 120

6.2.1把錄製的VBA宏轉換成VSTO里的Visual Basic 121

6.2.2重寫內置命令 122

6.3 Word宿主項和宿主控制項 124

6.3.1向文檔添加宿主控制項 124

6.3.2從基礎的互操作對象訪問宿主控制項 128

6.3.3從宿主控制項訪問互操作對象 129

6.4 對文檔上的宿主控制項進行數據綁定 129

6.4.1把數據綁定到控制項 130

6.4.2在文檔里快取數據 132

6.5 對事件進行編程 132

6.5.1 Bookmark控制項的事件 133

6.5.2 XMLNode控制項的事件 138

6.5.3 XMLNodes控制項的事件 140

6.5.4 Document的事件 140

6.6 對Bookmark的特彆強化 145

6.7 使Word文檔智慧型化 146

6.8 摘要 147

6.9 複習問題 147

第7章 使用VSTO定製Excel 148

7.1 本章涉及的話題 148

7.2 對Excel進行編程 148

7.2.1了解Excel對象模型 150

7.2.2把錄製的VBA宏轉換成VSTO里的Visual Basic 150

7.2.3寫回調從VBA訪問VSTO代碼 151

7.3 Excel宿主項和宿主控制項 153

7.3.1宿主項 153

7.3.2宿主控制項 153

7.3.3向工作表添加宿主控制項 154

7.3.4移除宿主控制項 157

7.3.5在運行時添加宿主控制項 157

7.3.6控制項持久化 159

7.3.7從基礎的互操作對象訪問宿主控制項 160

7.3.8從宿主控制項訪問互操作對象 160

7.3.9在Excel里添加宿主項 161

7.3.10 Excel的區域設定問題 161

7.4 對工作表上的宿主控制項進行數據綁定 162

7.4.1創建數據源 162

7.4.2向工作表添加數據綁定控制項 163

7.4.3使用關聯數據 166

7.4.4在工作簿里快取數據 166

7.5 對事件進行編程 167

7.5.1 NamedRange控制項事件 167

7.5.2 ListObject控制項事件 169

7.5.3 XMLMappedRange控制項事件 172

7.5.4 Chart控制項事件 173

7.5.5工作表事件 175

7.5.6圖表工作表事件 177

7.5.7工作簿事件 177

7.6 使Excel更智慧型 180

7.7 摘要 181

7.8 複習問題 181

第8章 Word和Excel里的控制項 181

8.1 本章涉及的話題 182

8.2 關於控制項 182

8.3 向工具列和選單添加控制項 182

8.3.1創建工具列按鈕 182

8.3.2創建選單和選單項 185

8.4 使用Windows Forms控制項 186

8.5 向Windows Forms添加控制項 193

8.6 向任務窗格添加控制項 196

8.7 向Excel和Word文檔添加控制項 197

8.7.1 Word里的Windows Forms控制項 198

8.7.2 Excel里的Windows Forms控制項 199

8.7.3 添加數據綁定控制項 200

8.7.4 向文檔添加自定義控制項 202

8.7.5 控制項類型 203

8.7.6 在運行時添加控制項 204

8.7.7 文檔上的Windows Forms控制項的功能 207

8.8 摘要 208

8.9 複習問題 208

第9章 Word和Excel里的智慧型標記 208

9.1 本章涉及的話題 209

9.2 什麼是智慧型標記? 209

9.3 用VSTO創建Word和Excel智慧型標記 210

9.4 理解智慧型標記的屬性 212

9.4.1 Actions屬性 212

9.4.2 Caption屬性 212

9.4.3 Expressions屬性 213

9.4.4 SmartTagType屬性 213

9.4.5 Terms屬性 213

9.5 在智慧型標記上執行操作 213

9.6 正則表達式介紹 215

9.6.1 使用正則表達式識別詞組 215

9.6.2 識別文字模式 216

9.7 重寫智慧型標記識別器 219

9.7.1 創建Word項目 220

9.7.2 運行代碼 220

9.7.3 進入離線狀態 221

9.8 摘要 222

9.9 複習問題 222

第三部分 Outlook和其他 222

第10章 使用VSTO為Outlook創建外掛程式 222

10.1 本章涉及的話題 223

10.2 使用VSTO的應用程式級別的定製程式 223

10.2.1共享外掛程式和VSTO外掛程式之間的區別 224

10.2.2 Outlook外掛程式項目模板 225

10.2.3把Outlook宏轉換成VSTO外掛程式 226

10.2.4創建一個簡單的外掛程式 227

10.2.5 Visual Studio里的智慧型感知 228

10.3 Outlook對象模型概述 229

10.3.1 Application對象 230

10.3.2 NameSpace對象 230

10.3.3 Explorer對象 230

10.3.4 Inspector對象 231

10.3.5 Outlook資料夾 231

10.3.6 Outlook項 232

10.3.7事件 233

10.4 定製Outlook里的選單和工具列 233

10.5 調試外掛程式 234

10.6 使用VSTO創建的Outlook外掛程式的安全性 237

10.7 摘要 240

10.8 複習問題 240

第11章 安全性和部署 240

11.1 本章涉及的話題 240

11.2 VSTO安全模型 240

11.3 部署Word和Excel解決方案 243

11.3.1客戶端要求 243

11.3.2 Microsoft PSS VSTO 2005 Clienttroubleshooter244

11.3.3部署模型 244

11.3.4應用程式和部署清單 245

11.3.5部署任務 246

11.3.6 Public Wizard 246

11.3.7更新和回滾 250

11.3.8 Microsoft Installer項目 251

11.4 部署Outlook解決方案 253

11.5 摘要 253

11.6 複習問題 253

第12章 把VBA解決方案遷移到VSTO 254

12.1 本章涉及的話題 254

12.2 遷移概述 254

12.3 遷移策略 254

12.4 一個WORD VBA項目的簡單遷移 255

12.5 一個Word VBA項目的高級遷移 256

12.5.1複製word模板256

12.5.2從模板移除VBA代碼和UserForm 257

12.5.3創建Windows窗體 257

12.5.4啟動Windows窗體 258

12.5.5運行解決方案 258

12.5.6重新設計解決方案 258

12.5.7 Bookmark視圖控制項 259

12.5.8使用操作窗格 259

12.6 VBA和VSTO的互操作 260

12.7 摘要 262

12.8 複習問題 263

第13章 VSTO的高級話題 263

13.1 本章涉及的話題 263

13.2 ServerDocument概述 263

13.3 附加和分離基於文檔的定製程式 264

13.2.1使用ServerDocument從文檔分離解決方案 264

13.2.2使用ServerDocument向文檔附加解決方案 264

13.2.3使用自定義文檔屬性向文檔附加解決方案 265

13.4 讀寫數據快取 265

13.4.1快取數據結構 265

13.4.2創建一個有快取數據的測試文檔 266

13.4.3讀取文檔數據快取 267

13.4.4運行解決方案 269

13.5 清除數據快取 269

13.6 摘要 270

13.7 複習問題 270

第14章 VSTO 2005 SE和2007 Microsoft Office System 270

14.1 本章涉及的話題 270

14.2 VSTO 2005 SE入門 271

14.2.1所有發布版本里的功能 271

14.2.2 VSTO 2005 SE的外掛程式模型 273

14.3 創建外掛程式 275

14.4 定製功能區 276

14.4.1功能區項 276

14.4.2和XML協同工作 278

14.4.3定製內置的功能區 280

14.4.4向功能區添加其他控制項 282

14.4.5快速訪問工具列 285

14.4.6不受支持的功能區功能 286

14.4.7 Outlook里的功能區 286

14.5 創建自定義任務窗格 289

14.5.1為PowerPoint創建外掛程式 289

14.5.2打開和關閉自定義任務窗格 290

14.5.3管理多個Word文檔上的任務窗格 291

14.5.4把文檔級別的定製程式轉換成VSTO 2005 SE外掛程式 292

14.5.5顯示多個任務窗格 293

14.6 創建自定義窗體區域 294

14.6.1創建Outlook窗體區域檔案 294

14.6.2創建新的窗體區域 294

14.6.3保存窗體區域 295

14.6.4創建VSTO 2005 SE Outlook外掛程式項目 295

14.6.5在你的項目里內嵌窗體區域 295

14.6.6創建和註冊窗體區域清單 296

14.6.7創建窗體區域註冊表檔案 296

14.6.8創建窗體區域啟動類 296

14.6.9 連線窗體區域控制項 297

14.6.10 連線窗體區域 298

14.6.11運行項目 298

14.7 摘要 298

14.8 複習問題 299

附錄A 創建代碼段 299

A.1 導入代碼段 300

A.2 插入代碼段 300

A.3 使用Code Snippets Manager 301

附錄B 創建Inspector CommandBar 301

……

序言

Visual Studio Tools for Office(VSTO)的目標客群是“專業開發者”。這個術語有多重含義,而我們聽到的最受認可的定義是“通過寫代碼獲取報酬的人”。換句話說,這是他的主業。他不是部門開發者,比如說,把寫Excel宏作為他的會計任務的一部分的會計人員,或者定製Word來增加他的生產力的辦公人員。相反,他是一個有興趣把Microsoft Office作為開發平台的.NET開發者。

我們相信傳統的Office開發者也會對VSTO感興趣。在加入Microsoft之前,我們倆都是VBA開發者,定製Office應用程式,並且我們非常有興趣了解託管代碼。在這方面,我們不認為我們是唯一的。有上百萬VBA開發者,許多都有興趣學習下一代Office開發。現在的VSTO圖書和文檔通常都不是為VBA開發者寫的;它假設開發者熟悉Visual Studio、面向對象編程和.NET Framework。這就不難理解它把重點更多地放在VSTO的功能和如何使用笨重的Office對象模型。

我們想為VBA開發者寫一本書。雖然你可能不熟悉.NET編程,但你有一個重要的優勢:Office對象模型的知識。作為一個Office開發者,你很可能非常熟悉Office應用程式,在操作Office對象模型方面也有豐富的經驗。我們認為學習託管代碼的最佳環境是你已經熟悉的地方:Office開發。

VSTO把Office開發帶到.NET的世界,和VBA相比,它有優點也有缺點。使用VSTO,你可以更好地定製Word、Excel和Outlook,比如說,創建自定義任務窗格、向文檔添加智慧型標記和把文檔上的對象綁定到數據源。使用VSTO 2005 SE,你可以為六個Office應用程式創建外掛程式、定製新的2007 Microsoft Office System的功能區和創建應用程式級別的自定義任務窗格。

我們有幸和為VSTO設計、編碼、測試和寫文檔的人一起工作,並從他們那裡學到了很多。我們得到了內部人士對VSTO的看法,我們希望以一種易懂和有趣的方式把這些信息傳遞給你。

書摘

第一部分 VSTO概述

第1章 VSTO入門

1.4 VSTO的功能

VSTO提供的編程模型擴展了Word和Excel里的一些公共對象,例如書籤和範圍。這些對象現在具備了數據綁定的能力。比如說,你可以把資料庫里的欄位綁定到Excel里的單元格。使用數據綁定,你可以讓數據自動填充到文檔的對應位置,並且根據用戶的輸入更新資料庫里的數據。

VSTO編程模型背後的理念是把數據及其表現形式分離開來。你現在可以直接訪問存儲在數據源里的數據,而不用在文檔里查找顯示這些數據的對象。數據源可以是資料庫、XML檔案,甚至是文本檔案。

數據綁定對於伺服器端編程尤其有用。VSTO使你可以在文檔里儲存能被外部應用程式訪問(無需打開該文檔)的數據。若要做到這點,你可以通過把數據儲存在XML數據島或者數據快取(data cache)里。如果你把數據儲存在數據快取里,那么你可以在伺服器上訪問數據快取,而無需打開文檔或者在伺服器上安裝Word或Excel。

VSTO擴展對象的另一種做法是添加本地對象里沒有的事件。比如說,你現在可以對工作表單元格的更改事件編程,而不用遍歷對象模型並編寫許多行代碼找出哪個單元格發生了改變。當你在文檔或者工作表上添加這些擴展對象時,VSTO把它們創建成一級·,NET對象,你可以直接對它們編程。這些對象稱為宿主控制項(host contr01),而你添加宿主控制項的文檔或者工作表則稱為宿主項(host item)。

使用VSTO 2005 SE,你可以為Office 2003和2007 Microsoft Office System創建應用程式級別的外掛程式。VSTO 2005 SE還支持定製Office 2007的新用戶界面,包括功能區、自定義任務窗格和Outlook窗體區域。

1.4.1 宿主項和宿主控制項

正如前面所提到的那樣,宿主項是一個表示Office對象模型人口點的類。默認情況下,當你創建1個Excel解決方案時,將會創建4個Excel的宿主項:Workbook、Sheetl、Sheet2和sheet3。如果你在設計時添加更多工作表,那些工作表將被創建為宿主項。宿主項通過添加數據綁定的能力和提供額外的事件來擴展本地Office文檔。

宿主項是word或者Excel的設計圖面(design surface),擔當控制項容器的角色,這是看待宿主項的一個角度。就像你在VBA里把控制項添加到UserForm上一樣,你可以把Window Forms控制項和宿主控制項添加到宿主項上。這條規則的一個例外是工作簿宿主項。工作簿可以包含組件(component),但不能包含控制項。

……

相關搜尋

熱門詞條

聯絡我們