VBA, для каждого следующего — Если имя листа в этой книге равно имени листа в другой книге

#excel #vba

#excel #vba

Вопрос:

У меня есть две книги, некоторые листы имеют одинаковые имена. Я хотел бы экспортировать (скопировать) некоторые данные с листа A в Workbook teaminsoв эту книгу (где находится код) на лист с тем же именем, и я застрял. Как написать: цикл по листам в рабочей тетради teaminsoесли имя листа равно имени листа в этой книге, тогда скопируйте диапазон?

 For Each ws In TeamINSO.Worksheets
    If ws.Name = ThisWorkbook.Worksheets(ws.Name) Then
        Workbooks(TeamINSO).Worksheets(ws.Name).Range("A3:C400").Copy
               ThisWorkbook.Worksheets(ws.Name).Range("A2").PasteSpecial xlPasteValues
    Else
    End If
Next ws
 

Спасибо за помощь.

Ответ №1:

Вы можете сделать это следующим образом:

 Dim ws As Worksheet, wsD as Worksheet

For Each ws In TeamINSO.Worksheets
    'see if there's a match
    On Error Resume Next  'ignore error if no match
    Set wsD = ThisWorkbook.Sheets(ws.Name)
    On Error Goto 0       'stop ignoring errors
    'any match?
    If Not wsD Is Nothing Then
        'Transfer values 
        With ws.Range("A3:C400")
          wsD.Range("A2").Resize(.Rows.Count, .Columns.Count).Value = .Value
        End With
    End If

    Set wsD = Nothing 'set up for next iteration if any
Next ws