国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
VBA中訪問VSTO文檔級項目中的代碼
調(diào)用文檔級項目中的代碼分兩種情況,無論哪種情況都需要遵循以下步驟
1、新建一個啟用宏的工作薄,比如工作薄1.xlsm,輸入以下代碼:
Public Sub Test()
End Sub
在建立VSTO項目時使用的工作薄必須包含VBA代碼,哪怕像下面一樣輸入一個空的過程(如果你要使用的工作薄已經(jīng)包含VBA代碼,可以忽略第一步),其作用是使Visual Studio 可以在文檔中添加VBA 代碼并使 VBA 代碼能夠調(diào)用VSTO代碼。
2、使用包含代碼的工作薄建立VSTO項目并保存
3、打開Excel,依次單擊【文件】——【選項】——【信任中心】——【信任中心設(shè)置】,在【信任中心】對話框中單擊【受信任位置】——【添加新位置】——【瀏覽】——選擇保存有你的VSTO項目的文件夾——勾選【同時信任此位置的子文件夾】——【確定】——【確定】,關(guān)閉Excel。以使項目中的Excel文檔中的VBA代碼受信任可執(zhí)行。
如果要調(diào)用的代碼在宿主項中(簡單說,VSTO項目中的ThisWorkbook,Sheet1,Sheet2......就是宿主項)
1、雙擊“Thisworkbook.vb”或“Sheet1.vb",修改“EnableVbaCallers”屬性為“True”,添加如下代碼以測試在VBA中調(diào)用
<Microsoft.VisualBasic.ComClassAttribute()> <System.Runtime.InteropServices.ComVisibleAttribute(True)> Public Class ThisWorkbook
Private Sub ThisWorkbook_Startup() Handles Me.Startup
End Sub
Private Sub ThisWorkbook_Shutdown() Handles Me.Shutdown
End Sub
Public Sub GetSYS()
MessageBox.Show(My.Computer.Info.OSFullName.ToString)
End Sub
End Class
<Microsoft.VisualBasic.ComClassAttribute()><System.Runtime.InteropServices.ComVisibleAttribute(True)> Public ClassSheet1
Private Sub Sheet1_Startup() Handles Me.Startup
EndSub
Private Sub Sheet1_Shutdown() Handles Me.Shutdown
EndSub
Public Sub GetNum()
MessageBox.Show(My.Computer.Info.OSVersion.ToString)
EndSub
End Class
<Microsoft.VisualBasic.ComClassAttribute()> <System.Runtime.InteropServices.ComVisibleAttribute(True)> Public Class ThisWorkbook和
<Microsoft.VisualBasic.ComClassAttribute()><System.Runtime.InteropServices.ComVisibleAttribute(True)> Public ClassSheet1
是在修改“EnableVbaCallers”屬性為“True”時自動添加的,以向VBA公開宿主項,ComClassAttribute和ComVisibleAttribute請參閱有關(guān)幫助。
2、生成項目并保存
3、打開項目中\(zhòng)bin\debug\下的excel文件,在"shett1"或"thisworkbook"模塊中會看到如下代碼
Property Get CallVSTOAssembly() As ExcelWorkbook1.Sheet1
Set CallVSTOAssembly = GetManagedClass(Me)
End Property
Property Get CallVSTOAssembly() As ExcelWorkbook1.ThisWorkbook
Set CallVSTOAssembly = GetManagedClass(Me)
End Property
此代碼是在修改“EnableVbaCallers”屬性為“True”時自動添加的,利用CallVSTOAssembly屬性可以訪問VSTO代碼
4、在"shett1"或"thisworkbook"模塊中分別新建一個過程,輸入代碼如下
Public Sub CallVSTOSYS()
Call ThisWorkbook.CallVSTOAssembly.GetSYS
End Sub
Public Sub CallVSTONUM()
Call Sheet1.CallVSTOAssembly.GetNum
End Sub
運行以上過程就可以調(diào)用VSTO中的代碼
如果要調(diào)用的代碼不在宿主項中
1、在項目中添加一個類模塊Class1(新添加的類不是宿主項)
2、給新建的類添加 ComVisibleAttribute 和 ComClassAttribute 特性以向 VBA 公開類。使其對于 VBA 可見。 在類中聲明要用VBA調(diào)用的代碼如下
<Microsoft.VisualBasic.ComClass()> _
<System.Runtime.InteropServices.ComVisibleAttribute(True)> _
Public Class Class1
Public Sub GetUser()
My.User.InitializeWithWindowsUser()
MessageBox.Show(My.User.Name.ToString)
End Sub
End Class
3、在ThisWorkbook.vb里添加如下代碼,用來重寫項目中宿主項類的 GetAutomationObject 方法以返回要向 VBA 公開的類的實例。
Protected Overrides Function GetAutomationObject() As Object
Return New Class1
End Function
4、雙擊ThisWorkbook.vb,在屬性窗口設(shè)置其“ReferenceAssemblyFromVbaProject”屬性為TRUE,此操在VBA 項目中添加GetManagedClass 方法 ,VBA中利用此方法訪問VSTO中的代碼
5、生成項目并保存
6、打開項目中\(zhòng)bin\debug\下的excel文件,在“thisworkbook"模塊添加如下代碼
Public Sub CallVSTO()
Dim objVSTO As ExcelWorkbook1.Class1
Set objVSTO = GetManagedClass(ThisWorkbook)
objVSTO.GetUser
End Sub
GetManagedClass的參數(shù)”ThisWorkbook“是你重寫 GetAutomationObject 方法的宿主項類
運行以上過程就可以調(diào)用VSTO中的代碼
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VBA 修改關(guān)閉不保存代碼
VBA入門33:關(guān)閉工作簿
禁止Excel工作薄文件被拷貝復(fù)制的方法
使用VBA實現(xiàn)Excel自毀功能
你加班1小時做表格,我用VBA只需1秒種
用VBA打開、關(guān)閉、新建、保存和刪除Excel工作簿 | VBA實例教程
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服