看板 Office 關於我們 聯絡資訊
軟體:excel 版本:2007 我之前有問過一個vba 就是把下列檔案依照檔名取工作表複製進來 檔案例如: 001.xlsx 002.xlsx 003.xlsx 004.xlsx 其中假設002有密碼保護 若是002 輸入密碼錯誤 我想跳過002繼續執行 用on error resume next 會變成 後面的003資料會成為002的工作表 若是下面的寫法則會失敗 不知道該怎麼修改 002密碼輸入錯誤後就跳掉 程式繼續執行下一個003的處理 而且都會正確改為003的工作表 程式碼如下: =========== cname = "try.xlsx" Workbooks.Add 1 ActiveWorkbook.SaveAs "D:\" & cname wb.Sheets("彙總").Copy after:=Workbooks(cname).Sheets(1) Do While openfile <> "" right: sfname = Left(openfile, InStrRev(openfile, ".") - 1) Workbooks.Open filepath & openfile On Error GoTo wrong ActiveSheet.Name = sfname Sheets(sfname).Copy before:=Workbooks(cname).Sheets("彙總") Workbooks(openfile).Close 0 openfile = Dir Loop wrong: MsgBox "檔案密碼錯誤" GoTo right Calculate Workbooks(cname).Close 1 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.67.77 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1497232201.A.64A.html
soyoso: on error resume next,set workbooks.open至變數 06/12 10:06
soyoso: 變數is nothing時為真時msgbox,為假執行其他動作 06/12 10:07
檔案跟範例檔案在這 https://drive.google.com/open?id=0BwCgrQhGgaw7Zm1JaTU0RW5WbU0 我改過但是還是會失敗 不知道程式碼有哪邊想錯了 感覺是順序問題? ※ 編輯: ptguitar (60.250.67.77), 06/12/2017 10:50:49
soyoso: ttbook於判斷後set為nothing,其他如worksheet.name、 06/12 11:10
soyoso: worksheet.copy或workbook.close再看看是否調整至else內 06/12 11:11