将 Excel VBA 函数应用于多个文件

将 Excel VBA 函数应用于多个文件

我有一个 Excel VBA 函数和大约 30 个包含数据(和相同的数据结构)的文件,我想将该函数应用到这些文件。

我的方法是在单独的 Excel 文件中编写一个宏,该宏打开 Excel 文件并对这 30 个文件中的每一个执行必要的修改。

答案1

将宏写在单独的文件中似乎是最好的方法。找到了相关代码这里关于如何循环遍历我的 Excel 文件:

Sub ProcessFiles()
Dim Filename, Pathname As String
Dim wb As Workbook

Pathname = ActiveWorkbook.Path & "\Files\"
Filename = Dir(Pathname & "*.xls")
Do While Filename <> ""
    Set wb = Workbooks.Open(Pathname & Filename)
    DoWork wb
    wb.Close SaveChanges:=True
    Filename = Dir()
Loop
End Sub

Sub DoWork(wb As Workbook)
With wb
    'Do your work here
    .Worksheets(1).Range("A1").Value = "Hello World!"
End With
End Sub

“在此示例中,DoWork() 是您应用于所有文件的宏。请确保您在宏中进行的所有处理始终在 wb(当前打开的工作簿)的上下文中进行。”

找到了有关如何将相关 VBA 代码插入到我的 30 个文件中的附加代码这里

Public Sub AddNewModule()

Dim proj As VBIDE.VBProject
Dim comp As VBIDE.VBComponent

Set proj = ActiveWorkbook.VBProject
Set comp = proj.VBComponents.Add(vbext_ct_StdModule)
comp.Name = "MyNewModule"

Set codeMod = comp.CodeModule

  With codeMod
  lineNum = .CountOfLines + 1
  .InsertLines lineNum, "Public Sub ANewSub()"
  lineNum = lineNum + 1
  .InsertLines lineNum, "  MsgBox " & """" & "I added a module!" & """"
  lineNum = lineNum + 1
  .InsertLines lineNum, "End Sub"
  End With

End Sub

相关内容