2017-07-25 73 views
0

我必須通過工作簿中的短語「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

我不得不每次更改文件夾路徑。我的意思是說,我希望它不必打開它並每次都改變路徑。 –

回答

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

相關問題