【问题标题】:VBScript - Running Macro within script for ExcelVBScript - 在 Excel 脚本中运行宏
【发布时间】:2013-12-10 15:03:28
【问题描述】:

我已经搜索了这个社区和其他社区,但我仍然无法让它发挥作用。

我想要一个 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

任何帮助将不胜感激!

【问题讨论】:

  • 目前什么不起作用?

标签: excel vba vbscript


【解决方案1】:

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

用下面的替换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

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

【讨论】:

  • 抱歉没有更具体。我在第 7 行 char 1 上遇到语法错误。我已通过正确写出宏来解决此问题。我现在在第 25 行字符 1 上遇到未知运行时错误。感谢您的帮助。
  • @user3087335 您能否在不使用 VBScript 文件的情况下在工作簿中运行宏并验证嵌入宏本身是否正常运行?
  • @user3087335 我看不到行号,哪一行给你一个错误?错误信息是什么?
  • 错误:未知运行时错误代码:800A9C68 行:25 字符:1 这是:objExcel.Application.Run "test.xls!Billing_Cleanup" 请注意:尽管出现此错误,但宏仍在其中工作这个 VB 脚本,因为文件被正确导出。
  • 我想通了。宏告诉 excel 在 VB 脚本完成之前关闭。我从 Marco 中删除了它,它可以正常工作!谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 2017-12-24
相关资源
最近更新 更多