[英]Why i am getting type mismatch error when calling macro from vbscript
当我从vbscript调用下面的宏时,为什么我遇到类型不匹配错误
parameter.xlsm中的宏
Sub Proc(sParam1 As String, iParam2 As Integer)
MsgBox sParam1 & " is " & iParam2 & " Years Old"
End Sub
VB脚本代码
Dim objExcel,objWorkbook
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\ExcelFiles\parameter.xlsm")
sParam1 = Inputbox("Enter the first parameter")
iParam2 = Inputbox("Enter the second parameter")
iParam3= CInt(iParam2)
objExcel.Application.Visible = True
objExcel.Application.Run "parameter.xlsm!Proc",sParam1,iParam3
objExcel.ActiveWorkbook.Close
objExcel.Application.Quit
WScript.Echo "Finished."
WScript.Quit
在您的过程中,您正在连接字符串,但是第二个参数是整数类型。 您需要先使用CStr()函数将其转换为字符串
Sub Proc(sParam1 As String, iParam2 As Integer)
MsgBox sParam1 & " is " & CStr(iParam2) & " Years Old"
End Sub
尝试在vbscript中显式声明您的变量...我也习惯了在工作簿代码中使用很long
。
parameter.xlsm中的代码:
Option Explicit
Sub Proc(sParam1 As String, iParam2 As Long)
MsgBox sParam1 & " is " & iParam2 & " Years Old"
End Sub
VBScript代码:
Dim objExcel As Object
Dim objWorkbook As Workbook
Dim sParam1 As String
Dim iParam2 As Long, iParam3 As Long
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\ExcelFiles\parameter.xlsm")
sParam1 = InputBox("Enter the first parameter")
iParam2 = InputBox("Enter the second parameter")
iParam3 = CInt(iParam2)
objExcel.Application.Visible = True
objExcel.Application.Run "parameter.xlsm!Proc", sParam1, iParam3
objExcel.ActiveWorkbook.Close
objExcel.Application.Quit
WScript.Echo "Finished."
WScript.Quit
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.