1
我正在努力與一個按鈕調用的VBA Sub。該Sub從硬編碼文件路徑打開Configuration.xls Excel電子表格。一個MsgBox告訴我當前的工作空間 - 工作空間從當前文件更改爲剛打開的文件。這裏一切都很好。VBA函數調用:Excel按鈕vs VBS調用
我現在想從外部批處理執行這個Sub,它調用調用VBA Sub的VBS。打開Configuration.xls文件後的工作空間保持不變,並且不會更改爲Configuration.xls。另外,當通過VBS調用Sub時,函數會執行兩次 - 不知道爲什麼。
所以我的問題是 - 爲什麼我在兩個調用機制之間有不同的行爲?
我簡化了下面的代碼,因爲它顯示了與我更復雜的實際代碼相同的行爲。
Sub ReadConfiguration()
MsgBox ActiveWorkbook.Name
FileExcel = "D:\_Trash\VBA_VBS\Configuration.xls"
Workbooks.Open Filename:=FileExcel, ReadOnly:=True, IgnoreReadOnlyRecommended:=True
strFileName = FunctionGetFileName(FileExcel)
MsgBox ActiveWorkbook.Name
On Error Resume Next
Set wBook = Workbooks(strFileName)
If Err Then
Exit Sub
End If
ActiveWorkbook.Close savechanges:=False
End Sub
'*****************************************************
Function FunctionGetFileName(FullPath As Variant)
Dim StrFind As String
Do Until Left(StrFind, 1) = "\"
iCount = iCount + 1
StrFind = Right(FullPath, iCount)
If iCount = Len(FullPath) Then Exit Do
Loop
FunctionGetFileName = Right(StrFind, Len(StrFind) - 1)
End Function
'*****************************************************
的VBS看起來像這樣
Dim args, objExcel
Set args = WScript.Arguments
Set objExcel = CreateObject("Excel.Application")
objExcel.Workbooks.Open args(0)
objExcel.Visible = False
objExcel.Run "Module1.ReadConfiguration()"
objExcel.ActiveWorkbook.Close(0)
objExcel.Quit
我可以重現你的問題,不管它是一個子/功能。好問題,我總是在沒有()的情況下在網上進行示例。我想知道()是怎麼回事。 – Larry 2013-02-27 07:41:04