Код ниже работает, но не быстро, и я уверен, что есть способы, которые он мог бы упростить. Я не кодер - я только что собрал несколько образцов, которые я нашел. Я действительно не понимаю фрагменты диапазона/конца/смещения для аспекта вставки. Вот что я пытаюсь сделать: 1. Распечатайте первые три листа в книге 2. Создайте три новых листа в конце рабочей книги. 3. скопируйте и вставьте значения, форматы и ширины столбцов в три новых рабочие листы из первых трех.Excel vba code clean
Спасибо за любую помощь, которую вы можете предоставить!
Option Explicit
Option Base 1
Sub Print_copy_Current_Workbook()
'Prints the current active workbook in Excel
Sheets("Draw").PrintOut
Sheets("Calculations").PrintOut
Sheets("AIN").PrintOut
Application.ScreenUpdating = False
Dim Tabs As Variant
Dim I As Byte
Tabs = Array("Draw Final", "AIN Final", "Calculations Final")
For I = LBound(Tabs) To UBound(Tabs)
Sheets.Add(After:=Sheets(Worksheets.Count), Count:=1).Name = Tabs(I)
Next I
Sheets("Draw").Range("A1:L1000").Copy
With Sheets("Draw Final").Range("iv1").End(xlToLeft).Offset(, 1)
.PasteSpecial xlPasteFormats
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteColumnWidths
End With
Sheets("AIN").Range("A1:L1000").Copy
With Sheets("AIN Final").Range("iv1").End(xlToLeft).Offset(, 1)
.PasteSpecial xlPasteFormats
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteColumnWidths
End With
Sheets("Calculations").Range("A1:L1000").Copy
With Sheets("Calculations Final").Range("iv1").End(xlToLeft).Offset(, 1)
.PasteSpecial xlPasteFormats
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteColumnWidths
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Возможный кандидат на [Обзор кода] (https://codereview.stackexchange.com/) при условии, что код работает, как говорит OP. –