【发布时间】:2019-10-21 06:26:43
【问题描述】:
我想从有参数的 vbscript 调用 vba 函数,我知道如何调用参数化子函数但遇到函数问题
这是我尝试过的,我在这里尝试了代码 Calling vba function(with parameters) from vbscript and show the result ,但这也没有用,它给出了预期的错误语句结束
Set xlObj = CreateObject("Excel.Application")
Set objWorkbook = xlObj.Workbooks.Open("E:\Headers.xlsm")
xlObj.Application.Visible = False
xlObj.Workbooks.Add
Dim result
result = xlObj.Application.Run("Headers.xlsm!Headers",filename)
xlFile.Close True
xlObj.Quit
这是我的 vba 函数
Function Headers(filename As String) As String
Application.ScreenUpdating = False
Dim myWb As Workbook
Dim i As Integer
Dim flag As Boolean
Set myWb = Workbooks.Open(filename:=filename)
Dim arr
arr = Array("col1","col2")
For i = 1 To 2
If Cells(1, i).Value = arr(i - 1) Then
Headers = "True"
Else
Headers = "False , Not Found Header " & arr(i - 1)
Exit Function
End If
Next
myWb.Close
End Function
【问题讨论】:
-
不应该
xlObj.Application.Run是xlObj.Run吗?xlObj已经是应用程序。您是否设法找出错误发生在哪一行? VBScript 中的filename是什么?它未定义且为空。 • 请注意,如果您Exit Function,则工作簿不会关闭,因为永远无法到达myWb.Close(它会在代码的这一点立即取消该功能)。而是使用Exit For退出循环并仍然关闭工作簿。 -
xlObj.Run 文件名硬编码工作,将尝试使用 dynamci