Одно из моих назначений создает большой вывод, благодаря которому я беру экран, сгенерированный программой, форматируя вывод, а затем вырезаю/вставляю в качестве экрана печати в PowerPoint. Я написал следующее:Глядя на упрощение моего VBA
Range("B6:M6").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.PageSetup.PrintArea = "$B$6:$M$300"
Set ActiveSheet.HPageBreaks(1).Location = Range("B16")
Set ActiveSheet.HPageBreaks(2).Location = Range("B26")
Set ActiveSheet.HPageBreaks(3).Location = Range("B36")
Set ActiveSheet.HPageBreaks(4).Location = Range("B46")
Set ActiveSheet.HPageBreaks(5).Location = Range("B56")
Set ActiveSheet.HPageBreaks(6).Location = Range("B66")
... и так далее каждые десять рядов. Затем я сделал это так, чтобы он вырезал и вставлял каждую страницу печати по страницам и отбрасывал ее на концевой лист. Таким образом, я могу легко перенести каждый на .ppt. В конце концов, я хочу учиться достаточно, чтобы автоматизировать весь процесс, но должен идти поэтапно. Вырезать/вставить/печати выглядит следующим образом:
Range("B6:M15").Select
Selection.CopyPicture Appearance:=xlPrinter, Format:=xlPicture
Sheets("Sheet2").Select
ActiveSheet.Paste
ActiveSheet.Shapes.Range(Array("Picture 1")).Select
Selection.ShapeRange.Width = 719.28
Sheets("Private Company (w Debt)").Select
Range("B16:M25").Select
Selection.CopyPicture Appearance:=xlPrinter, Format:=xlPicture
Sheets("Sheet2").Select
ActiveSheet.Paste
ActiveSheet.Shapes.Range(Array("Picture 2")).Select
Selection.ShapeRange.Width = 719.28
Sheets("Private Company (w Debt)").Select
Range("B26:M35").Select
Selection.CopyPicture Appearance:=xlPrinter, Format:=xlPicture
Sheets("Sheet2").Select
ActiveSheet.Paste
ActiveSheet.Shapes.Range(Array("Picture 3")).Select
Selection.ShapeRange.Width = 719.28
В моем макросе код следующим образом разрывы страниц непосредственно (это как 40 страниц или около того), он работает прилично хорошо.
Есть ли кто-нибудь, кто может показать мне, как вы могли бы написать это более интуитивно, так что VBA знает установить горизонтальный разрыв страницы каждые десять строк, а затем распечатать вырез/вставку без физической записи каждой строки и указания точных ячеек?
доучиться по переменным? Изменить: см. [This] (http://stackoverflow.com/questions/30378320/excel-vba-loop-through-range). – findwindow
Возможно, это лучше для [CodeReview] (http://codereview.stackexchange.com/) вместо SO. Кроме того, это очень поможет узнать, как избежать «.Select» (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros). Используйте Macro Recorder, чтобы делать простые, средние и «жесткие» вещи в Excel и просматривать код, чтобы увидеть, как он работает. Похоже, вам просто нужно потратить некоторое время на изучение VB, но это очень поможет вам начать понимать, как удалить «.Select», так как вы узнаете, как работать непосредственно с данными , а не выбор – BruceWayne
смотреть в циклы. 'для i = от 6 до 295 шага 10' будет зацикливаться каждые десять, где я буду выдавать номер строки. Также просмотрите размер, это позволит вам использовать первый диапазон ячеек («B» & i) .resize (10,13), чтобы скопировать вашу область в качестве изображения. –