當我嘗試將工作簿頁面合併到一個主文檔中時,出現1004錯誤。代碼在我的設備上正常工作,但是當我嘗試在朋友設備上運行代碼時,它會引發1004錯誤。我相信他在Excel 2013中,我在Excel 2016中。有什麼方法可以將我的代碼轉換爲可以在兩種設備上使用的代碼?將多個選項卡複製到文件夾中的一個選項卡時出現excel VBA 1004錯誤
Sub CombineSheets()
Dim sPath As String
Dim sFname As String
Dim wBk As Workbook
Dim wSht As Variant
Application.EnableEvents = False
Application.ScreenUpdating = False
sPath = InputBox("Enter a full path to workbooks")
ChDir sPath
sFname = InputBox("Enter a filename pattern")
sFname = Dir(sPath & "\" & sFname & ".xl*", vbNormal)
wSht = InputBox("Enter a worksheet name to copy")
Do Until sFname = ""
Set wBk = Workbooks.Open(sFname)
Windows(sFname).Activate
Sheets(wSht).Copy Before:=ThisWorkbook.Sheets(1)
wBk.Close False
sFname = Dir()
Loop
ActiveWorkbook.Save
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
這正常工作當我運行它,會提示輸入文件夾位置,詢問哪些文件應該從(通常爲*)進行復制,然後從專門複製工作表名稱輸入。
實際上,我需要的是可以從幾百個excel文件中提取一個工作表並將它們合併爲一個主文檔的代碼。能夠挑選並選擇哪些工作表只是一種獎勵。
謝謝!
哪一行會引發異常? – braX
不要'激活'窗口,不要使用隱式引用活動工作簿的不合格'Sheets'集合。如果您只打算使用「工作表」對象,請使用「工作表」集合而不是「表格」集合。改爲使用'wBk'工作簿對象引用。 'wkb.Worksheets(wSht).Copy Before:= ThisWorkbook.Worksheets(1)'。調用'ThisWorkbook.Save',而不是依賴關閉'wBk'後隱式重新激活它。 –
此外,您的代碼假定用戶輸入有效,並且不驗證任何內容。也許從輸入驗證開始吧? –