通過前兩章的內容,有了一定的基礎,但進入第三章,實例的步驟非常多,並且隨着VS版本的升級,部分功能菜單界面發生了很大變化,所以,第三章的案例我將逐步編寫!
實例3.1的目標就是給Excel寫一個加載宏,實質就是寫一個Excel函數,並通過在注冊表中注冊,實現像自帶函數那樣的功能。
步驟一:Visual Studio 2013創建AutomationAddin類庫。
文件——新建——項目——模板——Visual Basic——類庫——名稱中輸入“AutomationAddin”——確定。
步驟二:在class1.vb代碼文件中書寫代碼:
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互操作注冊”復選框(在編譯頁的最下端)
步驟四:生成——生成解決方案。 注:若生成解決方案成功,則就意味着已經將宏成功注冊到了注冊表。
步驟五:新建一個Excel文件,並選擇“開發工具”——“加載項”——“自動化”——“AutomationAddin.MyFunctions”——確定。當提示不能找到mscoree.dll的錯誤信息時選擇“否”。
步驟六:應用剛寫的函數MultiplyNTimes,第一個數是基數,第二個數乘第一個數,第三個數表示乘的次數,MultiplyNTimes(1,2,3)=1X2X2X2=16
在Excel中輸入值:10,3,5 並選中單元格——“插入函數”——或選擇類別中的“AutomationAddin.MyFunctions”——選擇函數中的“MultiplyNTimes”——確定
在函數參數對話框中填入所需參數E2,E3,E4單元格,點“確定”,全部完成。