VBScript – 在Excel脚本中运行macros

我已经search了这个社区和其他人,我仍然有困难得到这个工作。

我想有一个VB脚本,当我执行它将打开一个Excel文档,运行脚本(macros),并closuresExcel。

该macros不存在于我打开的文档中,这就是为什么我想在VB脚本中有macros

我试图修改这个,但没有运气。 当我input我的macros代码到它失败。 我明白,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脚本的macros。

 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 

任何帮助将不胜感激!

我不能猜测什么不适合你,但合并/ replacemacros应该是直截了当的…

用VBScript文件replace下面的代码,保存并运行,看看这是你想要的

 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 

请注意一个额外的"双引号string中的转义引号