从闭合工作簿拉数据
从另一个工作簿的关闭文件中提取数据是大多数excel用户的常见要求。他们想从关闭的文件中提取或合并数据;但是,这是不可能的。有一种解决方法可以帮助解决此问题。解决方案是使用宏代码。
问题:我每天都花时间将数据从一个文件复制到另一个文件。有两个文件“ Open.xls”和“ Closed.xls”,我想通过VBA代码将数据从“ Closed.xls”复制到“ Open.xls”。
===
要了解的关键事项:
首先,我们应该知道关闭的工作簿的“ Usedrange”,即打开的工作簿中的“ Closed.xls”,例如“ Open.xls”我们可以在“ Open.xls”工作簿的“ Closed.xls”工作簿的Usedrange中使用IF函数,它将从“ Closed.xls”工作簿中提取数据*如果引用单元格为空白,则#N / A已放置到位。然后,使用specialcells方法,可以删除所有#N / A错误并将公式更改为值。首先,我们将保存两个Excel文件1)Open.xls 2)Closed.xls在路径“ D:\ Test”中文件夹”,下面是“ Closed.xls”工作簿的快照:
要将数据从“ Closed.xls”文件自动保存到“ Open.xls”文件,我们需要按照以下步骤启动VB编辑器:单击“开发人员”选项卡。在“代码”组中,选择“ Visual Basic”。 *将以下代码复制到ThisWorkbook中(Closed.xls)
-
要提取“ Open.xls”中的数据,请在标准模块中复制以下代码
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ Cancel As Boolean) 'Put in the UsedRange Address of Sheet1 Closed.xls (this workbook)' --- Comment Sheet2.Cells(1, 1) = Sheet1.UsedRange.Address End Sub
-
在ThisWorkbook(Open.xls)中复制以下代码
Sub Importdata() Dim AreaAddress As String Sheet1.UsedRange.Clear Sheet1.Cells(1, 1) = "= 'D:\Test Folder\" & "[Closed.xls]Sheet2'!RC" AreaAddress = Sheet1.Cells(1, 1) With Sheet1.Range(AreaAddress) .FormulaR1C1 = "=IF('D:\Test Folder\" & "[Closed.xls]Sheet1'!RC="""",NA(),'D:\Test Folder\" & _ "[Closed.xls]Sheet1'!RC)" On Error Resume Next .SpecialCells(xlCellTypeFormulas, xlErrors).Clear On Error GoTo 0 .Value = .Value End With End Sub
现在,所有VBA代码都已设置好;我们需要做的就是打开文件名“ Open.xls”。以下是“ Open.xls”文件的快照:
Private Sub Workbook_Open() Run "Importdata" End Sub
该代码不限于从A1.usedrange复制单元;该代码将选择起始范围,并且可以正常运行。这些文件可供下载,我们建议您去尝试一下。
===
结论:使用VBA代码,我们可以自动执行数据提取任务,而无需打开目标工作簿,并且可以避免进行手动复制和粘贴。
如果您喜欢我们的博客,请在Facebook上与您的朋友分享。您也可以在Twitter和Facebook上关注我们。
我们很高兴收到您的来信,请让我们知道我们如何改进,补充或创新我们的工作,并为您做得更好。写信给我们[email protected]