1

Я очень плохо знаком с миром 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 ответ1

1

Простой & не работает для меня в Excel 2007; может быть, вы имели в виду &[File] или, может быть, & является сокращением в новых версиях?

Что касается файлов 5000, вы, вероятно, захотите убедиться, что они все находятся в одном месте, а затем перебрать все файлы .xlsx в этом месте. (Вам нужно фильтровать по имени файла?)

Если вы гуглите 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, который вызывает себя рекурсивно (и передаёт местоположение папки в качестве параметра). Поиск в гугле vba loop through folder tree ... Смотрите рекурсивный ответ на этой странице

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .