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

然后,它将名为Sheet1 的工作表中的所有数据复制到此工作簿中,并将其直接复制到当前活动工作簿中第一个工作表之后的工作表中。

注意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:如何插入多行

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注