Дублируйте рабочий лист, перемещайте его после определенного листа, переименовывайте его на основе ячейки на другом листе и вставляйте специальные значения

#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. Пожалуйста, объясните, что вы пытаетесь сделать .. приведенный выше код поможет вам скопировать данные с одного листа и вставить на другой лист в качестве специальной вставки.