Я борюсь с VBA Sub, который вызывается кнопкой. Этот Sub открывает таблицу Configuration.xls Excel из жестко закодированного пути к файлу. MsgBox расскажет мне о текущей рабочей области - рабочая область изменяется от текущего файла до только что открытого. Здесь все хорошо.Вызов функции VBA: клавиша Excel против VBS-вызова
Теперь я хочу выполнить этот Sub из внешней партии, которая вызывает VBS, который вызывает VBA Sub. Рабочее пространство после открытия файла Configuration.xls остается неизменным и не изменяется в Configuration.xls. Кроме того, при вызове Sub на VBS функция запускается дважды - не подскажите почему.
Так что мой вопрос: почему у меня разные способы взаимодействия между двумя механизмами вызова?
Я упростил приведенный ниже код, поскольку он показывает то же поведение, что и мой более сложный реальный код.
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
Я могу воспроизвести вашу проблему независимо от того, является ли она функцией sub/a. Хороший вопрос, я всегда следовал примеру онлайн без(). Я хотел бы знать, что происходит с(). – Larry