Скопируйте и вставьте лист в другую книгу, а затем вернитесь в книгу, из которой вы скопировали - PullRequest
0 голосов
/ 28 мая 2020
Sub CopyPasteDataInMaster()
    Dim Rng As Range
        Set Rng = Sheets("Consolidated").UsedRange
        Set Rng = Rng.Offset(1).Resize(Rng.Rows.Count - 1)
        Rng.Copy
        Workbooks.Open "S:\AAA.xlsx"
        Workbooks("AAA.xlsx").Sheets("NewData").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
    Workbooks("AAA.xlsx").Worksheets("NewData").Range("H:H").NumberFormat = "mm/dd/yyyy"
End Sub

Sub CopyPastePersonDataInMaster()
    Dim Rng As Range
        Set Rng = Sheets("ByPerson").UsedRange
        Set Rng = Rng.Offset(1).Resize(Rng.Rows.Count - 1)
        Rng.Copy
        Workbooks.Open "S:\AAA.xlsx"
        Workbooks("AAA.xlsx").Sheets("NewDataPerson").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
    Workbooks("AAA.xlsx").Worksheets("NewDataPerson").Range("I:I").NumberFormat = "mm/dd/yyyy"
End Sub

Я бы хотел перезвонить этим двум, но проблема возникает, когда он все еще находится в файле «AAA» из первой вставки и не может получить лист «ByPerson» для второй вставки.

Мне нужно запустить это для нескольких разных файлов (несколько мест для копирования, одно и то же место назначения), и мне нужно, чтобы он был универсальным для любого листа, с которого я копирую.

Может быть, способ «повторно активируйте» лист, который я скопировал в конце первого макроса, чтобы при запуске второго макроса он мог найти имя листа.

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

Новый код - -Как это выглядит? Теперь он отлично работает. Спасибо за совет!

Sub NewCopyPasteMaster()
Dim wb As Workbook
Dim wb2 As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim Rng1 As Range
Dim Rng2 As Range
    Set wb = ActiveWorkbook
    Workbooks.Open "S:\AAA.xlsx"
    Set wb2 = ActiveWorkbook
    wb.Activate
    Set ws1 = wb.Sheets("Consolidated")
    Set ws2 = wb.Sheets("ByPerson")
    Set Rng = ws1.UsedRange.Offset(1).Resize(ws1.UsedRange.Rows.Count - 1)
    Set Rng2 = ws2.UsedRange.Offset(1).Resize(ws2.UsedRange.Rows.Count - 1)
    Rng.Copy
    wb2.Sheets("NewData").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
    wb2.Worksheets("NewData").Range("H:H").NumberFormat = "mm/dd/yyyy"
    Application.CutCopyMode = False
    wb.Activate
    Rng2.Copy
    wb2.Sheets("NewDataPerson").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
    wb2.Worksheets("NewDataPerson").Range("I:I").NumberFormat = "mm/dd/yyyy"
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...