共用方式為


逐步解說:Visual Basic 中的 Office 程式設計

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 增益集應用程式

  1. 啟動 Visual Studio。

  2. [檔案] 功能表上,指向 [開新檔案] ,然後按一下 [專案]

  3. 在 [ 已安裝的範本] 窗格中,展開 [Visual Basic]、[ Office],然後按一下 Office 產品的版本年份。

  4. 在 [範本] 窗格中,按一下 [Excel <版本> 增益集]。

  5. 查看 [範本] 窗格頂端,確定 .NET Framework 4 或更新版本出現在 [目標 Framework] 方塊中。

  6. 視需要在 [名稱] 方塊中,輸入您專案的名稱。

  7. 按一下 [確定]。

  8. 新的專案隨即會出現在方案總管中。

新增參考

  1. 在方案總管中,於專案名稱上按一下滑鼠右鍵,然後按一下 [新增參考]。 [新增參考] 對話方塊隨即出現。

  2. 在 [組件] 索引標籤上,選取 Microsoft.Office.Interop.Excel<version>.0.0.0 版 (如需 Office 產品版本號碼的金鑰,請參閱 Microsoft 版本),並在 [元件名稱] 清單中,按住 CTRL 鍵,然後選取 Microsoft.Office.Interop.Wordversion <version>.0.0.0。 如果看不到組件,您可能需要確定它們已安裝並已顯示 (請參閱如何:安裝 Office 主要 Interop 組件)。

  3. 按一下 [確定]。

新增必要的 Imports 陳述式或使用指示詞

  1. 在方案總管中,以滑鼠右鍵按一下 ThisAddIn.vbThisAddIn.cs 檔案,然後按一下 [檢視程式碼]

  2. 如果程式碼檔案尚未存在,請將下列 Imports 語句新增至程式碼檔案頂端。

    Imports Microsoft.Office.Interop
    

建立銀行帳戶清單

  1. 在方案總管中,以滑鼠右鍵按一下您的專案名稱,再按一下 [新增],然後按一下 [類別]。 將類別命名為 Account.vb。 按一下 [新增] 。

  2. Account 類別的定義取代為下列程式碼。 類別定義使用「自動實作屬性」。 如需詳細資訊,請參閱自動實作的屬性

    Public Class Account
        Property ID As Integer = -1
        Property Balance As Double
    End Class
    
  3. 若要建立包含兩個 bankAccounts 帳戶的清單,請將下列程式碼新增至 ThisAddIn_StartupThisAddIn.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

  1. 在相同的檔案中,將下列方法加入 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
    
    • Add 方法提供用來指定特定範本的選擇性參數。 如果您想要使用參數的預設值,則可利用選擇性參數省略該參數的引數。 因為上一個範例中未傳送引數,所以 Add 會使用預設範本並建立新的活頁簿。

    • Range 物件的 RangeOffset 屬性會使用「編製過索引的屬性」功能。 您可利用編製過索引的屬性,使用 Value 物件的 Range 屬性,而不需要使用 Value2 屬性。 Value 屬性編製過索引,但您可選擇是否要編製索引。 在下列範例中,同時使用了選擇性引數與編製過索引的屬性。

  2. DisplayInExcel 結尾加入下列程式碼,以調整資料行寬度以容納內容。

    ' Add the following two lines at the end of the With statement.
    .Columns(1).AutoFit()
    .Columns(2).AutoFit()
    

    如需內嵌 Interop 型別的詳細資訊,請參閱本文稍後將提到的「尋找 PIA 參考」和「還原 PIA 相依性」程序。

叫用 DisplayInExcel

  1. ThisAddIn_StartUp 方法的結尾,加入下列程式碼。 DisplayInExcel 呼叫包含兩個引數。 第一個引數是要處理的帳戶清單名稱。 第二個引數則是多行的 Lambda 運算式,定義如何處理資料。 每個帳戶的 IDbalance 值都會顯示在相鄰的儲存格中,而且如果餘額小於零,則會以紅色顯示資料列。

    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)
    
  2. 若要執行程式,請按 F5 鍵。 隨即會出現內含帳戶資料的 Excel 工作表。

