我有一个像下面那样的excel宏:
LinkedHashMap
我想将上面的宏转换为VBScript,其中文件路径应该是代码的一部分。
我在VBScript之下,但它只给了我一个名字,其余的被跳过了。
Sub terst1()
Dim rindex As Long
Dim saItem() As String
Dim Arr() As String
Dim Res() As String
Dim m As Long, i As Long
Dim InputRng As Range, OutRng As Range
For rindex = Cells(Rows.Count, "E").End(xlUp).Row To 1 Step -1
If InStr(Cells(rindex, "E").Value, ";") > 0 Then
Arr = VBA.Split(Cells(rindex, "E").Value, ";#")
m = UBound(Arr) \ 2
ReDim Preserve Res(m)
For i = 0 To m
Res(i) = Arr(i * 2)
Next
Rows(rindex + 1 & ":" & rindex + UBound(Res)).Insert
Cells(rindex, "E").Resize(UBound(Res) + 1).Value = WorksheetFunction.Transpose(Res)
End If
Next rindex
End Sub
答案 0 :(得分:2)
正如我评论的那样,当您尝试使用 Late Binding 时,它非常相似。
举个例子来考虑这个代码:
Sub Test()
Dim wb As Workbook
Set wb = Workbooks.Open("C:\User\Desktop\Sample.xlsm")
Application.Run "MyMacro"
wb.Save
wb.Close
End Sub
因此,在VBA上方打开一个文件,在该文件中运行一个宏,然后保存并关闭它 所以在VBScript中,等效的是:
Dim XLapp
Dim XLwb
Set XLapp = CreateObject("Excel.Application")
Set XLwb = XLapp.Worksbooks.Open("C:\User\Desktop\Sample.xlsm")
XLapp.Run "MyMacro"
XLwb.Save
XLwb.Close
XLapp.Quit
这不是一个直接的答案,而是一个暗示,让你知道它是如何完成的 我还没有探讨VBScript中支持VBA中的哪些功能,所以你也需要对它进行探索。
重要说明现在,正如您所看到的,您实际上可以在工作簿中编写大部分例程,然后使用上面的代码来运行它。这就是为什么我给你这个例子的原因,因为我过去也曾这样做过:)