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


通過前兩章的內容,有了一定的基礎,但進入第三章,實例的步驟非常多,並且隨着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單元格,點“確定”,全部完成。

             

 

             

 

            

 

            

 

           

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM