MSDN Magazine > Home > Issues > 2007 > August >  Office 應用程式: 透過 VSTO 擴充 VBA 程式碼
Office 應用程式
透過 VSTO 擴充 VBA 程式碼
Paul Stubbs and Kathleen McGrath

本文是根據 Visual Studio “Orcas” 搶鮮版所撰寫。本文包含的所有資訊均有可能變更。
本文探討:
  • VSTO 與 VBA 之間的語言差異
  • VSTO 優於 VBA 的優點
  • 從 VBA 呼叫 VSTO 以及從 VSTO 呼叫 VBA
本文使用技術:
VBA、VSTO
假如您使用 Visual Basic® for Applications (VBA) 開發 Microsoft® Office,並且尚未升級到 Microsoft .NET Framework,下一版 Visual Studio,產品代碼 "Orcas" 中的 Visual Studio® Tools for Office (VSTO) 可讓遷移的過程更簡單,讓您更沒有理由不這麼做。VSTO 提供完整的 Visual Studio 功能組,包括語言整合查詢 (LINQ)、Windows® Presentation Foundation (WPF)、Windows Communications Foundation (WCF),以及 .NET Framework 3.5。此外,VSTO 還有許多針對 2007 Microsoft Office System 設計的新功能,包括視覺設計工具,方便建立自訂表單區域,以及自訂功能區。您可以建立自訂文件層級和應用程式層級工作窗格,並輕鬆建立和偵錯 Office SharePoint® Server 2007 工作流程方案。VSTO 方案的部署很簡單,這都要歸功於對 ClickOnce 的完整支援。除此之外,VSTO 還允許您使用 Managed 程式碼擴充現有的方案,藉此運用在 VBA 中現有的投資。

語言差異
VBA 和 Visual Basic 中提供的語言功能方面有許多差異。當中一些最明顯的差別出在資料型別、陳述式和新語言功能。其中一個範例是 VBA 中的 Integer 相等於 Visual Basic 中的 Short,而 VBA 中的 Long 則相等於 Visual Basic Integer。還有一些資料型別在 Visual Basic 也已經不再受到支援,例如 Variant — 不過您可以改用 Object 資料型別。
VBA 中常用的預設屬性在 Visual Basic 或 VSTO 中並不受到支援。舉例來說,您無法像在 VBA 中一樣為 String 指派段落的 Range 屬性,反而必須指定 Text 屬性,如您在下列程式碼中所見:
‘ VBA
Me.Application.ActiveDocument.Paragraphs(1).Range = _
    “This is my first paragraph.”

‘ Visual Basic
Me.Application.ActiveDocument.Paragraphs(1).Range.Text = _
    “This is my first paragraph.”
您仍然能夠存取許多 VBA 特有的語言功能,像是 MsgBox,雖然 Visual Basic 也支援 MessageBox 的使用。雖然 Visual Basic 中仍支援 OnError 陳述式,但您應該考慮使用 try/catch 陳述式所提供的結構化錯誤處理。
隨著各個 Visual Basic 新版本的發行,VBA 與 Visual Basic 之間的差異是越來越大。Visual Basic 9.0 有些新功能包括區域型別推斷、物件初始設定式、匿名型別、延伸方法、XML 整合 和 LINQ。
例如,Visual Basic 現在可以透過評估指派給區域變數的值來判斷它的型別,這便稱為區域型別推斷。雖然並未指定資料型別,但別把這與晚期繫結相混淆,對於晚期繫結,資料型別是在執行階段時決定。區域型別推斷是發生在設計階段 (早期繫結),而且所有的優點,像是 IntelliSense®,皆可供使用,如您在 [圖 1] 中所見。
[圖 1] 透過區域型別推斷可使用 IntelliSense,這都要感謝早期繫結 (按影像可放大)
透過 LINQ,您可以使用整合至 Visual Basic 語言的熟悉語法建立查詢,而不必學習截然不同的查詢語言,諸如 SQL 或 XQuery。

控制使用者介面
在典型的 VBA 方案中,程式碼的進入點是透過 UI 項目提供,例如工具列和功能表,或是藉由建立 UserForms 收集使用者的輸入。透過 VSTO,您便可以自訂類似的 UI 項目,並且根據 Office 應用程式,您還可以自訂其他的 UI 項目。無論您是使用 VBA 或是 VSTO 建立方案,都可以透過在 UI 中提供的控制項來收集使用者輸入。您可以將控制項加入工具列、功能表、表單、文件、工作窗格、功能區等。接下來的差別其實在於可用的控制項的類型和數量,以及包含該些控制項之 UI 介面類型。
使用 VBA 建立 Office 應用程式時,表單與使用 VSTO 建立的表單並不一樣。使用 VBA,您唯一的選項是顯示 UserForm,而可用於此表單類型的 ActiveX® 控制項相當有限。另一方面說來,VSTO 則支援各種 Windows Form 控制項。您一定可以找到一個 Windows Form 控制項與提供給 UserForm 使用的控制項功能性相符 (雖然控制項的名稱可能不同)。譬如說,Windows Form 上的 OptionButton 在 VSTO 中的相同對應項是 RadioButton。而且雖然您在 VSTO 專案中的 Toolbox 上找不到 ToggleButton,還是可以使用 CheckBox 控制項,並將它的 Appearance 屬性設定為 Button。屬性、方法和事件名稱在這些控制項類型之間可能也有所差異,但是您一般都可以找到相同對應項。在 VSTO 中,您是設定 Label 的 Text 屬性,而不是像在 VBA 中設定 Label 的 Caption 屬性。
眾多可用的 Windows Form 控制項不但提供了進階的功能,更允許您為應用程式建置比使用 UserForms 建置更為專業的 UI。由於 VSTO 方案是在 Visual Studio 中建立的,因此您可以存取許多在 VBA 程式碼編輯器中不能用的功能,例如 [資料來源] 視窗,它可讓您將資料繫結控制項直接加入 Windows Form 中。您還可以使用 Visual Basic 和 Visual C#® 一些全新的語言功能,讓您使用 LINQ 查詢來填滿 ListBox 或 ComboBox 控制項。
您可以使用 VSTO 將 WPF 控制項加入應用程式中,方法是從 [加入新項目] 對話方塊選取WPF 使用者控制項,並透過從 Toolbox 拖曳 WPF 或在 XML 視窗加入 XAML 標記的方式來設計此控制項。然後將使用者控制項加入專案中,從 Toolbox 的 [WPF 交互操作性] 索引標籤將 ElementHost 控制項拖曳到控制項。當將此控制項的 Child 屬性設定為 WPF 使用者控制項時,所有的 WPF 控制項都會變成是在 Windows Form 上裝載。現在您可以將此控制項加入 Windows Form、文件的介面,或是工作窗格。
工作窗格 自 Office 2003 開始,除了能夠自訂 Office 工作窗格來提供與 Windows Form 一樣的 UI 類型外,另外還可以將工作窗格固定在文件介面的外部。使用 VBA 並不能自訂工作窗格。使用 VSTO 可自訂的工作窗格類型有兩種:[文件動作] 工作窗格和 [自訂] 工作窗格。
[文件動作] 工作窗格是文件層級的工作窗格,只有與 VSTO 自訂相關聯的文件或活頁簿看得到。每份文件或活頁簿只能有一個 [文件動作] 工作窗格。在 VSTO 中建立 Microsoft Word 或 Excel® 文件或範本專案時,是透過 ActionsPane 物件來自訂此一文件層級工作窗格。
要自訂文件層級工作窗格,您將使用者控制項的執行個體加入 ActionsPane 物件的 Controls 集合。您無法變更顯示為工作窗格標題的名稱:
Dim TaskPaneControl As New UserControl1
Me.ActionsPane.Controls.Add(TaskPaneControl)
2007 Microsoft Office System 引進了一個全新的工作窗格類型,稱為自訂工作窗格,當您使用 VSTO 建立應用程式層級增益集時是可以自訂這種工作窗格。您可以在 Word 和 Excel 的 2003 和 2007 兩種版本自訂動作窗格,但是自訂工作窗格只有在 2007 版的五個應用程式中提供 (因而可自訂):Word、Excel、InfoPath®、Outlook® 和 PowerPoint®
自訂工作窗格可將相同類型的 Windows Form 控制項顯示成文件層級工作窗格,不過,自訂工作窗格只能在應用程式層級提供,而且您可以在方案中顯示多個自訂工作窗格。無論您是選擇自訂應用程式層級或文件層級的工作窗格,程序都非常類似。
若要自訂應用程式層級自訂工作窗格,將使用者控制項的執行個體加入 CustomTaskPane 集合,並傳遞您要工作窗格顯示的標題便可。
Dim CustomTaskPaneControl As New UserControl1
Me.CustomTaskPanes.Add(CustomTaskPaneControl, “Format Document”)
無論您是使用 VBA 或 VSTO 來建立 Office 2003 方案,都可以自訂工具列和功能表。一般來說,您是在工具列上或功能表中,從按鈕的 OnAction 屬性呼叫巨集。使用 VSTO 時,您必須撰寫程式來建立新的功能表或工具列項目,而不是使用 OnAction 屬性 (這個屬性不能設定用來呼叫 Managed 程式碼)。此外,您還必須為按鈕建立事件處理常式。2007 Microsoft Office System 推出了 Office Fluent 介面,當中包括功能區。功能區取代了大部分 2007 Office System 應用程式中的工具列和功能表,不過您還是可以在 Outlook 2007 的主視窗中找到功能表和工具列。
您可以利用 VBA 使用 RibbonX 來自訂功能區,而 VSTO 則提供功能區設計工具,讓整個作業甚至更簡單,讓加入新索引標籤、群組和控制項到功能區就跟加入控制項到 Windows Form 一樣容易。您可以將按鈕從 Toolbox (在 [功能區設計工具] 索引標籤內) 拖曳到功能區設計工具,設定按鈕的屬性 (如它的大小),並為按鈕的 Click 事件建立事件處理常式。或者您可以選擇使用功能區 XML 專案項目以數個其他控制項來自訂功能區。[圖 2] 顯示 [加入新項目] 對話方塊的 [Office] 索引標籤中可用的「功能區 (視覺設計工具)」和「功能區 (XML)」專案項目。
[圖 2] VSTO 中的功能區專案項目 (按影像可放大)
這些功能區自訂選項在應用程式層級增益集和支援功能區的文件層級自訂皆可用。例如,您可以針對為工程公司彙整專業服務提案的 Word 範本方案,建立文件層級功能區自訂。
功能區共有三個部分:索引標籤、群組,以及加入至群組的控制項。使用 VSTO 中的功能區設計工具,您能迅速地自訂現有的索引標籤,或建立不同的索引標籤來包含應用程式的所有功能。[圖 3] 中的 Toolbox 列出 Word 方案中可用的所有 Office 功能區控制項。當拖曳控制項至設計工具時,可在 [屬性] 視窗中設定屬性,諸如它的大小、文字,以及它是否包含影像等。有些控制項可以包含其他控制項。比如,[圖 4] 便顯示了包含許多 SplitBotton 控制項的 Employees Menu 控制項,而 SplitBotton 控制項也內含了許多 Buttons。
[圖 3] 設計工具中的 Employees Menu 控制項 (按影像可放大)
[圖 4] 呈現的功能表影像 (按影像可放大)
您可以在控制項的 OfficeImageId 屬性中指定影像的名稱來使用內建影像,或者您可以輕鬆加入自己的自訂影像。自訂影像的方法是在 Image 屬性中指定已作為資源加入專案的影像。當從資源加入影像時,影像是顯示在設計工具中,如 [圖 3] 中的 PEP 群組內所示。然而,當使用內建影像時,設計工具內則會改顯示預留位置影像。執行應用程式時,影像是顯示如 [圖 4] 中所示。
使用功能區設計工具優於功能區 XML 的優點之一是,您可以像在 Windows Form 上為控制項建立事件處理常式一樣的方式來為這些控制項建立事件處理常式。例如,若按兩下 Title 下拉式方塊,便可將 [圖 5] 中所示的程式碼加入 Title_TextChanged 事件處理常式,藉以插入標題到文件中。功能區 XML 提供了功能區設計工具中所沒有的進階自訂功能。您可以將功能區自訂匯出到功能區 XML,以便進一步自訂方案,但是您無法將功能區 XML 重新匯入回設計工具。您還必須為功能區設計工具程式碼內的每個事件處理常式建立回呼方法。
Private Sub Title_TextChanged(ByVal sender As System.Object, _
    ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) _
        Handles Title.TextChanged

    With Globals.ThisDocument.Paragraphs(1)
        .Range.Text = Me.Title.Text & “ Proposal”
        .Range.Font.AllCaps = True
        .Range.Font.Bold = True
        .Range.ParagraphFormat.Alignment = _
            Word.WdParagraphAlignment.wdAlignParagraphCenter
    End With

