3

我开发了一个宏来批量更新文件位置中的文件。我使用以下代码,它运行良好,但是脚本的编辑部分需要更改每个文件中的 VBA 模块才能使调用编辑宏中的更改生效。执行批量文件更新时,如何批量更新模块内容。

Sub Auto_open_change()

    Dim WrkBook As Workbook
    Dim StrFileName As String
    Dim FileLocnStr As String
    Dim LAARNmeWrkbk As String

    PERNmeWrkbk = ThisWorkbook.Name


    FileLocnStr = "C:\Users\gornalla\Desktop\PER Update" 'ThisWorkbook.Path

    Dim StrFile As String
    StrFile = Dir(FileLocnStr & "\*.xlsm")
    Do While Len(StrFile) > 0
        DoStuff (FileLocnStr & "\" & StrFile)
        StrFile = Dir
    Loop

End Sub

Private Sub DoStuff(StrFileName)

    Workbooks.Open (StrFileName)
    'Workbooks(StrFileName).Activate
    ActiveSheet.Unprotect ("147258369")
    Sheets("Property Evaluation Report").Select
    ActiveSheet.Unprotect ("147258369")

        Call Edit

    ActiveWorkbook.RefreshAll
    Sheets("Property Evaluation Report").Select
    ActiveSheet.Protect Password:="147258369", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowUsingPivotTables:=True
    ActiveWorkbook.Close

    Application.SendKeys ("Enter")

End Sub
4

1 回答 1

7

虽然可以通过使用代码来修改代码,但这并不是一个很好的做法(如果您坚持,请参阅此处此处获取一些参考资料)。相反,最好将值存储在更可变的位置并从那里引用它,或者只是将其捕获为用户的输入。

您可以从存储在常见且不太可能更改的位置的文本文件中读取数据,但这会增加额外的复杂性。相反,我建议只创建一个可以在代码中引用的隐藏列或隐藏工作表。如果您愿意,甚至可以锁定和保护任何一个,而不仅仅是隐藏。

使用隐藏工作表或列的优点是数据附加到工作簿(外部文件不是),并且它还可以在会话之间保持更改。您可以更新该字段中的值,以便下次访问该文件时,它会记住您上次使用的文件。

于 2013-08-30T03:35:30.513 回答