从closures的工作簿macros提取数据

我一直在使用macros从closures的工作簿中提取数据的问题。

在这里输入图像描述

上面的图片是我想要插入macros的主要工作簿。 在单元格A1中,您可以看到有一个文件名位置 – 这是我想从中拉取数据的已closures辅助工作簿的位置。

我想要macros取出单元格A1中存在的位置,在封闭的工作簿中复制单元格A1:J5000,然后将其粘贴到以A7开始的此工作簿(即A7:J5007)中。 文件名位置出现在A1中的原因是由于这将改变; 但是我想macros总是采取在A1中显示的位置(例如,如果A1要从'… \ test00218_data.csv'更改为'… \ test00001_data.csv'那么我想要macros从新的位置获取数据,test00001)。

从那以后,我写了一个macros,我相信会打开所有名为“原始数据x”的表格,并将所需数据粘贴到主工作表的相应区域; 代码如下:

Sub PullClosedData() Dim filePath As String For x = 1 To 1 Step 1 filePath = Sheets("Raw Data " & x).Cells(1, 1).Value Workbooks.Open Filename:=filePath Sheets("Raw Data 1").Range("A7:J2113").Value = ActiveWorkbook.ActiveSheet.Range("A1:J2107") Next x End Sub 

当我运行这个,但是我得到运行时错误9(超出范围)。 我相信这与脚本的“ActiveWorkbook.ActiveSheet”部分有关,但我不确定如何重写这个并避免错误。

首先,不要将path粘贴到您计划覆盖的单元格中。 相反,创build一个单独的工作表,其中包含重要的input参数(请参阅下面的示例;我称之为“系统”表)。

在这里输入图像说明

下面的代码将工作簿“原始数据1”中的数据从源代码中提取到“原始数据3”。

  • 确保在variables(TargetWb和SourceWb)中正确定义工作簿。
  • 引用工作表时,请始终指定使用多个工作簿时所在的工作簿(例如TargetWb.ActiveWorksheet,而不仅仅是ActiveWorksheet)

 Sub PullClosedData() Dim filePath As String Dim SourceWb As Workbook Dim TargetWb As Workbook Set TargetWb = ActiveWorkbook filePath = TargetWb.Sheets("System").Range("A1").Value Set SourceWb = Workbooks.Open(filePath) For i = 1 To 3 SourceWb.Sheets("Raw Data " & i).Range("A1:J5000").Copy Destination:=TargetWb.Sheets("Raw Data " & i).Range("A1:J5000") Next i SourceWb.Close MsgBox "All done!" End Sub