End Sub


部署 VSTO 方案
VSTO 安全性和部署模型與 VBA 中的相去懸殊。在 VBA 中,原始程式碼是存放在文件本身之內,所以部署程式碼就跟複製文件一樣簡單。雖然這種模型讓部署作業極為簡便,但擴增的大量 VBA 巨集病毒清楚地指出,要信任 VBA 程式碼是變得越來越困難。使用 VBA 內嵌程式碼模型另外一個問題在您嘗試推出新版本時也變得很明顯 — 那就是無法更新文件中的 VBA 程式碼。您可以開啟每份文件來變更裡面的 VBA 程式碼,但要怎麼保證您已更新了每一份文件呢? 即使是一小堆文件,也不一定找得到每個例項,因為文件是儲存在電子郵件中、在伺服器上,甚至可能已被重新命名。
在 VSTO 中,程式碼實際上是連結到文件,它是被部署到中央位置,而所有的文件就直接連結到該程式碼。這使得更新的作業相當容易。VSTO 支援發行到本機磁碟、UNC 路徑、HTTP 站台,以及卸除式媒體,例如 CD、DVD 和 USB 隨身碟。開發人員或系統管理員發行新版的程式碼,而每名使用者在文件再度開啟時便會收到新程式碼。此外,VSTO 還新增了對 ClickOnce 的完整支援,這是允許 VSTO 發行、更新和在本機快取程式碼的技術。詳細探討 ClickOnce 將超出本文的討論範圍,不過您可以在它套用到 VSTO 方案時了解其部分功能。
安裝增益集的方式就跟安裝任何其他應用程式一樣,方法是執行名為 setup.exe 的安裝程式,它會提示使用者允許安裝程式進行安裝、註冊及設定信任層級。您不必再牢記難解的登錄機碼或是複雜的 caspol.exe 命令來安裝增益集。相反地,您可以使用 VSTo 的發行功能來建立 setup.exe 程式和支援的 ClickOnce 檔案。
所有使用 VSTO 的 2007 Office System 應用程式全都支援部署功能。作為使用 VSTO 發行方案的範例,您可以從使用 Visual Basic 建立標準 Word 2007 增益集開始著手。按兩下 ThisAddin.vb 以開啟程式碼視窗。(您還必須加入一個參考到 System.Deployment 組件。VSTO 並不要求這麼做來進行部署,但為了讓範例程式碼顯示 ClickOnce 版本資訊,您必須用到此組件中的一些函數)。加入 [圖 6] 中的程式碼到增益集的 Startup 事件中。該程式碼使用 IsNetworkDeployed 來判斷這是不是從 ClickOnce 快取執行。如果是,那麼您應該顯示應用程式的發行版本號碼,這是由 CurrentDeployment 物件的 CurrentVersion 屬性傳回。CurrentVersion 號碼與 [圖 7] 中專案屬性頁內的 [發行] 索引標籤的 [發行版本] 欄位相符。這也會顯示應用程式版本,此為在 [應用程式] 索引標籤下設定的組件版本。開始先確認應用程式可以運作,方法是按 F5 來執行它。Word 應該會開啟並顯示一個對話方塊,內含「並非 ClickOnce 應用程式 (Not a ClickOnce Application)」的文字。這並沒有錯,因為是您從 VSTO 執行該應用程式。關閉 Word 來停止偵錯。
If Not System.Deployment.Application.ApplicationDeployment _
        .IsNetworkDeployed Then

    ‘This is a ClickOnce Application
    Dim currentVersion As String
    currentVersion = System.Deployment.Application _
        .ApplicationDeployment.CurrentDeployment _
            .CurrentVersion.ToString()

    MsgBox(“Started “ & vbCrLf & “ App Version:” _
        & My.Application.Info.Version.ToString() & vbCrLf & _
        “ Published Version “ & currentVersion)
