2016-10-27 118 views
1

我正在使用下面的宏來提取Excel 2013中的數據,現在我已經轉移到Excel 2016.在Excel 2016中,宏不起作用。Excel 2016中的宏

Sub simpleXlsMerger() 


    Dim bookList As Workbook 

    Dim mergeObj As Object, dirObj As Object, filesObj As Object, everyObj As Object 

    Application.ScreenUpdating = False 

    Set mergeObj = CreateObject("Scripting.FileSystemObject") 

    Set dirObj = mergeObj.Getfolder("path") 

    Set filesObj = dirObj.Files 

    For Each everyObj In filesObj 

    Set bookList = Workbooks.Open(everyObj) 

    Range("A2:IV" & Range("A65536").End(xlUp).Row).Copy 

    ThisWorkbook.Worksheets(1).Activate 

    Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial 

    Application.CutCopyMode = False 

    bookList.Close 

    Next 

End Sub 

有人可以幫助我解決這個問題

+1

「不工作」是不是你的問題的一個非常有用的描述。 –

+0

宏未運行實際上說 – commander420

+0

當您嘗試運行它時會發生什麼? –

回答

0

試試這個:

Sub simpleXlsMerger() 


    Dim bookList As Workbook 

    Dim mergeObj As Object, dirObj As Object, filesObj As Object, everyObj As Object 

    Application.ScreenUpdating = False 

    Set mergeObj = CreateObject("Scripting.FileSystemObject") 

    Set dirObj = mergeObj.Getfolder("path") 

    Set filesObj = dirObj.Files 

    For Each everyObj In filesObj 

     Set bookList = Workbooks.Open(everyObj) 

     'EDIT 
     With bookList.Sheets(1) 
      .Range("A2:IV" & .Range("A65536").End(xlUp).Row).Copy _ 
      ThisWorkbook.Worksheets(1).Range("A65536").End(xlUp).Offset(1, 0) 
     End With 
     '/EDIT 

     bookList.Close False 

    Next 

End Sub 
+0

這是在運行,但沒有獲取任何數據 – commander420

+0

所以,也許你的數據不在第一張?或者你沒有打開你期望的文件?嘗試在「複製」行中放置一段時間,並在文件通過循環時查看這些文件。 –

+0

我保持斷點,並檢查,它是採取的數據存在的地方,我可以看到數據 – commander420