从vbscript调用vba函数(带参数)并显示结果

时间:2012-11-05 12:58:08

标签: vba vbscript arguments

我有以下vba功能(在Excel文件的模块中)

Public Function validate_fncname(strFncname As String) As Boolean
.
.
.
validate_fncname  = True
End Function

我写了下面的vbscript来调用它:

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook =  objExcel.Workbooks.Open("C:\Users\uidu8611\Desktop\CAM0500040F10_SW_Quality_Assurance_Report_Template(new_version).xlsm")

objExcel.Application.Visible = True

Dim str
str ="hello"

Dim validate_fncname 

 validate_fncname =  objExcel.Application.Run("'C:\Users\uidu8611\Desktop\CAM0500040F10_SW_Quality_Assurance_Report_Template(new_version).xlsm'!validate_fncname", str)

Wscript.Echo validate_fncname

然而,当我运行脚本时,它给出了行的类型不匹配错误:

objExcel.Application.Run("'C:\Users\uidu8611\Desktop\CAM0500040F10_SW_Quality_Assurance_Report_Template(new_version).xlsm'!validate_fncname", str)

尽管类型是正确的(String)

此外,如果我将其更改为:

objExcel.Application.Run("'C:\Users\uidu8611\Desktop\CAM0500040F10_SW_Quality_Assurance_Report_Template(new_version).xlsm'!validate_fncname(5)")

它不会给我一个错误,虽然5是整数!

我的错误在哪里?

2 个答案:

答案 0 :(得分:1)

您已经拥有validate_fncname方法,看起来不错(除非将返回值设置为True,可能应该在if then语句中完成,以避免将所有内容设置为{{1} })。

调用此函数时,您应该能够执行以下操作:

True

答案 1 :(得分:0)

我玩了一段时间并且出现了同样的错误 在我的情况下,我只是想来回传递一个字符串。

然后我查看了VBScript的昏暗语句,它说“所有VBScript变量都是变体”,所以我将电子表格上的函数更改为Variant,这对我有用。希望这有助于遇到这个问题的其他人。