vba - 从 VBA Excel 宏函数获取 VBscript 中的值

标签 vba excel vbscript

对 VBscript 和 VBA 相当陌生...希望得到一些帮助,并且这是一个简单的答案...

我正在从 VBscript 调用 Excel VBA 中的宏/函数。对函数的调用应返回一个数字。在 Excel 中使用 VBA 调试,该函数似乎工作正常(在本例中,它显示值 1),但当我调用宏/函数并尝试在 VBscript 中回显该值时,它显示为“空”。

如何将 VBA 中的值返回到 VBscript?
感谢您的帮助

VBscript 代码示例:

Set excelOBJ = CreateObject("Excel.Application")
Set workbookOBJ = excelOBJ.Workbooks.Open("C:\variable.xlsm")

excelOBJ.Application.Visible = True
excelOBJ.DisplayAlerts = False

REM mostly for testing purposes
    Dim returnValue
    returnValue = 10

    Wscript.Echo "'returnValue' value before call to macro function = " & returnValue
    Wscript.Echo "'returnValue' TypeName before call to macro function = " & TypeName(returnValue)

returnValue = excelOBJ.Run("ThisWorkbook.getNum")

    Wscript.Echo "'returnValue' value after call to macro function = " & returnValue
    Wscript.Echo "'returnValue' TypeName after call to macro function = " & TypeName(returnValue)

excelOBJ.quit

Excel 中的 VBA 示例:

Public Function getNum()
    getNum = 1
    Debug.Print "getNum value = " & getNum
End Function

输出:

'returnValue' value before call to macro function = 10
'returnValue' TypeName before call to macro function = Integer

REM Inside Excel VBA editor
    getNum value = 1

'returnValue' value after call to macro function = 
'returnValue' TypeName after call to macro function = Empty

最佳答案

我建议您将代码移至模块(如果尚未移至模块中)。

应该更改此代码

returnValue = excelOBJ.Run("ThisWorkbook.getNum")

如果代码位于工作表中,假设您的工作表是“Sheet1”,这可能会起作用

returnValue = excelOBJ.Run("Sheet1.getNum")

否则,如果它在模块中,则只需使用模块名称

returnValue = excelOBJ.Run("Module1.getNum")

如果它通过此更改开始运行,但您没有收到任何返回值,您可以更改函数以传递返回值参数 ByRef 并以这种方式进行检查

关于vba - 从 VBA Excel 宏函数获取 VBscript 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50595916/

相关文章:

vba - 如何将路径从 "specialfolders(16)"更改为 C 盘上的 XYZ 文件夹?

javascript - excel onclick 表格

vba - 从多个 Excel 工作表复制数据并使用 VBScript 将其附加到单个 Excel 工作表

vba - Excel 中录制的宏在运行时失败

java - 有没有办法使用 POI Api 将图像添加到单元格?

vba - UFT 14.00 如何在不同操作中使用函数的属性

batch-file - 从目录中随机选择批处理文件?

excel - 结合标准/宏VBA

excel - 使用 YouTube API 的 HTTP POST 请求的请求正文中包含什么内容?

excel - 在每个单元格中插入一个复选框并将其分配给该单元格