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

时间:2013-08-30 00:45:05

标签: excel vba excel-vba module

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

1 个答案:

答案 0 :(得分:7)

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

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

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