将Excel VBA(宏)转换为VBScript

时间:2015-04-23 15:20:15

标签: vba excel-vba vbscript excel

我有一个像下面那样的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

1 个答案:

答案 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中的哪些功能,所以你也需要对它进行探索。

重要说明现在,正如您所看到的,您实际上可以在工作簿中编写大部分例程,然后使用上面的代码来运行它。这就是为什么我给你这个例子的原因,因为我过去也曾这样做过:)