#vba
Вопрос:
Я хотел бы дублировать рабочий лист с именем «Привет», переместить его после другого листа с именем» < До сих пор я не могу пройти первый шаг копирования и переименования. Есть какие-нибудь идеи?
Sub Import_Output()
Sheets("Hello").Copy(Before:=Sheets("<<")).Name = Sheets("Hello").Range("G1").Value
End Sub
Ответ №1:
Приведенный ниже код можно использовать для копирования и переноса (специального) между листами:
Set Copy_From_Sheet = Worksheets("Sheet1")
Set Working_Sheet = Worksheets("Sheet2")
LastRow = Copy_From_Sheet.Cells(Rows.Count, "A").End(xlUp).Row
Copy_Col_Range = "A"
Paste_Col_Range = "A"
Copy_From_Sheet.Range(Copy_Col_Range amp; 2 amp; ":" amp; Copy_Col_Range amp; LastRow).Copy
Working_Sheet.Range(Paste_Col_Range amp; "2").PasteSpecial Paste:=xlPasteValues
Комментарии:
1. Спасибо. Это хорошо работает. Часть, которую я не понимаю, заключается в том, как установить новый лист с именем Copy_Name на рабочий лист, если имя всегда меняется? Я бы хотел, чтобы дубликат рабочего листа был жестко закодирован без формул
2. Хм, давайте предположим, что у вас есть имя листа, которое нужно скопировать в A1 листа «Привет». Затем используйте Объявить переменную как
Dim SheetName
и назначить переменную с именем листа, который будет использоваться с листа «Привет» какSheetName = Worksheets("Hello").Cells(1, 1).Value
и заменить working_sheet в приведенном выше ответеSet Working_Sheet = Worksheets(SheetName)
. Поэтому будет использоваться любое имя листа, указанное в A1 листа «Привет». Спасибо.. Надеюсь, это вам поможет 🙂
Ответ №2:
Надеюсь, что приведенный ниже VBA поможет вам полностью скопировать лист.
Sub Create_Sheet()
Dim Copy_Name
'Assing the Required new Sheet name from the Base sheet ("Hello") to a variable.
'(1,1) means 1row 1column - Assign as per your req
Copy_Name = (Worksheets("Hello").Cells(1, 1).Value)
sheetExists = False
'Looping all the sheets and checking if the sheet name already exists
For Each Sheet In Worksheets
If Sheet.Name = Copy_Name Then
'if sheet name found then makring sheetexists as true
sheetExists = True
Exit For
End If
Next Sheet
'first we are deleting if the sheet already exists based on sheetexists value
If sheetExists = True Then
Application.DisplayAlerts = False
Set rslt = Worksheets(Copy_Name)
rslt.Delete
Application.DisplayAlerts = True
End If
Application.CopyObjectsWithCells = False
'copying the base sheet after the base sheet - Plan to add your sheet name where you want to copy in after part
Sheets("Hello").Copy after:=Sheets("Hello")
'Renaming the copied sheet with the variable name
ActiveSheet.Name = Copy_Name
Application.CopyObjectsWithCells = True 'reset
End Sub
Спасибо 🙂
Комментарии:
1. Спасибо вам 🙂 Как я могу заставить новый лист вставить специальные значения?
2. Пожалуйста, объясните, что вы пытаетесь сделать .. приведенный выше код поможет вам скопировать данные с одного листа и вставить на другой лист в качестве специальной вставки.