Несмотря на множество сообщений, которые я просматривал по тем же линиям, что и мой вопрос, ни один из ответов не удовлетворяет то, что я ищу. Если вы можете связать меня с одним, я бы с удовольствием прочитал его.VBA - Как скопировать строку в Excel из одной книги в другую?
У меня есть рабочая тетрадь с рабочими листами. Для простоты, допустим, у моей книги есть рабочий лист. И в моем листе, который называется «Sheet1», в ячейках A1-A4 есть данные.
То, что я хочу, чтобы мой VBA-код, чтобы сделать это:
- Копирование строки 1 (или, в частности клетки А1 до А4) из книги, «A» в переменную Range «MyRange»
- Создать новую книгу, давайте назовем эту книгу «B»
- Дайте рабочему столу по умолчанию «sheet1» новое имя «Test Name»
- Открытая рабочая тетрадь «B» (хотя я понимаю, что код VBA «Workbooks.Add» открывает новую так что этот шаг может быть избыточным, так как Workbooks.Add охватывает половину пунктов 2 и 3)
- Вставить 'myRange' в первый ряд 'Workbook B'
- Сохраните «Рабочую книгу B» с названием «Test Book» и временную метку, заключенную в квадратные скобки. Файл также должен иметь расширение файла «XLS»
- Закрыть «Workbook B» и вернуться к «Рабочему»
То, что я до сих пор это:
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
Как вам может видеть, я не хватаю код, который будет обрабатывать:
- склеивание моих скопированных данных в новую книгу
- смена нового sheet1 имя книги на что-то другое
- добавить метку в строку имени файла при сохранении
Наконец, я включил вопрос в моем коде, как я думаю, что, возможно, непонимание метода ActiveWorkbook. AFAIK, когда запускается код «Workbooks.Add», становится Активной книгой, т. Е. С фокусом. Означает ли это, как работает код VBA в книге «A»? Означает ли это, что если бы я хотел добавить код для манипулирования ячейками Workbook 'A', тогда мне нужно было бы использовать «MyBook.Activate», где «MyBook» содержит строку названия книги «A»?
Любая помощь будет принята с благодарностью.
Спасибо, QF
Сделайте 'newBook.SaveAs' и' newBook.Close' также. Как вы поняли, это может сбивать с толку знание того, на что ссылается ActiveWorkbook, поэтому лучше всего использовать явные ссылки там, где это возможно. – e100
Спасибо за ваш ответ. Я новичок в VBA, и я получил сообщение об ошибке «Недопустимый квалификатор» после вашего предложения. Думаю, это потому, что MyBook - неправильный тип? Кроме того, это действительно не имеет смысла для меня, как где команда вставить в newBook? Не могли бы вы уточнить? –
@ e100: Я редактировал свой пост, когда вы разместили этот комментарий :) –