VSTO開發指南(VB版) 第三章 Excel編程

經過前兩章的內容,有了必定的基礎,但進入第三章,實例的步驟很是多,而且隨着VS版本的升級,部分功能菜單界面發生了很大變化,因此,第三章的案例我將逐步編寫!函數

實例3.1的目標就是給Excel寫一個加載宏,實質就是寫一個Excel函數,並經過在註冊表中註冊,實現像自帶函數那樣的功能。工具

步驟一:Visual Studio 2013建立AutomationAddin類庫。開發工具

            文件——新建——項目——模板——Visual Basic——類庫——名稱中輸入「AutomationAddin」——肯定。ui

           

 

 

步驟二:在class1.vb代碼文件中書寫代碼:spa

          

Imports System
Imports System.Runtime.InteropServices
Imports Microsoft.Win32

<ClassInterface(ClassInterfaceType.AutoDual), ComVisible(True)> _
Public Class MyFunctions

    Public Function MultiplyNTimes(ByVal number1 As Double, ByVal number2 As Double, ByVal timesToMultiply As Double) As Double

        Dim result As Double = number1
        For i As Double = 0 To timesToMultiply
            result = result * number2
        Next

        Return result
    End Function

    <ComRegisterFunctionAttribute()> _
    Public Shared Sub RegisterFunction(ByVal type As Type)
        Registry.ClassesRoot.CreateSubKey(GetSubKeyName(type))
    End Sub
    <ComUnregisterFunctionAttribute()> _
    Public Shared Sub UnregisterFunction(ByVal type As Type)
        Registry.ClassesRoot.DeleteSubKey(GetSubKeyName(type), False)
    End Sub

    Private Shared Function GetSubKeyName(ByVal type As Type) _
      As String
        Dim s As New System.Text.StringBuilder()

        s.Append("CLSID\{")
        s.Append(type.GUID.ToString().ToUpper())
        s.Append("}\Programmable")

        Return s.ToString()
    End Function

End Class

步驟三:項目——「AutomationAddin」屬性——>編譯——>選中「爲COM互操做註冊」複選框(在編譯頁的最下端)3d

               

 

 步驟四:生成——生成解決方案。  注:若生成解決方案成功,則就意味着已經將宏成功註冊到了註冊表。code

              

 

 步驟五:新建一個Excel文件,並選擇「開發工具」——「加載項」——「自動化」——「AutomationAddin.MyFunctions」——肯定。當提示不能找到mscoree.dll的錯誤信息時選擇「否」。blog

             

 

            

 

          

 

 

 步驟六:應用剛寫的函數MultiplyNTimes,第一個數是基數,第二個數乘第一個數,第三個數表示乘的次數,MultiplyNTimes(1,2,3)=1X2X2X2=16ip

              在Excel中輸入值:10,3,5   並選中單元格——「插入函數」——或選擇類別中的「AutomationAddin.MyFunctions」——選擇函數中的「MultiplyNTimes」——肯定開發

             在函數參數對話框中填入所需參數E2,E3,E4單元格,點「肯定」,所有完成。