将许多excel文件中的数据全部拖入另一个文件?

时间:2016-07-21 19:26:36

标签: excel vba while-loop

我在这里看了很多关于将excel文件中的数据拉到另一个文件的问题,但我似乎无法弄明白。我认为这可能与使用Dir定义文件有关,因为当我检查文件的值时,它什么都不返回。

Sub PullFromRunsheets()


Application.EnableEvents = False
Application.ScreenUpdating = False


Dim MyObj As Object, MySource As Object, file As Variant, a As String, columnItertor As Integer

file = Dir("c:\Desktop\Runsheets\")
While (file <> "")
columnIterator = 0
  If InStr(file, "Runsheet") > 0 Then ''If the string "Runsheet" appears at least once in the filename...
     '' What to do if the file found contains the string "Runsheet"?            MsgBox "found " & file
     '' Take the value in cell B7 of the runsheet file and put it in cell A5 of the current file.
     For rowIterator = 0 To 7

            a = Workbooks(file).Worksheets("Pacman Runsheet").Cells(7, 2 + rowIterator).Value '' Set "a" = whatever value is in B7, and iterate through that row
            ActiveWorkbook.Worksheets(Sheet1).Cells(5 + rowIterator, 1).Value = a ''take that value and put it in this column, iterate through.

     Next rowIterator

     Exit Sub




  End If
  '' columnIterator = columnIterator + 1 (ignore this for now)

 file = Dir
Wend

End Sub

我实际上是在尝试从文件名中包含“Runsheet”的给定文件夹中的每个文件中提取数据,并将该数据放入写入宏的当前工作簿中。当我运行代码时,我得到了没有错误,但没有任何事情发生,这就是为什么我不知道我哪里出错了。

谢谢!

1 个答案:

答案 0 :(得分:0)

玩得开心;)

Sub PullFromRunsheets()

Application.EnableEvents = False
Application.ScreenUpdating = False

Dim currentFile As Variant, baseDirectory, filterKeyword, sourceWorksheetName, sourceRange, targetWorksheetName As String, targetStartRow, targetColumnIterator As Integer

baseDirectory = "c:\Desktop\Runsheets\"
filterKeyword = "Runsheet"
sourceWorksheetName = "Pacman Runsheet"
sourceRange = "B7:B14"
targetWorksheetName = "Sheet1"
targetStartRow = 5
targetColumnIterator = 1

currentFile = Dir(baseDirectory)
While (currentFile <> "")
  If InStr(currentFile, filterKeyword) > 0 Then
     Workbooks.Open baseDirectory + currentFile
        Workbooks(currentFile).Worksheets(sourceWorksheetName).Range(sourceRange).Copy
        ThisWorkbook.Worksheets(targetWorksheetName).Cells(targetStartRow, targetColumnIterator).PasteSpecial xlPasteAll
     Workbooks(currentFile).Close
     targetColumnIterator = targetColumnIterator + 1
  End If
  currentFile = Dir
Wend

End Sub