循环遍历文件夹中的工作簿以将单元格复制并插入到主工作簿中

问题描述:

我必须通过工作簿中的短语“BATCH”开头的文件夹复制并将复制的单元格插入主工作簿中的一个工作表。 我试过使用我在网上找到的一个例子,但它不工作。它什么都不做。循环遍历文件夹中的工作簿以将单元格复制并插入到主工作簿中

Sub RunCodeOnAllXLSFiles() 
Dim lCount As Long 
Dim wbResults As Workbook 
Dim wbCodeBook As Workbook 


Application.ScreenUpdating = False 
Application.DisplayAlerts = False 
Application.EnableEvents = False 

On Error Resume Next 
Set wbCodeBook = ThisWorkbook 
With Application.FileSearch 
.NewSearch 
.LookIn = "C:\Path" 
.FileType = msoFileTypeExcelWorkbooks 
.Filename = "BATCH*.xls" 
If .Execute > 0 Then 
For lCount = 1 To .FoundFiles.Count 
Set wbResults = Workbooks.Open(Filename:=.FoundFiles(lCount), UpdateLinks:=0) 

Workbooks(Filename).Worksheets("Data").Range("B23:Z38").Copy 
ThisWorkbook.Worksheets("Sheet1").Range("B2").Rows("1:16").Insert Shift:=xlDown 

wbResults.Close SaveChanges:=False 
Next lCount 
End If 
End With 
On Error GoTo 0 
Application.ScreenUpdating = True 
Application.DisplayAlerts = True 
Application.EnableEvents = True 
End Sub 

我还希望能够有一个文件可以放入任何文件夹来执行此任务。

+1

您是复制,但不能粘贴。 –

+0

“我还希望能够将一个文件放入任何文件夹以执行此任务。”什么阻止你试图这样做?将代码放在工作簿中,并让它直接引用当前。 –

+0

我不得不每次更改文件夹路径。我的意思是说,我希望它不必打开它并每次都改变路径。 –

由于Andy G在他的评论中指出,你忘了粘贴。你的折轴768,16是

Workbooks(Filename).Worksheets("Data").Range("B23:Z38").Copy 
ThisWorkbook.Worksheets("Sheet1").Range("B2").Rows("1:16").Insert Shift:=xlDown 
ThisWorkbook.Worksheets("Sheet1").Range("B2").Paste 

编辑:Application.FileSearchis gone as of Excel 2007,你可以使用VBA的Dir()功能尝试这种替代方法:

Sub RunCodeOnAllXLSFiles() 
    Dim wbCodeBook As Workbook 
    Dim myPath As String 
    Dim myMask As String 
    Dim fnResults As String 
    Dim wbResults As Workbook 

    Application.ScreenUpdating = False 
    Application.DisplayAlerts = False 
    Application.EnableEvents = False 

    Set wbCodeBook = ThisWorkbook 
    myPath = "C:\Path" 
    myMask = "BATCH*.xls" 

    fnResults = Dir(myPath & "\" & myMask) 'Get 1st match 
    Do While fnResults <> "" 
     Set wbResults = Workbooks.Open(myPath & "\" & fnResults, 0) 
     Workbooks(fnResults).Worksheets("Data").Range("B23:Z38").Copy 
     ThisWorkbook.Worksheets("Sheet1").Range("B2").Rows("1:16").Insert Shift:=xlDown 
     ThisWorkbook.Worksheets("Sheet1").Range("B2").Paste 
     fnResults = Dir 'Get next match 
    Loop 

    Application.ScreenUpdating = True 
    Application.DisplayAlerts = True 
    Application.EnableEvents = True 
End Sub 
+0

我改变了我的代码,但它没有运行。我得到一个错误 就行 随着Application.FileSearch 它说,该对象不支持此操作:( –

+0

对于该错误,我做了一个研究,发现Application.FileSearch'不再存在,最后一个版本它作品是Excel 2003. – VBobCat

+0

@KevinLópez,请参阅我的编辑。 – VBobCat