2013-12-22 34 views
2

我需要從超過100個Excel 2007工作簿中導入範圍,這些工作簿保存在不同文件夾中以檢查更改。我有一個路徑和文件名的列表(每行分別從2到120): -VBA代碼引用從單元格值列表中取出路徑文件範圍的範圍

c:\folderA\folderb\file001.xls 
f:\foldera\folder3\fileaaa.xls 
d:\folderexample\foldereg\folder12\filea01.xls 

等等超過一百行。要導入的範圍始終命名爲「targetrange」。目標文件將始終關閉。我需要在地址旁邊的八個單元格中導入目標數據(1行x 8列)。

我一直無法讓這個工作成功。

子程序:

Dim PATH, FILENAME, SHEETNAME, CELL, i 
PATH = "C:\folderA\folderb\file001.xls" 
FILENAME = "Book001.xlsm" 
SHEETNAME = "Sheet1" 
Range = "targetrange" 
For i = 1 To 10 
Range("B" & i) = RETRIEVE(PATH, FILENAME, SHEETNAME, "A" & i) 
Next i 
End Sub 

檢索功能:

Function RETRIEVE(PATH, FILENAME, SHEETNAME, CELL) 
    RETRIEVE = "='" & PATH & "[" & FILENAME & "]" & SHEETNAME & "'!" & CELL & "" 
End Function 
+1

請向我們展示您到目前爲止的代碼。 –

+0

我已將此代碼添加到您的問題 - 什麼是'RetrievePath'? – brettdj

+0

嗨retrievepath是一種用於執行數據引用作爲函數的方法\ 函數RETRIEVE(PATH,FILENAME,SHEETNAME,CELL)RETRIEVE =「='」&PATH&「[」&「FILENAME&」]「&SHEETNAME&」 「!」 &CELL&「」 End Function它沒有工作 – Brisbanebob

回答

0

除非你真的想爲每片硬配方的參考,下面的代碼工作不夠好。但是,YMMV會打開每個工作簿並將其中的每個targetrange複製到源工作簿。

Private Sub RetrieveData() 

    Dim SourceSht As Worksheet, TargetWbk As Workbook 
    Dim TargetSht As Worksheet 
    Dim TargetPath As String, TargetRange As Range 

    Set SourceSht = ThisWorkbook.Sheets("ModifyMe") '--Modify as necessary. 

    For i = 1 To 10 '--Modify as necessary. 

     '--Set the path. 
     TargetPath = SourceSht.Range("B" & i).Value 

     '--Turn off everything that can slow/hinder the transfer. 
     With Application 
      .ScreenUpdating = False 
      .DisplayAlerts = False 
      .EnableEvents = False 
      .Calculation = xlCalculationManual 
     End With 

     '--Open the target workbook and qualify all variables. 
     Set TargetWbk = Workbooks.Open(TargetPath) 
     Set TargetSht = TargetWbk.Sheets("Sheet1") 
     Set TargetRange = TargetSht.Range("targetrange") 

     '--Simple copy and paste. 
     TargetRange.Copy SourceSht.Range("C" & i) 

     '--Close the target workbook. 
     TargetWbk.Close 

     '--Turn off everything that can slow/hinder the transfer. 
     With Application 
      .CutCopyMode = False 
      .ScreenUpdating = True 
      .DisplayAlerts = True 
      .EnableEvents = True 
      .Calculation = xlCalculationAutomatic 
     End With 

    Next i 

End Sub 

讓我們知道這是否工作。請嘗試複製您的工作簿。

相關問題