【问题标题】:VBScript to loop through Excel-files and change macroVBScript 循环遍历 Excel 文件并更改宏
【发布时间】:2017-03-09 20:53:32
【问题描述】:

我上周已经发布了一个密切相关的问题VBScript to add code to Excel workbook,该问题已被一位程序员解决。但我遇到了该任务的下一个问题:

使用下面的代码,我尝试遍历一个 Excel 文件文件夹,然后一个一个地打开它们并更改 DieseArbeitsmappe 中的宏。这适用于第一个文件,但第二个文件以此错误消息结束。 Error message

Set objFSO = CreateObject("Scripting.FileSystemObject")
sFolder = "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\"
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.DisplayAlerts = False

For Each objFile In objFSO.GetFolder(sFolder).Files  
  Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name)

    Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe")

       strCode = _
       "Sub WorkBook_Open() 'just for testing" & vbCr & _
       "   Application.Run (""'CommonMacro.xlsm'!Workbook_Open"")" & vbCr & _
       "End Sub"
        component.CodeModule.AddFromString strCode

    objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" & objFile.Name
    objExcel.Quit

    Set objWorkbook = Nothing
    Set component = Nothing

Next

Set objFSO = Nothing
Set objExcel = Nothing

第 10 行是Set component = objworkbook.VBProject.VBComponents("DieseArbeitsmappe")

我很快将面临的另一个问题是,有时VBComponent 被称为ThisWorkbook。所以我将不得不根据第10行抛出的错误代码来介绍if-else。或者有更好的解决方案吗?

提前感谢您的帮助。

【问题讨论】:

  • 您可以这样做,但要编写一个专用函数来返回适当的组件。将错误处理放入此函数中(尝试获取 VBComponents("DieseArbeitsmappe") 如果错误获取“ThisWorkbook”等)
  • 旁注:将objWorkbook.SaveAs "P:\Administration\Reports\operativ\Tagesbericht\templates\START07\TestTabsiNeu\" 替换为objWorkbook.SaveAs sFolder

标签: vba excel vbscript


【解决方案1】:

这不是一个完美的答案,因为我比我确定的确切问题更困惑......但是希望这会有所帮助。

objExcel.Quit 命令将关闭 Excel 应用程序。

我不太确定代码(在下一个循环中)如何成功执行

Set objWorkbook = objExcel.Workbooks.Open(sFolder & objFile.Name)

objExcel 应用程序退出时。但是,.Visible.DisplayAlerts 将不再设置为 True/False。后者可能会导致您在第 10 行失败。

因此我建议更换

 objExcel.Quit

objWorkbook.Close

【讨论】:

  • 谢谢。用objWorkbook.Close 替换objExcel.Quit 解决了主要问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多