Else
    MsgBox(“Not a ClickOnce Application”)
End If

[圖 7] 增益集專案 (按影像可放大)
開啟 [專案] 屬性頁,按一下 [發行] 索引標籤查看 [發行設定],當中包含兩個屬性 — 發行位置和安裝位置。VSTO 會在發行位置建置發行的專案。您可以把這想成是發行的 bin 目錄 — 方案的最終部署位置。系統管理員可以變更發行位置,並使用 ClickOnce Manifest Generation and Editing Tool (Mage.exe) 重新簽署資訊清單。在 [安裝設定] 區段中,您可以設定先決條件和更新頻率。基於效能理由,更新頻率預設是每七天檢查看是否有新版本。將此變更為 [每次執行自訂時都檢查],讓您可以馬上看到變更。您可以使用標準的主要、次要、組建和修訂格式來設定發行版本。在預設情況下,這是設定為每次成功發行後自動累加修訂號碼。所有這些屬性都設定正確後,只要按下頁面底端的 [馬上發行] 按鈕即可。
發行精靈會在發行位置建立一個 setup.exe 啟動載入器檔案和一個 VSTO 部署資訊清單檔案。它還會建立一個以版本號碼命名的子目錄,並將組建和應用程式資訊清單檔案放在此位置中。當再次發行時,會建立另外一個子目錄,並且會建置一個全新的 VSTO 部署資訊清單檔案,指向應用程式資訊清單的目前版本。您可以在 [圖 8] 中看到增益集的兩個發行版本:1.0.0.0 和 1.0.0.1。另外也有兩個部署資訊清單檔案的備份副本:DeployWordAddin_1_0_0_0.vsto 和 DeployWordAddin_1_0_0_1.vsto。有這些副本單純是為了幫助您回復至特定的版本。譬如,若您想要回復為 1.0.0.0 版,只要將 DeployWordAddin_1_0_0_0.vsto 重新命名為 DeployWordAddin.vsto 就可以了,下次應用程式檢查是否有更新時,她便會取得 1.0.0.0 版。
[圖 8] Word 增益集版本 (按影像可放大)
文件方案也是一樣的運作方式,唯一的不同在於文件也會發行到發行資料夾,而副本會發行到版本子資料夾。沒有必要執行 setup.exe — 要安裝文件方案,只要開啟文件便可,系統會提示您是否允許安裝方案。這可讓您將方案發行到中央位置,然後將文件散發給使用者。
一旦發行方案之後,使用者便可以執行 setup.exe 啟動載入器來安裝它,此啟動載入器會開始 ClickOnce 安裝。安全性模型比 VBA 中的更穩固,也比先前版本的 VSTO 更容易使用得多。第一次檢查會尋找由信任憑証所簽署的方案。若憑證受到信任,即會安裝方案。若不信任,則會提示使用者允許安裝。如我之前所述,文件方案跟增益集幾乎如出一轍,唯一的不同在於您只要開啟文件便可安裝方案。對於文件方案要特別注意的是,如果文件並不是位在本機機器上或是有包含 VBA 程式碼,那麼就必須將文件位置加入 Office 信任的資料夾清單中。安裝完成後,方案不需要先執行也能離線使用。

