VBScript - 在Excel脚本中运行宏

时间:2013-12-10 15:03:28

标签: excel vba vbscript

我搜索了这个社区和其他人,我仍然难以让这个工作。

我想要一个VB脚本,当我执行它时会打开一个Excel文档,运行一个脚本(宏),然后关闭excel。

我打开的文档中不存在宏,这就是为什么我想在VB脚本中使用宏

我试图修改这个,但没有运气。当我输入我的宏代码时,它失败了。我知道VBS和VBA不同,但我对这两者都不是很有经验。

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.DisplayAlerts = False
Set objWorkbook = objExcel.Workbooks.Open("C:\scripts\test.xls")
       Set xlmodule = objworkbook.VBProject.VBComponents.Add(1) 
       strCode = _
       "sub test()" & vbCr & _
       "   msgbox ""Inside the macro"" " & vbCr & _
       "end sub"
       xlmodule.CodeModule.AddFromString strCode
objWorkbook.SaveAs "c:\scripts\test.xls"
objExcel.Quit

这是我想要合并到这个VB脚本中的宏。

Sub Billing_Cleanup()

    Columns("A:A").Select
    Selection.Delete Shift:=xlToLeft
    Rows("1:8").Select
    Range("A8").Activate
    Selection.Delete Shift:=xlUp
    Columns("E:E").Select
    Selection.ClearContents
    ChDir "C:\Billing Export"
    ActiveWorkbook.SaveAs FileFormat:=xlCSV, Local:=True, CreateBackup:=False
    Application.WindowState = xlMinimized
    Application.WindowState = xlNormal
    Application.DisplayAlerts = False
    ActiveWorkbook.Close
    Application.Quit
End Sub

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我不能只猜猜什么对你不起作用,但合并/ 替换宏应该是直截了当的......

使用以下内容替换VBScript文件中的当前代码,保存并运行,看看这是否是您想要的

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.DisplayAlerts = False
Set objWorkbook = objExcel.Workbooks.Open("C:\scripts\test.xls")
       Set xlmodule = objworkbook.VBProject.VBComponents.Add(1) 
       strCode = _
        "Sub Billing_Cleanup()" & vbCr & _
        "    Columns(""A:A"").Select" & vbCr & _
        "    Selection.Delete Shift:=xlToLeft" & vbCr & _
        "    Rows(""1:8"").Select" & vbCr & _
        "    Range(""A8"").Activate" & vbCr & _
        "    Selection.Delete Shift:=xlUp" & vbCr & _
        "    Columns(""E:E"").Select" & vbCr & _
        "    Selection.ClearContents" & vbCr & _
        "    ChDir ""C:\Billing Export""" & vbCr & _
        "    ActiveWorkbook.SaveAs FileFormat:=xlCSV, Local:=True, CreateBackup:=False" & vbCr & _
        "    Application.WindowState = xlMinimized" & vbCr & _
        "    Application.WindowState = xlNormal" & vbCr & _
        "    Application.DisplayAlerts = False" & vbCr & _
        "    ActiveWorkbook.Close" & vbCr & _
        "    Application.Quit" & vbCr & _
        "End Sub"
       xlmodule.CodeModule.AddFromString strCode

objExcel.Application.Run "test.xls!Billing_Cleanup"  
objWorkbook.Save
objExcel.Quit

注意额外的"双引号来转义字符串

中的引号
相关问题