Vba: как извлечь данные из другой книги
Вы можете использовать следующий синтаксис в VBA для извлечения данных из другой книги:
SubExtractData ()
'turn off screen updates to make this run faster
Application.ScreenUpdating = False
'specify workbook we want to extract data from
Set wb = Workbooks.Open(" C:\Users\bobbi\OneDrive\Desktop\my_data.xlsx ")
'extract all data from Sheet1 and paste as new sheet in current workbook
wb.Sheets(" Sheet1 ").Copy After:=ThisWorkbook.Sheets(1)
'do not save any changes to workbook we extract data from
wb.Close SaveChanges:=False
'turn screen updating back on
Application.ScreenUpdating = True
End Sub
Этот конкретный макрос открывает книгу с именем my_data.xlsx , расположенную в следующем месте:
C:\Users\Bob\Desktop\my_data.xlsx
Затем он копирует все данные с листа с именем Лист1 в эту книгу и копирует их на лист сразу после первого листа в нашей активной в данный момент книге.
Примечание . Строка Application.ScreenUpdating = False указывает VBA запустить этот процесс в фоновом режиме, чтобы он работал быстрее.
В следующем примере показано, как использовать этот синтаксис на практике.
Пример. Извлечение данных из другой книги с помощью VBA.
Допустим, у нас открыта следующая книга Excel, и мы просматриваем ее:
Теперь предположим, что у нас есть еще одна закрытая книга, но содержащая следующие данные:
Мы можем использовать следующий макрос, чтобы извлечь данные из листа 1 этой закрытой книги и вставить их на новый лист сразу после первого листа нашей открытой в данный момент книги:
SubExtractData ()
'turn off screen updates to make this run faster
Application.ScreenUpdating = False
'specify workbook we want to extract data from
Set wb = Workbooks.Open(" C:\Users\bobbi\OneDrive\Desktop\my_data.xlsx ")
'extract all data from Sheet1 and paste as new sheet in current workbook
wb.Sheets(" Sheet1 ").Copy After:=ThisWorkbook.Sheets(1)
'do not save any changes to workbook we extract data from
wb.Close SaveChanges:=False
'turn screen updating back on
Application.ScreenUpdating = True
End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод:
Обратите внимание, что данные из закрытой книги были извлечены и вставлены как новый лист в нашу активную в данный момент книгу.
Не стесняйтесь переименовывать новый лист, поскольку он идентичен текущему листу.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:
VBA: как посчитать количество листов в книге
VBA: как вставить несколько столбцов
VBA: как вставить несколько строк