将文件名标题插入众多 XLSX 文件中

将文件名标题插入众多 XLSX 文件中

我对 VBA 还很陌生,但我需要一个 VBA 脚本来将文件名作为页脚插入 Excel。理想情况下,我想将文件名的前 7 个字符插入到 excel 文件的每个选项卡的页脚中。

我有大约 5000 个 Excel 文件需要此宏。我只能使用以下代码将页眉/页脚插入每个工作表和所有选项卡(而不是多个文件):

Sub InsertHeaderFooter()    
' inserts the same header/footer in all worksheets

  Dim ws As Worksheet   
  Application.ScreenUpdating = False

  For Each ws In ActiveWorkbook.Worksheets

    Application.StatusBar = "Changing header/footer in " & ws.Name    
    With ws.PageSetup    
      .RightFooter = "&"    
    End With

  Next ws

  Set ws = Nothing    
  Application.StatusBar = False

End Sub

答案1

在 Excel 2007 中, Plain&对我来说不起作用;也许您是指&[File]&版本中的简写?

对于 5000 个文件,您可能需要确保它们都位于同一位置,然后循环遍历该位置的所有 .xlsx 文件。(您是否也需要根据文件名进行过滤?)

如果你用 Google 搜索,multiple files excel vba我认为你会发现第 3 条结果和下面的结果相关。MSDN 文章中的一些关键元素:

' Modify this folder path to point to the files you want to use.
FolderPath = "C:\Users\Peter\invoices\"

' Call Dir the first time, pointing it to all Excel files in the folder path.
FileName = Dir(FolderPath & "*.xl*")

' Loop until Dir returns an empty string.
Do While FileName <> ""

    ' Open a workbook in the folder
    Set WorkBk = Workbooks.Open(FolderPath & FileName)

    ' DO WORK

    ' DO SAVE CHANGES
    WorkBk.Close savechanges:=True

    ' Use Dir to get the next file name.
    FileName = Dir()
Loop

如果需要深入到子目录中,请考虑将整个 Do While 循环拆分为一个 Sub,该 Sub 以递归方式调用自身(并将文件夹位置作为参数传递)。谷歌搜索vba loop through folder tree...请参阅递归答案这一页

相关内容