Скопируйте лист в другую книгу, заменив текущие данные

Я надеюсь, что кто-то может мне помочь.

У меня есть две рабочие тетради. Пb1 = Попытка FAC Пb2 = РИМСКАЯ

В обеих книгах есть множество рабочих листов. Я хотел бы, чтобы данные в рабочем листе Wb2 с именем Format копировались в рабочий лист Wb1 с именем Format.

Рабочий лист в Wb1 уже имеет имя и должен ежедневно обновляться из Wb2. Данные в формате рабочего листа Wb1 будут перезаписываться каждый раз. Я смотрел, что это произойдет по нажатию кнопки Command. Wb2 не будет открыт во время нажатия командной кнопки.

Я нашел некоторый код, но он создает новый рабочий лист каждый раз, когда код запускается, и я не знаю, как изменить его в соответствии со своими потребностями.

заранее спасибо любая помощь очень ценится


person Helz    schedule 03.08.2015    source источник
comment
пожалуйста, отредактируйте свой вопрос и опубликуйте код, который вы использовали до сих пор. Это поможет нам помочь вам.   -  person psychicebola    schedule 03.08.2015
comment
Код, который я использовал, был   -  person Helz    schedule 04.08.2015


Ответы (4)


Вы можете легко записать фрагмент кода, чтобы сделать это самостоятельно, просто используйте «Запись макроса» на ленте разработчика.

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

Я только что скопировал рабочий лист «Формат» из рабочей книги ROMAN, затем удалил существующий рабочий лист «Формат» и переименовал новый в «Формат».

Sub wsCopy()
    Dim wb1 As Workbook, wb2 As Workbook, ws1Format As Worksheet

    Application.ScreenUpdating = False
    Set wb1 = ThisWorkbook
    Set wb2 = Workbooks.Open("[ENTER FILE PATH]\ROMAN.xlsx")
    Set ws1Format = wb1.Sheets("Format")
    Set ws2Format = wb2.Sheets("Format")

    '' Copy the "Format" worksheet to wb1.
    ws2Format.Copy Before:=ws1Format
    wb2.Close

    '' Delete existing "Format" worksheet.
    Application.DisplayAlerts = False
    ws1Format.Delete
    Application.DisplayAlerts = True

    '' Rename new sheet to "Format".
    wb1.Sheets("Format (2)").Name = "Format"
    Application.ScreenUpdating = True
End Sub
person luke_t    schedule 03.08.2015

Этот ответ основан на @Ituner до

Sub wsCopy()
    Dim wb1 As Workbook, wb2 As Workbook, ws1Format As Worksheet

    Application.ScreenUpdating = False
    Set wb1 = ThisWorkbook
    Set wb2 = Workbooks.Open("[ENTER FILE PATH]\ROMAN.xlsx")
    Set ws1Format = wb1.Sheets("Format")
    Set ws2Format = wb2.Sheets("Format")

    '' Copy the cells of the "Format" worksheet.
    ws2Format.Cells.Copy 


    '' Paste cells to the sheet "Format".
    wb1.Sheets("Format").Paste
    wb2.Close false 'remove false if you want to be asked if the workbook shall be saved.
    Application.ScreenUpdating = True
End Sub
person psychicebola    schedule 04.08.2015

Код, который я использовал, был

Частная подпрограмма CommandButton1_Click ()

С рабочими книгами ("ROMAN.xls"). Sheets ("Format"). Copy_ Before:=Workbooks ("FAC Trial.xls"). Sheets ("Format").

Конец с

Конец сабвуфера

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

person Helz    schedule 04.08.2015
comment
Вы можете использовать код, опубликованный @Iturner. Он прав, что если бы вы использовали макрорекордер, вы могли бы получить его и сами. Однако я дам вам другой ответ, основанный на его коде. - person psychicebola; 04.08.2015

Sub ReplaceSheets (wb1 как рабочая книга, wb2 как рабочая книга, SheetName как строка)

wb1.Sheets(SheetName).Cells.Clear
wb2.Sheets(SheetName).Cells.Copy wb1.Sheets(SheetName).Range("A1")

Конец сабвуфера

person Anu Abraham    schedule 27.09.2019