透過 VSTO 擴充 VBA
VSTO 另外一個不錯的功能是讓您能夠並存使用 VBA,容您保有現有的 VBA 投資並在適用之處利用 VSTO。舉例來說,VSTO 可方便您擴充 VBA 程式碼以自訂功能區,建立自訂工作窗格,或呼叫 WCF 服務。
讓 VSTO 與 VBA 溝通的第一種方法是讓 VSTO 呼叫 VBA 函數。您使用 Office 應用程式的物件模型來呼叫函數。例如,Excel 提供 Run 方法來呼叫 VBA 副程式和函數。若要使用 Run 方法,請將副程式或函數的名稱傳遞成第一個參數。其餘的選擇性參數是用來傳遞資料給函數。假想您有個 VBA 函數稱為 AddNumbers,它接受兩個參數並會傳回一個整數。呼叫該 VBA 函數的 VSTO 程式碼應該是:
Dim answer as integer = Me.Application.Run(“AddNumbers”, 10, 2)
有件事要特別注意的是,若沒有將適當的存取權限授與 VBA 巨集,此程式碼將會失敗。VBA 巨集在預設情況下並不會啟用。但要強調的是,這個案例是假設您擁有既有的 VBA 程式碼具備執行權限,並且您現在是從 VSTO 呼叫該些現存的巨集。此方案也很薄弱,因為使用者可以輕易變更 VBA 程式碼,而這將導致 Run 方法失敗。另外,也不會有 IntelliSense 引導您,而更容易發生錯誤。您必須以謹慎的方式來撰寫程式碼,以處理這些情況。
讓 VSTO 與 VBA 溝通的第二種方法是讓 VBA 呼叫 VSTO 函數。過去,這只能以非常有限且薄弱的方式進行,但現在已內建至 VSTO。此功能常見的案例是您有個現有的 Excel 文件,內含 VBA 程式碼,而您現在想要使用 VSTO 加入以 Managed 程式碼寫成的其他功能。
另外一個常見的案例是 IT 部門建立 VSTO 的功能庫以利 VBA 使用者取用。您可能只想建立一個啟用巨集的 Excel 2007 活頁簿專案,但首先您必須擁有一個內含 VBA 程式碼的現有活頁簿。建立新活頁簿,加入一些 VBA 程式碼,然後把它另存成有啟用巨集的活頁簿,稱之為VBAInterop.xlsm。開啟 Visual Studio "Orcas",並新建一個 Visual Basic Excel 2007 專案。
當新專案對話方塊提示您為應用程式選擇文件時,選取 [複製現有文件] 並瀏覽至剛剛建立的VBAInterop.xlsm。這可讓您加入 VBA 巨集來呼叫附加到文件的 VSTO 方案中的功能。若您使用的是新安裝的 Visual Studio,可能會收到一個警告對話方塊,告訴您您必須允許存取VBA 專案系統。按一下 [確定] 以允許建立專案。
專案建好之後,按一下 [檔案] | [全部儲存] 來儲存它,此例中可使用預設位置。按兩下方案總管中的 ThisWorkbook.vb 為活頁簿開啟設計工具。您可以公開任何所選的檢視給 VBA。VSTO 中的檢視是一個頂層物件,它在方案總管中是以文件節點下的檔案來表示。Excel 預設有四個檢視,一個用於活頁簿,一個用於各個工作表。另一方面,Word 則只有一個檢視 — 即文件。您可以在 ThisWorkbook.vb 檔案的屬性方格中設定屬性,公開活頁簿檢視給 VBA。
有兩個屬性控制著 VBA interop 行為:EnableVbaCallers 及 ReferenceAssemblyFromVbaProject。您只需要將 EnableVbaCallers 設定為 True,ReferenceAssemblyFromVbaProject 便會自動設定為 True。ReferenceAssemblyFromVbaProject 支援 VBA interop 的進階案例,但內容已超出本文討論範圍。
當將 EnableVbaCallers 設定為 true 時,會收到一個警告對話方塊,讓您知道您在偵錯專案時撰寫的 VBA 程式碼將不會儲存在專案中。VSTO 專案包含了 Office 文件,當建置和偵錯/執行專案時,VSTO 會在輸出位置製作文件的副本。而執行的正是此副本,因此您所做的變更將不會存回專案的文件副本中。如果您希望 VBA 程式碼保存在文件中,則必須在 VSTO 外部開啟專案中的文件,然後加入 VBA 程式碼。
啟用 VBA interop 之後,便可加入函數讓 VBA 呼叫。以滑鼠右鍵按一下 ThisWorkbook.vb,並選擇 [檢視程式碼]。建立函數,一起加入兩個數字並傳回結果:
   Public Function AddNumbers (ByVal _
     x As Integer, _
     ByVal y As Integer) As Integer
       Return x + y
   End Function
