Excel 2010 VBA宏可以更改另一个文件中模块的内容

Adr*_*all 3 excel vba module excel-vba

我已经开发了一个宏来批量更新文件位置中的文件.我使用以下代码,它完美地工作,但是脚本的编辑部分需要更改每个文件中的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
Run Code Online (Sandbox Code Playgroud)

tec*_*tle 7

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

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

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