У меня есть макрос Excel, который я пытаюсь запустить на каждом листе в книге. Это просто настроить области печати и разрывы страниц, но есть 460 листов. Они все в одном и том же формате, поэтому они должны быть прямолинейными. Я использую имена файлов, поэтому это не должно быть проблемой.Подзаголовок вне пределов досягаемости, что мне не хватает?
Макрос работает на активном листе, затем возникает ошибка, когда он пытается перейти к следующему листу.
Листы («лист» + LTrim (Str (i + 1)) + «»). Выберите линию, в которую она отлаживается. См. Весь код ниже. У меня такое чувство, что это довольно простой лес для дерева, поэтому любая помощь будет принята с благодарностью!
Sub setup()
Dim i As Long
For i = 1 To 460
ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
ActiveWindow.SmallScroll Down:=24
Set ActiveSheet.HPageBreaks(1).Location = Range("A64")
ActiveWindow.SmallScroll Down:=-66
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.PrintTitleRows = "$1:$3"
.PrintTitleColumns = ""
End With
Application.PrintCommunication = True
ActiveSheet.PageSetup.PrintArea = ""
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = "&A"
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.236220472440945)
.RightMargin = Application.InchesToPoints(0.236220472440945)
.TopMargin = Application.InchesToPoints(0.748031496062992)
.BottomMargin = Application.InchesToPoints(0.748031496062992)
.HeaderMargin = Application.InchesToPoints(0.31496062992126)
.FooterMargin = Application.InchesToPoints(0.31496062992126)
.PrintHeadings = False
.PrintGridlines = True
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 46
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = False
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
.FirstPage.CenterHeader.Text = ""
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""
End With
Application.PrintCommunication = True
Sheets("sheet" + LTrim(Str(i + 1)) + "").Select
Next i
End Sub
Попробуйте заменить. Выберите с .Activate. – DoctorMick
«Я использую подписи кодов рабочего стола»: Нет, нет. В 'Таблицы (« Лист1 ») имя« Лист1 »не является кодовым именем, а настоящим именем листа. –
Почему бы не использовать 'Для каждого wrkSht в этомWorkBook.Worksheets' (с' Dim wrkSht как WorkSheet') ... 'Next wrkSht'. Вам нужно будет заменить каждый экземпляр «ActiveWorksheet» на 'wrkSht'. –