您現在可以按下 F5 來執行方案。活頁簿開啟後,按下 Alt+F11 來開啟 [圖 9] 中所示的 VBA 編輯器。您會看到 VSTO 所產生的 VBA 程式碼將 VBA 連接到 VSTO 組件。您現在可在支援參數和傳回類型的完整 IntelliSense 下,從 CallVSTOAssemby 物件呼叫 VSTO 函數。
[圖 9] VBA 編輯器 (按影像可放大)
您可以看到透過 VSTO 和 Managed 程式碼擴充 VBA 程式碼有多簡單。這是在 VBA 方案加入 WPF 對話方塊,或呼叫 WCF 服務和其他 .NET Framework 3.5 功能的絕佳做法。您也可以將此方法與使用者定義的函數搭配使用來呼叫 Managed 程式碼。您甚至可以同時在 VBA 程式碼和 VSTO 程式碼內設定中斷點,以徹底偵錯此方案,允許您在兩個開發環境之間來回切換。
雖然 VBA 支援短期內還是會存在,但現在正是透過 VSTO 轉換至受管理的 Office 開發的最佳時刻。最新版本的 Office 和 VSTO 中提供許多新功能,讓這項組合成為建立絕佳 Office 應用程式最有用的方法。有關 VSTO 的詳細資訊,可探訪 MSDN®Online 上的 VSTO 論壇。

Paul Stubbs 是 Visual Studio Tools for Office 和 Visual Studio Tools for Applications 小組的資深專案經理。他與 Kathleen McGrath 合著《VSTO for Mere Mortals》(Addison-Wesley,2006 年) 一書。他曾在 Tech•Ed 與 TechReady 發表演說,並參與 Microsoft 論壇上的開發人員社群。歡迎閱讀 Paul 的部落格,網址為:blogs.msdn.com/pstubbs

Kathleen McGrath 是 Microsoft 的程式設計作家。她曾為 Visual Studio 2005 Tools for the Microsoft Office System (VSTO)、Visual Studio Tools for Applications (VSTA) 和 Visual Basic 撰寫說明文件。她在她的部落格建立了 VSTO 與 Visual Basic 功能的示範短片,網址為blogs.msdn.com/kathleen

Page view tracker