VBA -Как скопировать строку в Excel из одной книги в другую?

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

У меня есть рабочая тетрадь с рабочими листами. Для простоты предположим, что в моей книге есть рабочий лист. И на моем листе, который называется «Лист1», есть данные в ячейках от A1 до A4.

Что я хочу, чтобы мой код VBA делал, так это:

  1. Скопируйте строку 1 (или, в частности, ячейки от A1 до A4 )рабочей книги «A» в переменную Range «myRange»
  2. Создайте новую книгу, давайте назовите эту рабочую книгу «B»
  3. Дайте рабочей книге «B» по умолчанию «лист1» новое имя «Имя теста»
  4. Откройте рабочую книгу «B» (, хотя я понимаю, что код VBA «Workbooks.Add» открывает новую книгу, поэтому этот шаг может быть излишним, поскольку Workbooks.Add покрывает половину пунктов 2 и 3.)
  5. Вставьте «myRange» в первую строку «Workbook B»
  6. временная метка заключена в квадратные скобки.Файл также должен иметь расширение файла «xls»
  7. Закрыть «Рабочую книгу B» и вернуться к «Рабочей книге A»

Пока что у меня есть это:

Sub OpenAndSaveNewBook()
    'Declarations
    Dim MyBook As String
    Dim MyRange As Range
    Dim newBook As Workbook

    'Get name of current wb
    MyBook = ThisWorkbook.Name
    Set MyRange = MyBook.Sheets("Sheet1").Range("A1,F1")

    'Create/Open new wb
    newBook = Workbooks.Add

    'Save new wb with XLS extension
    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "/" & "TEST-BOOK", _
                            FileFormat:=xlNormal, CreateBackup:=False

    '===NOTE: BEFORE THE FOLLOWING RUNS I NEED TO PERFORM ACTIONS ON CELLS VIA VBA ON
    '===WORKBOOK 'A'. DOES THE NEWLY CREATE WORKBOOK BECOME THE PRIMARY/ACTIVE WORKBOOK
    '===? AND SO THEN DO I NEED TO ACTIVATE WORKBOOK 'A'? 
    ActiveWorkbook.Close savechanges:=True

    'Return focus to workbook 'a'
    MyBook.Activate
End Sub

Как видите, мне не хватает кода который будет обрабатывать:

  • вставку моих скопированных данных в новую книгу
  • изменение имени листа1 новой книги на другое
  • добавление метки времени к строке имени файла при сохранении

Наконец, я включил вопрос в моем коде, поскольку я думаю, что у меня может быть неправильное понимание метода ActiveWorkbook. AFAIK, когда запускается код «Workbooks.Add», становится активной книгой, то есть книгой с фокусом. Влияет ли это на то, как код VBA работает в книге «А»? Означает ли это, что если бы я хотел добавить код для управления ячейками книги «А», мне нужно было бы использовать «MyBook.Activate», где «Моя книга» содержит строку фактического названия книги «А»?

Будем признательны за любую помощь.

Спасибо, QF

6
задан Community 9 July 2018 в 19:34
поделиться