新增 Word 文件

  1. 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)。

執行應用程式

  1. 按 F5 執行應用程式。 隨即會啟動 Excel,並會顯示含有 bankAccounts 中兩個帳戶資訊的資料表。 然後,會出現包含 Excel 資料表連結的 Word 文件。

清除已完成的專案

  1. 在 Visual Studio 中,按一下 [建置] 功能表上的 [清除方案]。 否則,每次在電腦上開啟 Excel 時,都會執行增益集。

尋找 PIA 參考

  1. 重新執行應用程式,但不要按一下 [清除方案]

  2. 選取 [開始]。 找出 Microsoft Visual Studio <版本>,並開啟開發人員命令提示字元。

  3. 在 [Visual Studio 開發人員命令提示字元] 視窗中鍵入 ildasm,然後按 ENTER。 隨即會出現 IL DASM 視窗。

  4. 在 IL DASM 視窗的 [檔案] 功能表上,選取 [檔案]>[開啟]。 按兩下 [Visual Studio <版本>],然後按兩下 [專案]。 開啟您專案的資料夾,並查看 bin/Debug 資料夾中的 <您的專案名稱>.dll。 按兩下 <您的專案名稱>.dll。 新的視窗除了顯示會其他模組和組件的參考之外,還會顯示您專案的屬性。 請注意,組件中會包含命名空間 Microsoft.Office.Interop.ExcelMicrosoft.Office.Interop.Word。 在 Visual Studio 中,編譯器預設會將您所需要的類型從參考的 PIA 匯入組件。

    如需詳細資訊,請參閱如何:檢視組件內容

  5. 按兩下資訊清單圖示。 隨即會出現一個視窗,內含專案所參考之項目的組件清單。 Microsoft.Office.Interop.ExcelMicrosoft.Office.Interop.Word 未包含在清單中。 因為您專案所需的類型已匯入組件中,所以不需要 PIA 參考。 這會讓部署更為容易。 PIA 不需要存在於使用者的電腦上,而且因為應用程式不需要部署特定版本的 PIA,所以應用程式可以設計成與多個版本的 Office 搭配使用,但前提是所有版本都有必要的 API。

    因為不再需要部署 PIA,所以您可以在使用多個版本 Office (包括舊版本) 的進階情況下,建立應用程式。 不過,這只適用於程式碼未使用供任何 API 時 (目前所用 Office 版本中不提供)。 您不一定清楚舊版本中是否有特定 API,也因為此,不建議使用舊版 Office。

    注意

    在 Office 2003 之前,Office 未發行 PIA。 因此,產生 Office 2002 或舊版 Interop 組件唯一的方法,是匯入 COM 參考。

  6. 關閉資訊清單視窗和組件視窗。

還原 PIA 相依性

  1. 在方案總管中,按一下 [顯示所有檔案] 按鈕。 展開 [參考] 資料夾,然後選取 Microsoft.Office.Interop.Excel。 按 F4 顯示 [屬性] 視窗。
  2. 在 [屬性] 視窗中,將 [內嵌 Interop 類型] 屬性從 [True] 變更為 [False]
  3. Microsoft.Office.Interop.Word,重複本程序中的步驟 1 和 2。
  4. 按 F5 鍵,確認專案仍然正確地執行。
  5. 重複前一個程序中的步驟 1-3,開啟組件視窗。 請注意,Microsoft.Office.Interop.WordMicrosoft.Office.Interop.Excel 已不在內嵌的組件清單中。
  6. 按兩下資訊清單圖示,並捲動所參考之組件的清單。 Microsoft.Office.Interop.WordMicrosoft.Office.Interop.Excel 都在清單中。 由於應用程式會參考 Excel 和 Word PIA,而且 [內嵌 Interop 類型] 屬性設定為 [False],所以使用者電腦上必須具有這兩個組件。
  7. 在 Visual Studio 中,按一下 [建置] 功能表上的 [清除方案],清除已完成的專案。

另請參閱