2016-10-04 50 views
0
Private Sub CommandButton1_Click() 
Dim directory As String, fileName As String, sheet As Worksheet, total As Double 
Application.ScreenUpdating = False 
Application.DisplayAlerts = False 

directory = "c:\test\" 
fileName = Dir(directory & "*.xl??") 

Do While fileName <> "" 
Workbooks.Open (directory & fileName) 
For Each sheet In Workbooks(fileName).Worksheets 
    total = Workbooks("Summary File.xls").Worksheets.Count 
    Workbooks(fileName).Worksheets(sheet.Name).Copy _ 
    after:=Workbooks("Summary File.xls").Worksheets(total) 
Next sheet 
Workbooks(fileName).Close 
fileName = Dir() 
Loop 
Application.ScreenUpdating = True 
Application.DisplayAlerts = True 
End Sub 
+2

是 「摘要File.xls」 打開? – Comintern

+0

@Comintern是它是開放的 –

+0

文件名必須是錯誤的,或者它在不同的Excel實例中打開。 – Rory

回答

0

我想這是因爲「Summary File.xls」是Excel 97-2003的格式,而你正試圖在其中插入來自具有更多列和行的更新近Excel版本文件的工作表,因此導致錯誤,因此「摘要文件」被關閉並且隨後嘗試引用它(即Workbooks("Summary File.xls")),拋出「標超出範圍」錯誤

更改您的‘概要文件’到至少2007的Excel版本(從零做起,與除另有企圖將產生一個兼容模式,將仍然拋出的錯誤),然後運行宏

BTW,替代Workbooks(fileName).Worksheets(sheet.Name)sheetFor Each sheet In Workbooks(fileName).Worksheets循環內

+0

非常感謝,解決了我的問題! –

+0

不客氣。良好的編碼! – user3598756