首页 文章

VBScript循环遍历Excel文件并更改宏

提问于
浏览
0

上周我已经发布了一个密切相关的问题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 . 或者有更好的解决方案吗?

在此先感谢您的帮助 .

1 回答

  • 0

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

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

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

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

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

    所以我建议更换

    objExcel.Quit
    

    objWorkbook.Close
    

相关问题