使用 Microsoft Office 將 Visual Studio .NET 的強大功能引入業務解決方案的建立發布日期: 10/26/2004 | 更新日期: 10/26/2004
Ken Getz和 Brian A. Randell
下載本文的代碼:MicrosoftOffice2003.exe (152KB)
摘要 Microsoft Office 系統的 Microsoft Visual Studio 工具是一項全新的技術,它可將 Visual Studio .NET 的進階功能和 .NET Framework 用於建立在 Microsoft Word 2003 和 Excel 2003 上的應用程式。現在您可以使用 Visual Basic .NET 和 C# 來編寫以以文件為主的Managed 程式碼解決方案,該解決方案可與 Word 2003 或 Excel 2003 一起在進程內運行,並利用它們公開的充足的物件模型。通過該方法,您可以受益於託管環境,在該環境中執行完全編譯的基於 .NET 的應用程式,其中包括程式碼存取安全性。
本頁內容
Microsoft Office 提供豐富的環境以建立商務應用程式。通過 Office 應用程式公開的基於 COM 的物件模型,您可以使用 Visual Basic for Applications (VBA) 代碼、進程外 COM 自動化以及 COM 增益集來建立針對 Office 的非託管應用程式。
您可以在 Office 應用程式本身內直接運行 VBA 代碼。該代碼在進程內運行,並且代碼和編譯位通常使用文檔儲存(除 Outlook 外,所有 Office 應用程式都將代碼儲存在文檔內)。記住宿主的 VBA 代碼被編譯為 p 代碼,而不是機器碼,這會導致效能略微有所下降,儘管在進程內運行能夠最佳化對 Office 對象的方法調用。
您還可以用 Visual Basic 編寫應用程式,或以其他與 Office 應用程式提供的公開介面互動的 COM 識別的語言進行編寫。通常,這些應用程式在進程外運行,要求通過 COM proxy/stub 層調用。自動化應用程式經常被編譯為機器碼,因此執行速度比 VBA 代碼快。但是,這個優勢會因為對跨應用程式方法調用導致效能降低而有所抵消。
以 Office 2000 啟動,Office 應用程式搜尋實現 IDTExtensibility2 介面的註冊附加元件組件,並根據附加元件的配置,在啟動時或根據需要對其進行載入。使用 Visual Basic、其他 COM 識別的語言和 VBA,可以建立實現該介面的應用程式,即使是使用 Office Developer 產品和 VBA,也可以建立 COM 增益集。這樣的靈活度可以提供良好的兼顧性,允許完全編譯的應用程式在進程內運行。該項技術確實要求組件進行註冊,以便 Office 應用程式能夠識別附加元件的存在。可建立將在多個 Office 應用程式內載入的單一 COM 外接應用程式,並且 COM 增益集本身提供跨文檔的工具集,其固有行為在從一個文檔到下一個文檔時不會更改。
可能有時您會發現自己身處Managed 程式碼的世界中,並且想與安全的、記憶體回收世界中的 Office 進行互動。事實證明,由於 COM interop 的奇蹟和公用語言運行庫 (CLR) 的運行庫可調用封裝 (RCW),您仍然可以在 Office 應用程式內對方法進行進程外調用,並且稍加努力,就可使用Managed 程式碼建立 COM 增益集。但是,VBA 仍保持非託管狀態,並有可能在可預知的未來仍然如此。
如果您意欲自己建立前端應用程式,那麼編寫使用自動化的基於 Framework 的代碼來控制 Office 應用程式是個不錯的方法,使用者需要啟動您的應用程式,該程式可能隨後可見或不可見地載入 Word 或另一個應用程式。如果需要建立可在多台 Office 主機中運行並且是文檔不可知的解決方案,則可使用Managed 程式碼建立一個 COM 增益集。
有可能這些模型中沒有一個適合您的需要。或許您的使用者習慣於載入 Word 文檔並運行您的文件管理應用程式,或開啟 Excel 試算表並在工作薄內容上執行統計分析。或許您希望使用Managed 程式碼來響應 Office 應用程式事件。或許您希望能夠使用 Visual Basic .NET 或 C# 代碼來響應 Word 應用程式中出現的按鈕或菜單單擊。或許您想顯示一個 Windows表單,該表單在Visual Studio .NET 中建立以響應對 Excel 試算表輸入的請求。為了滿足這些要求,Microsoft 已經發布了適用於 Microsoft Office 的 Visual Studio 工具以及適用於 Visual Studio .NET 2003 的附加元件,可用於建立以以文件為主的託管應用程式,該應用程式與 Word 2003 或 Excel 2003 一同在進程內運行。
優點
適用於 Office 的 Visual Studio 工具具有很多優點。可使用 Visual Studio .NET 的所有功能來建立基於 Office 的應用程式。可使用 Visual Basic .NET 或 C# 來建立自己的應用程式。兩種語言均比 VBA 強大。可從 Office 應用程式內利用 .NET Framework 的所有功能,從 XML 讀取器到 ADO.NET,再到 Web 服務。
還可利用內建在 CLR 中的程式碼存取安全性。不同於 VBA 宏,除非使用 Office 的 Visual Studio 工具的受管理的解決方案得到明確信任,否則它不會運行。Office 載入程式的 Visual Studio 工具使用的預設設定不允許任何程式集運行,以保護使用者免受病毒或其他惡意代碼的侵害。使用者可以使用Managed 程式碼擴充載入文檔前,管理員必須明確對某個程式集或位置賦予完全信任。Office 的 Visual Studio 工具允許利用非接觸部署。使用者可自動接收對應用程式的更新,無需使用者幹預。
返回頁首
快速入門
為了讓您通過實踐來學習,我們將從安裝開始,然後使用會檢索資料並將其製成圖表的 Visual Basic .NET 或 C# 代碼來建立一個簡單的 Excel 應用程式。
安裝 Office 的 Visual Studio 工具會向 Visual Studio .NET 2003 添加一組項目模板,使您能夠使用 Visual Basic .NET 或 C# 代碼來建立 Word 文檔、模板項目或 Excel 工作表以響應事件並使產品自動化。一旦安裝完 Visual Studio .NET 2003,就可以安裝 Microsoft Office 2003 了,最後是用於 Microsoft Office 系統的 Visual Studio 工具,(按照上述順序)就可以建立利用儲存在全域組件快取 (GAC) 中的 Microsoft Office 2003 Primary Interop Assemblies (PIAs) 的應用程式了。您將能夠從使用 Visual Basic .NET 或 C# 代碼以在進程內將 Office 自動化的 Visual Studio .NET 內建立 Word 或 Excel 項目。(不,您沒有遺漏任何東西,Office 的 Visual Studio 工具這次只允許從 Visual Studio .NET 內建立 Word 和 Excel 項目。隨著時間的推移,您或許會看到對其他 Office 產品的擴充支援。)
若要從應用程式範例開始,您需要在 Visual Studio .NET 中建立一個 Excel 項目。首先,驗證您已經安裝了 Visual Studio .NET 2003、Office 2003 以及 Office 的 Visual Studio 工具。安裝 Office 2003 時,必須執行完整安裝或單獨選擇每個 Office 產品的 .NET 支援,以便將適當的 PIA 安裝在 GAC 中。安裝完整的 Office 產品非常簡單,但也可以為 Word、Excel、Microsoft Forms 以及 Microsoft Graph 單獨安裝 PIA。
其次,在 Visual Studio .NET 中,使用 File | New | Project 功能表項目來選擇項目和模板類型。首先選擇 Microsoft Office 2003 Projects。選擇 Visual Basic Projects 或 C# Projects,然後選擇 Excel Workbook 作為模板類型。輸入項目名,完成後單擊 OK。
最後,Microsoft Office Project Wizard 的第二個頁面允許選擇是使用現有的文檔還是建立一個新文檔。也可使用該頁面上的 Security Settings 連結以不使用嚮導提供的預設值,來為項目設定必要的程式碼存取安全性。現在,選擇 Create New Document 選項,為項目選擇一個方便的位置。單擊 Finish 以完成嚮導的步驟並建立新項目。(現在請勿更改預設的安全設定。直到您熟悉程式碼存取安全性以及 Office 的Visual Studio 工具使用的設定為止。此時更改安全性設定可能會使您的應用程式無法運行和調試。)
一旦建立了項目,您就會發現方案總管視窗中包括了到適當 Office 應用程式的引用,以及包含名為 OfficeCodeBehind 的類的檔案,該類能夠讓您掛鈎文檔事件的事件處理常式。
在代碼檔案(ThisDocument 或 ThisWorkbook,帶有選定語言的適當副檔名)頂部,您會看到 Imports 或 using 語句,它簡化了到主機物件模型內的對象的輸入引用:
' Visual Basic .NETImports Excel = Microsoft.Office.Interop.Excel// C#using Excel = Microsoft.Office.Interop.Excel;
接下來,您會看見描述類的屬性:
' Visual Basic .NET' Office integration attribute. Identifies the startup class ' for the document. Do not modify.// C#// Office integration attribute. Identifies the startup class// for the document. Do not modify.[assembly:System.ComponentModel.DescriptionAttribute( "OfficeStartupClass, Version=1.0, Class=ChartDemo.OfficeCodeBehind")]
' Visual Basic .NETImports Excel = Microsoft.Office.Interop.Excel// C#using Excel = Microsoft.Office.Interop.Excel;
接下來,您會看見描述類的屬性:
' Visual Basic .NET' Office integration attribute. Identifies the startup class ' for the document. Do not modify.// C#// Office integration attribute. Identifies the startup class// for the document. Do not modify.[assembly:System.ComponentModel.DescriptionAttribute( "OfficeStartupClass, Version=1.0, Class=ChartDemo.OfficeCodeBehind")]
' Visual Basic .NETImports Excel = Microsoft.Office.Interop.Excel// C#using Excel = Microsoft.Office.Interop.Excel;
接下來,您會看見描述類的屬性:
' Visual Basic .NET' Office integration attribute. Identifies the startup class ' for the document. Do not modify.// C#// Office integration attribute. Identifies the startup class// for the document. Do not modify.[assembly:System.ComponentModel.DescriptionAttribute( "OfficeStartupClass, Version=1.0, Class=ChartDemo.OfficeCodeBehind")]
儘管包含的注釋指示不應修改該屬性,但是在某些情況下,必須對其進行修改。例如,如果修改類名或命名空間,則需要手動更新該屬性以進行匹配。Office 載入程式的 Visual Studio 工具使用該屬性來確定其應當在使用者開啟宿主文件時載入的類的名稱,本文稍後會有詳細說明。
接下來,是與應用程式和主文件對象相對應的變數的聲明(Excel 的為 ThisWorkbook 和 ThisApplication,Word 的為 ThisDocument 和 ThisApplication),如圖 1所示。此外,這些類包含基本事件的事件處理常式(Excel 中的 Workbook.Open 和 Workbook.BeforeClose,Word 中的 Document.Open 和 Document.Close),如圖 2所示。
還有,如果在類中副檔名為“產生的初始化代碼”的地區,則還需進行幾個過程,本文稍後將會進行討論。現在,在類中向下滾動並找到 ThisWorkbook_Open 過程。添加代碼,以便該過程看起來如圖 3中的樣本。注意此處 Visual Basic 和 C# 代碼之間的差別。例如,在 Visual Basic .NET 中,可以只需調用 Application.Range 屬性,傳遞單一參數。Application.Range 屬性已被定義為接受兩個選擇性參數,但是 C# 對於參數化屬性和選擇性參數均不支援。因此,在為 Excel 建立 PIA 時,團隊添加了 get_Range 方法,即數種使 C# 開發人員可以使用 Excel 物件模型的訪問器方法之一。相同的問題也適用於接受單一參數的 Range.Value 屬性。在 C# 中,必須使用 Value2 屬性,該屬性不接受任何參數。在 Visual Basic 中,可以使用 Value2,但是這樣做沒有優勢可言。
選擇 Debug | Start 來運行該應用程式。Visual Studio .NET 編譯並運行載入 Excel 的應用程式。如果仔細遵循這些步驟,則應當看見試算表出現,其儲存格 A1 中具有正確的格式化文本。欣賞完自己的作品後,關閉 Excel 並返回設計模式。
若要查看所做的操作,請儲存項目,關閉 Visual Studio .NET,並使用 Windows 資源管理員來瀏覽包含項目和 Excel 工作薄檔案的檔案夾。雙擊 XLS 檔案以載入 Excel,並驗證適當的文本出現在工作表中。重新載入 Visual Studio .NET 和樣本項目以繼續演練。
就象看起來那麼簡單,您已經自己完成了某些難於把握的東西 — 您已經編寫了Managed 程式碼,通過從 Visual Basic .NET 或 C# 代碼內與 Excel 物件模型互動來響應 Excel 事件。
返回頁首
調查基礎結構
建立項目時,指定希望與該項目關聯的 Word 或 Excel 文檔的位置。在 Visual Studio .NET 建立該項目時,它會設定與該項目關聯的多種屬性,包括 AssemblyLinkLocation 和 OfficeDocument 屬性(請參閱 圖 4)。AssemblyLinkLocation 屬性指示 Office 文檔希望找到需要用於運行代碼的組件檔的位置,OfficeDocument 屬性指示 Visual Studio .NET 解決方案可找到關聯的 Office 文檔的位置。
圖 4 項目屬性
此外,建立項目會設定一些調試功能。從 Visual Studio .NET 內啟動項目,載入 Excel 或 Word 以及 Office 文檔,並在必要時運行代碼。為了 Visual Studio 能夠調試您的應用程式,它必須知道要載入什麼應用程式。在建立項目時,Visual Studio .NET 檢索適當的 Office 應用程式的位置,並儲存該位置以及必要的命令列參數。如果查看圖 5,您會看到項目屬性頁面,包括應用程式位置和命令列參數。
圖 5 設定位置屬性
一旦啟動了偵錯工作階段(或只是從 Windows 資源管理員載入了 Office 文檔),文檔如何得知要載入哪個程式集以及運行什麼代碼?使用者並不知道,Visual Studio .NET 已將兩個自訂屬性插入建立項目時指定的文檔中。通過將文檔載入 Excel,可選擇 File | Properties 來顯示對話方塊, 6 所示。.在自訂選項卡上,可以找到兩個名為 _AssemblyName0 和 _AssemblyLocation0 的屬性。這些屬性包含關聯程式集的路徑和檔案名稱。預設情況下,該程式集位於與項目同名的檔案夾內,其後附加“_bin”。例如,如果項目名為 ChartDemo,則預設的程式集位置是 ChartDemo_bin 檔案夾。
圖 6 ChartDemo 對話方塊
很清楚,有一些代碼會引起 Excel 或 Word 載入並運行在自訂文件屬性中指定的程式集。在文檔載入時,如果 Excel(或 Word)發現這些特殊的文件屬性,則它會引發 Office 的 Visual Studio 工具的非託管載入程式 DLL,OTKLOADR.DLL,以載入並連結託管程式集。
一旦主 Office 應用程式載入了建立的程式集,它如何得知要運行什麼代碼?這就是之前所討論的程式集屬性所發揮的作用— 該屬性說明包含 Visual Basic .NET 或 C# 代碼的類的完全限定名。
一旦它載入了適當的程式集,OTKLOADR.DLL 就會將名為 _Startup 的類中的過程傳遞至 CLR 以進行執行。您不用建立這個過程 — 該項目模板建立它並將其放入“產生的初始化代碼”地區。儘管可以修改該過程,但是或許不應對其進行修改。載入程式還向 _Startup 傳遞應用程式的引用(Word 或 Excel 應用程式物件)和文檔自身的引用(Excel.Workbook 或 Word.Document 的執行個體)。_Startup 方法將該資訊複製到局部變數並掛鈎任何必要的事件處理, 7 所示。
該地區還包含名為 _Shutdown 的公用過程,該過程在應用程式關閉文檔時自動被載入程式調用:
' Visual Basic .NET' Required procedure. Do not modify.Public Sub _Shutdown() ThisApplication = Nothing ThisWorkbook = NothingEnd Sub// C#// Required procedure. Do not modify.public void _Shutdown(){ thisApplication = null; thisWorkbook = null;}
由此,您的程式集使用標準的 COM 事件封送處理機制來響應由 Word 和 Excel 對象引起的事件。注意在 VBA 事件處理常式和託管事件處理常式之間沒有定義的互動。如果現有的 Word 或 Excel 文檔包括處理事件的 VBA 代碼,添加處理相同事件的 Visual Basic .NET 或 C# 代碼會使工作出色,但是不能確定事件處理常式的運行順序。確保您的應用程式不依賴於特定的順序。
當然,使用Managed 程式碼的主要的好處之一是對程式碼存取安全性的支援,並且在您的程式集中編寫的代碼可利用使用者的安全性原則。儘管 Visual Studio .NET 在建立項目時為您的程式集建立了適當的安全性原則(授予全部許可權),但是這並不是部署解決方案時的情況。在使用 Office 的 Visual Studio 工具分布解決方案時,您有多種選擇。可將 Office 文檔和程式集都部署到用戶端電腦。可將 Office 文檔部署到本機電腦,並在共用位置宿主程式集。甚至可將 Office 文檔和程式集都部署到共用位置。
每個選項都有其優缺點,包括將文檔和/或程式集宿主在共用位置時更新它們的能力。在任何情況下,在部署使用 Office 的 Visual Studio 工具建立的解決方案時,需要考慮到程式碼存取安全性的要求,以及為設定和測試不同的安全情況在部署計劃中分配時間。
返回頁首
完成示範
按照這七個步驟從 SQL Server? 檢索資料,並將其添加到工作表,然後將資料製成圖表:
1. |
運行項目。在 Excel 內,使用滑鼠右鍵單擊主功能表列,並選擇 Control Toolbox 工具列。 |
2. |
從該工具列中選擇並在工作表上繪製 CommandButton 控制項,包括從儲存格 A3 到 A4。 |
3. |
在 Control Toolbox 上,選擇 Properties 按鈕。在 Properties 視窗,將 CommandButton 控制項的 Name 屬性設為 cmdChart,將其 Caption 屬性設為 Create Chart。 |
4. |
在 Control Toolbox 上,取消選擇 Design Mode 工具,將控制項置入運行模式。關閉 Control Toolbox 視窗。完成後,工作表應當 8 所示。 |
5. |
關閉 Excel,將更改儲存到您的工作薄。 |
6. |
返回 Visual Studio .NET 中,滾動至當前檔案的頂部,並添加適當的語句: ' Visual Basic .NETImports System.DataImports System.Data.SqlClient// C#using System.Datausing System.Data.SqlClient; |
7. |
在當前類的底部,添加如圖 9所示的過程。然後修改 connectionInfo 變數的值以反映 SQL Server 安裝的位置和安全性設定。 |
圖 8 CommandButton
除標準的 ADO.NET 代碼外,RetrieveData 過程還清除儲存格 A5 周圍的所有儲存格,然後依次訪問由 SqlDataReader 對象返回的行,並將兩列插入工作表中的儲存格。再次注意此處 Visual Basic .NET 和 C# 代碼的差異 — Offset 屬性期望兩個參數,因為 C# 不能處理參數化屬性,所以 Excel PIA 提供 C# 開發人員必須使用的 get_Offset 方法。
下一個任務是為嵌入在工作比表上的 CommandButton 控制項掛鈎事件處理常式。該控制項是 Microsoft 表單軟體包的一部分,該軟體包是一組基於 COM 的控制項,由多數 Office 產品使用。為了便於將事件處理常式掛鈎至該軟體包中的控制項,Visual Studio .NET 項目模版包括 FindControl 方法的兩個重載版本(一個版本只接受控制項名稱,另一個接受控制項名稱和文檔引用,如果控制項不在當前表中)。調用該方法來檢索文檔上對控制項的引用。
儘管 Office 的 Visual Studio 工具的最終版本會為你考慮到以下細節,但是如果使用的是產品的公用 Beta 測試,則可能需要執行額外幾個步驟以使用由 Microsoft 表單軟體包提供的控制項。如果查看引用模組頂部的 Microsoft 表單的 Imports/using 語句(指示您使用的是該產品的最新測試或最終版本),則向前跳過說明添加變數命名按鈕的幾個步驟。否則,向 Visual Studio .NET 方案總管視窗中的 Microsoft 表單 2.0 COM 庫添加引用。(您可能會在清單中找到該庫的兩個引用。若如此,請選擇第一個。)單擊 Select,然後單擊 OK 以關閉對話方塊。
滾至代碼檔案的頂部,並根據所選的語言(Visual Basic .NET 或 C#)添加以下語句:
' Visual Basic .NETImports MSForms = Microsoft.Vbe.Interop.Forms// C#using MSForms = Microsoft.Vbe.Interop.Forms;在 ThisApplication 和 ThisWorkbook 變數的聲明之後直接添加以下聲明: ' Visual Basic .NETPrivate WithEvents button As MSForms.CommandButton// C#private MSForms.CommandButton button;
其次,向該類添加以下過程:
' Visual Basic .NETPrivate Sub button_Click() Handles button.Click RetrieveData()End Sub// C#private void button_Click() { RetrieveData();}
將這個代碼添加到該類的 ThisWorkbook_Open 過程:
' Visual Basic .NETbutton = DirectCast(FindControl("cmdChart"), _ MSForms.CommandButton)// C#button = (MSForms.CommandButton) FindControl("cmdChart");button.Click +=new MSForms.CommandButtonEvents_ClickEventHandler(button_Click);
儲存並隨後運行該項目。驗證單擊工作表上的按鈕從 SQL Server 載入資料並將其顯示在工作表上,如圖 10 所示。完成後,關閉 Excel。如果願意,可儲存該工作薄。
圖 10 顯示資料
返回 Visual Studio .NET 中,將圖 11 中的過程添加到該類,如果有圖表存在,則此操作會將其刪除。正如通過研究該代碼所發現的,Excel(和 Word)中的許多方法都返回物件類型,意即您需要謹慎的將傳回值強制轉換為正確的類型。(通過不使用 Option Strict On 可以在 Visual Basic .NET 中避免這個麻煩,但是不推薦這樣做。這樣容易使建立的代碼可以編譯但是不能正確運行。)
其次,將圖 12 中的過程添加到該類,來建立圖表。注意 C# 代碼與相應的 Visual Basic .NET 代碼的不同之處。正如先前所述,數種 Excel 方法接受 C# 不支援的選擇性參數。若要解決這個局限性,C# 代碼必須為每個參考型別的選擇性參數傳遞 Type.Missing 欄位。(對於實值型別的選擇性參數,C# 代碼必須傳遞實際的預設值。)在 DeleteExistingChart 方法中,WorkSheet.ChartObjects 方法可用於指定希望檢索的圖表索引或不指定任何參數以檢索 ChartObjects 集合。在 C# 中,若要檢索整個集合,必須為選擇性參數傳遞 Type.Missing。相同的準則也適用於在 CreateChart 方法中調用 Charts.Add 方法時。通常,對於任何要求可選參考型別參數的方法,C# 開發人員可傳遞 Type.Missing。
修改 CommandButton 控制項的 Click 事件處理常式,向 CreateChart 過程添加一個調用:
' Visual Basic .NETPrivate Sub button_Click() Handles button.Click RetrieveData() CreateChart()End Sub// C#private void button_Click() { RetrieveData(); CreateChart();}
最後,儲存並運行該項目,單擊該按鈕並驗證您已設法載入了資料並建立圖表。完成後退出 Excel,如果願意,儲存該工作薄。
如果仔細遵循了該過程,則應當已建立了如圖 13 所示的圖表。通過該方法,可以知道如何利用數個 Excel 對象以及如何將事件掛鈎到嵌入到文檔中的控制項。還能夠瞭解在編碼 Office 對象中涉及到的 Visual Basic .NET 和 C# 代碼的不一些同之處。儘管本例沒有利用 Office 中提供的菜單和工具列,但是您可從Managed 程式碼中通過編程方式使用這些項。
圖 13 橫條圖
當然,您還沒有看到程式碼存取安全性是如何影響項目功能來啟動並執行。在建立項目時,Visual Studio .NET 添加了一個允許程式集從其當前位置啟動並執行代碼存取原則。將它複製到硬碟上的任何其他位置會導致代碼失敗。若要驗證程式碼存取安全性的表現,請轉到 Visual Studio .NET 並將Assembly Link Location 屬性更改為任意其他位置。現在重建應用程式並運行項目。您會發現該代碼進行編譯,並且 Visual Studio .NET 載入 Excel 以及工作薄,但是代碼不會運行。圖 14 顯示了您將收到的警告。重設 Assembly Link Location 屬性並重複先前的步驟,以驗證代碼在檔案夾名重設後再次運行。
圖 14 警告訊息
程式碼存取安全性確保您不能從任意位置運行程式集,只能從已被授予許可的位置運行。預設情況下,Visual Studio .NET 設定代碼存取原則以允許您的代碼從其開發位置運行。更改該位置,代碼將不會運行。
有關部署和安全性選項的詳細論述頗為複雜,可就此問題另寫一篇完整的文章。現在,注意為了將您的應用程式部署到其他使用者的電腦,需要定義安全性原則,使之允許您的代碼運行。使用 Office 的 Visual Studio 工具建立的程式集,其效果等同於從 Internet 或 intranet 上下載程式集 — 將程式集下載至使用者的下載快取並從那裡運行。同樣的安全性問題也都適用於兩種類型的程式集。
使用 Office 的 Visual Studio 工具會要求瞭解 Office 物件模型,熟悉 .NET 安全性和部署問題以及業務需求。最後,開發人員將能夠從 Office 應用程式中利用 CLR 和 .NET Framework 的所有強大功能。這些新的應用程式會顧及到使用者,就好像他們只是運行 Word 或 Excel 一樣。使用非接觸部署會自動執行更新,沒有管理員的許可,不受信任的代碼不能運行。這隻是 Visual Studio 工具為 Microsoft Office 系統提供的強大、安全、靈活的功能中的一部分。
相關文章,請參閱:
Office Beta 測試的 Visual Studio 工具的安裝和新項目快速入門
Office 的 Visual Studio 工具常見問題
Office 的 Visual Studio 工具
從 .NET 開發人員的角度瞭解 Excel 物件模型
從 .NET 開發人員的角度瞭解 Word 物件模型
有關背景資訊,請參閱:
使用 Microsoft Visual C# 對 Microsoft Word 2002 和 Excel 2002 進行編程
使用 Office XP Primary Interop 程式集
託管 COM 增益集填充程式
Ken Getz 是一位 MCW 技術的資深顧問。他與別人合著了 ASP、NET Developer's Jumpstart (Addison-Wesley, 2002)、Access Developer's Handbook (Sybex, 2001) 以及VBA Developer's Handbook,2nd Edition (Sybex, 2001)。他的連絡方式為keng@mcwtech.com.
Brian A. Randell 是一位 MCW 技術的資深顧問和 DevelopMentor 的講師。Brian 經常在世界範圍內演講有關 VSLive! 和 Tech Ed 的主題。並與別人合著了 Effective Visual Basic (Addison-Wesley, 2001)。
轉到原英文頁面
摘自MS:http://www.microsoft.com/china/msdn/library/office/office/OFFmsoffice2003toc.mspx