Я ОЧЕНЬ новичок в VBA, поэтому будьте осторожны ...
Я пытаюсь автоматизировать создание новой вкладки в нескольких книгах. Каждую неделю вручную создается новая вкладка для предстоящих выходных.
Я могу получить код для поиска по столбцу, чтобы найти выходные, которые необходимо создать, но затем я бы хотел перейти к следующий столбец и сделайте то же самое. На одной вкладке рабочей книги «Создатель» у меня есть выходные дни (Даты), на другой - список отдельных рабочих книг (Книги), для которых потребуется создать новую вкладку. Список отдельных рабочих книг захватывается другим сценарием, а затем печатается на вкладках «Даты» (в строке 2, начиная с C2) и «Книги» (в столбце A, начиная со строки 2). Я приложил пример рабочей книги «создатель», которую я использую. Вновь созданная вкладка должна быть переименована на правильные выходные. Пример вкладки "Даты"
Пример вкладки "Книги"
Вот код, который я использую. Будет создана первая новая вкладка, но после этого она остановится.
Sub createNewTab()
Dim wB As Workbook
Dim wS As Worksheet
Dim bK As Worksheet
Dim r As Long
Dim i As Long
Dim c As Long
Dim fPath As String
Dim lastRow As Long
Dim lastDate As Long
Dim bDate As String
Dim eDate As String
Dim created As Long
Dim newBook As Workbook
Dim lDate As String
Dim nDate As String
Dim nBDate As String
Dim nEDate As String
Dim allSheets As Long
Set wB = Workbooks("Example Sheet Creator")
Set wS = wB.Sheets("Dates")
Set bK = wB.Sheets("Books")
lastRow = bK.Cells(Rows.Count, "A").End(xlUp).Row
lastDate = wS.Cells(Rows.Count, "C").End(xlUp).Row
allSheets = wS.Cells(2, Columns.Count).End(xlToLeft).Column
For c = 3 To allSheets
Do While c <= allSheets
For r = 2 To lastRow
If r <= lastRow And wS.Cells(2, c).Value = bK.Cells(r, 1).Value Then
For i = 3 To lastDate
While i <= lastDate And wS.Cells(i, 3).Text = "n"
bDate = Format(wS.Cells(i - 1, 1).Value, "mmm dd")
eDate = Format(wS.Cells(i - 1, 2).Value, "mmm dd")
nBDate = Format(wS.Cells(i, 1).Value, "mmm dd")
nEDate = Format(wS.Cells(i, 2).Value, "mmm dd")
fPath = bK.Cells(r, 2).Value
Application.ScreenUpdating = False
lDate = bDate & " - " & eDate
nDate = nBDate & " - " & nEDate
Set newBook = Workbooks.Open(fPath)
newBook.Sheets("Mar 14 - Mar 15").Copy After:=Worksheets(Sheets.Count)
'On Error Resume Next
ActiveSheet.Name = nDate
wS.Cells(i, 3).Value = "Y"
i = i + 1
Wend
Next i
r = r + 1
End If
Next r
c = c + 1
Loop
Next c
End Sub
В идеале, она будет соответствовать названию в строке 2 на датах списку в столбце А на книгах. В будущем название / порядок отдельных рабочих книг, перечисленных на вкладке «Книги», может измениться.