我有一个 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