Visual Studio 在 Visual Basic 中提供可改善 Microsoft Office 程式設計的功能。 Visual Basic 中的功能包含自動實作的屬性、Lambda 運算式中的陳述式,以及集合初始設定式。 您可以內嵌類型資訊,以允許部署與 COM 元件互動的元件,而不需要將主要 Interop 元件部署 (PIA) 到使用者的電腦。 如需詳細資訊,請參閱逐步解說:從 Managed 組件內嵌類型 (C# 和 Visual Basic)。
這個逐步解說會示範 Office 程式設計內容中的這些功能,但其中大部分也適用於一般的程式設計。 在這個逐步解說中,您會使用 Excel 增益集應用程式來建立 Excel 活頁簿。 接著,建立含有活頁簿連結的 Word 文件。 最後,了解如何啟用和停用 PIA 相依性。
必要條件
電腦上必須安裝 Microsoft Office Excel 和 Microsoft Office Word 才能完成此逐步解說。
注意
在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置: 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱將 Visual Studio IDE 個人化。
設定 Excel 增益集應用程式
啟動 Visual Studio。
在 [檔案] 功能表上,指向 [開新檔案] ,然後按一下 [專案] 。
在 [ 已安裝的範本] 窗格中,展開 [Visual Basic]、[ Office],然後按一下 Office 產品的版本年份。
在 [範本] 窗格中,按一下 [Excel <版本> 增益集]。
查看 [範本] 窗格頂端,確定 .NET Framework 4 或更新版本出現在 [目標 Framework] 方塊中。
視需要在 [名稱] 方塊中,輸入您專案的名稱。
按一下 [確定]。
新的專案隨即會出現在方案總管中。
新增參考
在方案總管中,於專案名稱上按一下滑鼠右鍵,然後按一下 [新增參考]。 [新增參考] 對話方塊隨即出現。
在 [組件] 索引標籤上,選取 Microsoft.Office.Interop.Excel
<version>.0.0.0
版 (如需 Office 產品版本號碼的金鑰,請參閱 Microsoft 版本),並在 [元件名稱] 清單中,按住 CTRL 鍵,然後選取 Microsoft.Office.Interop.Wordversion <version>.0.0.0
。 如果看不到組件,您可能需要確定它們已安裝並已顯示 (請參閱如何:安裝 Office 主要 Interop 組件)。按一下 [確定]。
新增必要的 Imports 陳述式或使用指示詞
在方案總管中,以滑鼠右鍵按一下 ThisAddIn.vb 或 ThisAddIn.cs 檔案,然後按一下 [檢視程式碼]。
如果程式碼檔案尚未存在,請將下列
Imports
語句新增至程式碼檔案頂端。Imports Microsoft.Office.Interop
建立銀行帳戶清單
在方案總管中,以滑鼠右鍵按一下您的專案名稱,再按一下 [新增],然後按一下 [類別]。 將類別命名為 Account.vb。 按一下 [新增] 。
將
Account
類別的定義取代為下列程式碼。 類別定義使用「自動實作屬性」。 如需詳細資訊,請參閱自動實作的屬性。Public Class Account Property ID As Integer = -1 Property Balance As Double End Class
若要建立包含兩個
bankAccounts
帳戶的清單,請將下列程式碼新增至ThisAddIn_Startup
ThisAddIn.vb中的 方法。 清單宣告使用「集合初始設定式」。 如需詳細資訊,請參閱集合初始設定式。Dim bankAccounts As New List(Of Account) From { New Account With { .ID = 345, .Balance = 541.27 }, New Account With { .ID = 123, .Balance = -127.44 } }
將資料匯出至 Excel
在相同的檔案中,將下列方法加入
ThisAddIn
類別。 這個方法會設定 Excel 活頁簿,並將資料匯出到 Excel 活頁簿。Sub DisplayInExcel(ByVal accounts As IEnumerable(Of Account), ByVal DisplayAction As Action(Of Account, Excel.Range)) With Me.Application ' Add a new Excel workbook. .Workbooks.Add() .Visible = True .Range("A1").Value = "ID" .Range("B1").Value = "Balance" .Range("A2").Select() For Each ac In accounts DisplayAction(ac, .ActiveCell) .ActiveCell.Offset(1, 0).Select() Next ' Copy the results to the Clipboard. .Range("A1:B3").Copy() End With End Sub
在
DisplayInExcel
結尾加入下列程式碼,以調整資料行寬度以容納內容。' Add the following two lines at the end of the With statement. .Columns(1).AutoFit() .Columns(2).AutoFit()
如需內嵌 Interop 型別的詳細資訊,請參閱本文稍後將提到的「尋找 PIA 參考」和「還原 PIA 相依性」程序。
叫用 DisplayInExcel
在
ThisAddIn_StartUp
方法的結尾,加入下列程式碼。DisplayInExcel
呼叫包含兩個引數。 第一個引數是要處理的帳戶清單名稱。 第二個引數則是多行的 Lambda 運算式,定義如何處理資料。 每個帳戶的ID
和balance
值都會顯示在相鄰的儲存格中,而且如果餘額小於零,則會以紅色顯示資料列。DisplayInExcel(bankAccounts, Sub(account, cell) ' This multiline lambda expression sets custom ' processing rules for the bankAccounts. cell.Value = account.ID cell.Offset(0, 1).Value = account.Balance If account.Balance < 0 Then cell.Interior.Color = RGB(255, 0, 0) cell.Offset(0, 1).Interior.Color = RGB(255, 0, 0) End If End Sub)
若要執行程式,請按 F5 鍵。 隨即會出現內含帳戶資料的 Excel 工作表。
新增 Word 文件
在
ThisAddIn_StartUp
方法的結尾加入下列程式碼,可以建立內含 Excel 活頁簿連結的 Word 文件。Dim wordApp As New Word.Application wordApp.Visible = True wordApp.Documents.Add() wordApp.Selection.PasteSpecial(Link:=True, DisplayAsIcon:=True)
PasteSpecial 方法有七個參數,全部都定義為選擇性參考參數。 您可利用具名引數和選擇性引數,指定想要依名稱存取的參數,以及將引數只傳送給那些參數。 在這個範例中會傳送引數,表示應建立剪貼簿上的活頁簿連結 (參數
Link
),且連結會以圖示形式顯示在 Word 文件中 (參數DisplayAsIcon
)。
執行應用程式
- 按 F5 執行應用程式。 隨即會啟動 Excel,並會顯示含有
bankAccounts
中兩個帳戶資訊的資料表。 然後,會出現包含 Excel 資料表連結的 Word 文件。
清除已完成的專案
- 在 Visual Studio 中,按一下 [建置] 功能表上的 [清除方案]。 否則,每次在電腦上開啟 Excel 時,都會執行增益集。
尋找 PIA 參考
重新執行應用程式,但不要按一下 [清除方案]。
選取 [開始]。 找出 Microsoft Visual Studio <版本>,並開啟開發人員命令提示字元。
在 [Visual Studio 開發人員命令提示字元] 視窗中鍵入
ildasm
,然後按 ENTER。 隨即會出現 IL DASM 視窗。在 IL DASM 視窗的 [檔案] 功能表上,選取 [檔案]>[開啟]。 按兩下 [Visual Studio <版本>],然後按兩下 [專案]。 開啟您專案的資料夾,並查看 bin/Debug 資料夾中的 <您的專案名稱>.dll。 按兩下 <您的專案名稱>.dll。 新的視窗除了顯示會其他模組和組件的參考之外,還會顯示您專案的屬性。 請注意,組件中會包含命名空間
Microsoft.Office.Interop.Excel
和Microsoft.Office.Interop.Word
。 在 Visual Studio 中,編譯器預設會將您所需要的類型從參考的 PIA 匯入組件。如需詳細資訊,請參閱如何:檢視組件內容。
按兩下資訊清單圖示。 隨即會出現一個視窗,內含專案所參考之項目的組件清單。
Microsoft.Office.Interop.Excel
和Microsoft.Office.Interop.Word
未包含在清單中。 因為您專案所需的類型已匯入組件中,所以不需要 PIA 參考。 這會讓部署更為容易。 PIA 不需要存在於使用者的電腦上,而且因為應用程式不需要部署特定版本的 PIA,所以應用程式可以設計成與多個版本的 Office 搭配使用,但前提是所有版本都有必要的 API。因為不再需要部署 PIA,所以您可以在使用多個版本 Office (包括舊版本) 的進階情況下,建立應用程式。 不過,這只適用於程式碼未使用供任何 API 時 (目前所用 Office 版本中不提供)。 您不一定清楚舊版本中是否有特定 API,也因為此,不建議使用舊版 Office。
注意
在 Office 2003 之前,Office 未發行 PIA。 因此,產生 Office 2002 或舊版 Interop 組件唯一的方法,是匯入 COM 參考。
關閉資訊清單視窗和組件視窗。
還原 PIA 相依性
- 在方案總管中,按一下 [顯示所有檔案] 按鈕。 展開 [參考] 資料夾,然後選取 Microsoft.Office.Interop.Excel。 按 F4 顯示 [屬性] 視窗。
- 在 [屬性] 視窗中,將 [內嵌 Interop 類型] 屬性從 [True] 變更為 [False]。
- 為
Microsoft.Office.Interop.Word
,重複本程序中的步驟 1 和 2。 - 按 F5 鍵,確認專案仍然正確地執行。
- 重複前一個程序中的步驟 1-3,開啟組件視窗。 請注意,
Microsoft.Office.Interop.Word
和Microsoft.Office.Interop.Excel
已不在內嵌的組件清單中。 - 按兩下資訊清單圖示,並捲動所參考之組件的清單。
Microsoft.Office.Interop.Word
和Microsoft.Office.Interop.Excel
都在清單中。 由於應用程式會參考 Excel 和 Word PIA,而且 [內嵌 Interop 類型] 屬性設定為 [False],所以使用者電腦上必須具有這兩個組件。 - 在 Visual Studio 中,按一下 [建置] 功能表上的 [清除方案],清除已完成的專案。