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: как вставить несколько строк

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *