2014-05-06 33 views
1

調用宏時,當我打電話下面從VBScript宏爲什麼我收到類型不匹配錯誤爲什麼我從VBScript

宏在parameter.xlsm

Sub Proc(sParam1 As String, iParam2 As Integer) 
MsgBox sParam1 & " is " & iParam2 & " Years Old" 
End Sub 

VB Script代碼

得到類型不匹配錯誤
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 

回答

0

嘗試在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 
+0

我認爲我們不能在VBS中將變量調暗爲特定值,並且如果我們嘗試Dim變量作爲任何事情,它都會拋出一個錯誤。在僅修改以上腳本objExcel.Application.Run「parameter.xlsm!Proc」,CStr(sParam1),CInt(iParam3)的腳本之後。它工作 – user3591858

+0

偉大的一點,我的一個重大錯誤 - 所有變量在VBScript是變種。很高興你有這個排序! –

0

在你的程序中,你串聯了字符串,但第二個參數的類型是integer。你需要轉換爲字符串首先使用CSTR的()函數

Sub Proc(sParam1 As String, iParam2 As Integer) 
MsgBox sParam1 & " is " & CStr(iParam2) & " Years Old" 
End Sub 
+0

鹼式,在不改變我的程序,如果我對sParam1輸入值 「大衛」 和iParam3 30手動我是沒有得到任何錯誤 – user3591858

+0

對不起,這是我能想到的所有=(我認爲這是拋出錯誤的objExcel.Application.Run? – Pepto