連携 他のブックのSub・Functionステートメントを実行する

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

Option Explicit


Sub OthersBookSub(strPath As String, FileName As String, ModuleName As String _
, StatementName As String)
'****************************************
'他のブックのSubステートメントを実行する
'****************************************
'※使用するブックは開かれているものとする
'strPath:       呼び出すブックのパス(C:\など)
'FileName:      呼び出すブック名(パスは不要・.xlsは必要)
'ModuleName:    呼び出すモジュール名(Module1など)
'StatementName: 呼び出すSubステートメント名(Testなど)

Dim bk As Workbook

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Set bk = Workbooks.Open(strPath & FileName)

Application.Run FileName & "!" & ModuleName & "." & StatementName

bk.Close SaveChanges:=False

Set bk = Nothing

Application.ScreenUpdating = True
Application.DisplayAlerts = True

'使用例
'(各項目を変数で記述する場合)
'Application.Run NewBok.Name & "!" & "Module5" & "." & "ExcelSheetAllProtect"
'(直接記述)
'Application.Run "NewBok.xls!Module5.ExcelSheetAllProtect"

'※実際はこのような2重な使い方はしません。
End Sub


Function OthersBookFun(strPath As String, FileName As String, ModuleName As String _
, StatementName As String, vrn As VariantAs Variant
'**********************************************
'他のブックのFunctionステートメントを実行する
'**********************************************
'※使用するブックは開かれているものとする
'strPath:       呼び出すブックのパス(C:\など)
'FileName:      呼び出すブック名(パスは不要)
'ModuleName:    呼び出すモジュール名
'StatementName: 呼び出すFunctionステートメント名
'vrn:           呼び出すFunctionステートメントの引数
Dim bk As Workbook, vr As Variant

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Set bk = Workbooks.Open(strPath & FileName)

vr = _
Application.Run(FileName & "!" & ModuleName & "." & StatementName, vrn)

bk.Close SaveChanges:=False
Set bk = Nothing

Application.ScreenUpdating = True
Application.DisplayAlerts = True
OthersBookFun = vr

'使用例は上記参照

'※実際はこのような2重な使い方はしません。
End Function


Private Sub test()
Dim sht As Worksheet, strad As String, Lad As String
Dim XlsName As String
XlsName = "test.xls"
Set sht = ThisWorkbook.Worksheets("test")

With sht
    strad = .Cells(.Cells(65536, 4).End(xlUp).Row, 2).Value
End With

Lad = ServerAddressLocal(strad) & "\"
OthersBookSub Lad, XlsName, "testModule", "testsub"
End Sub


 

 

 

2000年01月01日|[VBサンプルコード]:[連携]