Đối mặt với lỗi thời gian chạy "1004" trong Macros excel
Kính thưa
Một cấp dưới của tôi đã làm Macro trên excel 2010, hiện anh ấy đã nghỉ việc ở công ty, hiện tôi đang sử dụng Office Excel 2013
khi tôi chạy macro, tôi gặp phải sự cố về Lỗi thời gian chạy " 1004" - Excel không thể mở tệp '~$ tên tệp .xlsx' vì định dạng tệp hoặc phần mở rộng tệp không hợp lệ. Hãy xác minh rằng tệp không bị hỏng và phần mở rộng tệp phù hợp với định dạng của tệp."
Khi tôi gỡ lỗi tệp thì thông báo hiển thị màu vàng trong tệp Macro là " Workbooks.Open (fl)"
vui lòng giúp tôi giải quyết vấn đề này, tên báo cáo này là báo cáo khôn ngoan của Chi nhánh R5, R_Template.xlsx là tên tệp hỗ trợ
Tôi có 12 sổ làm việc mà macro này tạo bản sao và dán và tạo báo cáo thông minh cho 28 nhánh.
Khi tôi chạy báo cáo này, Macro hỏi tôi báo cáo đăng ký, sau đó yêu cầu lựa chọn thư mục (Thư mục báo cáo hiệu suất) chứa 12 sổ làm việc, sau khi chọn đường dẫn đó, tất cả 12 tệp excel sẽ mở nhưng ở đây tôi đang gặp phải vấn đề lỗi. Trên thực tế, sau bước này, nó phải bắt đầu sao chép, dán và tạo tệp thông minh 28 nhánh.
Tôi đang gửi chi tiết macro bên dưới để bạn tham khảo báo cáo cụ thể đó:
Phụ R_Five_Branchwise()
Application.ScreenUpdating = Sai
Application.EnableCancelKey = xlDisabled
'cài đặt tham chiếu "Microsoft Scripting Runtime" cho Scripting.FileSystemObject
Dim fso Là tập lệnh mới.FileSystemObject
Dim wrk Như sổ làm việc, wrk1 Là sổ làm việc, wrk2 Là sổ làm việc, flnm Là biến thể
Dim Magz_nm_path(50) Là biến thể
Dim Magz_nm_fin(50) Là biến thể
Dim Magz_nm(50) là biến thể
Dim Magz_nm_No_ext(50) là biến thể
Đặt wk = ThisWorkbook
file_test = MsgBox("""R_Template"" là bắt buộc để chạy macro. Bạn có chắc chắn tệp đang mở không?", vbYesNo, "Các tệp cần thiết để chạy Macro")
Nếu file_test = "6" thì
Đặt sht = wk.Sheets(1)
Đặt dat = Range("C6")
Đặt wrk1 = Sổ làm việc("R_Template")
Đặt sht1 = wrk1.Sheets("Tổ chức bán hàng")
dat_sht = Định dạng(dat, "MMM") & " " & Định dạng(dat, "YY")
dat_ffm = Định dạng(dat, "MMM") & "-" & Định dạng(dat, "YY")
Đặt fd = Application.FileDialog(msoFileDialogFolderPicker)
fd.Title = "Chọn Thư mục Báo cáo Hiệu suất Thông minh"
fd.Show
strPath = fd.SelectedItems(1)
create_pth = strPath & "\Báo cáo R5 theo nhánh"
MkDir tạo_pth
' flnm = Application.GetOpenFilename(, , "Chọn tệp kết xuất đăng ký")
' Workbooks.Open (flnm)
' subs_File = ActiveWorkbook.Name
Nếu strPath = "" Thì
MsgBox "Không có tập tin nào trong thư mục đã cho"
Thoát phụ
Kết thúc nếu
Đặt fld = fso.GetFolder(strPath)
cnt_fil = fld.Files.Count
P = 1
Đối với mỗi fl Trong fld.Files
Sách bài tập.Open (fl)
Magz_nm_path(P) = fl.Path
Magz_nm_fin(P) = fl.Name
Magz_nm(P) = Left(Magz_nm_fin(P), InStr(1, Magz_nm_fin(P), "_") - 1)
Magz_nm_No_ext(P) = Left(Magz_nm_fin(P), InStr(1, Magz_nm_fin(P), ".") - 1)
magz_code = Right(No_ext_fil, InStr(1, Magz_nm_fin(P), ".") - 1 - InStr(1, Magz_nm_fin(P), "_"))
P = P + 1
FL tiếp theo
Application.Wait (Bây giờ + TimeValue("00:00:04"))
br_nm = sht1.Range("G" & Rows.Count).End(xlUp).Row
Đối với mỗi j Trong sht1.Range("G5:G" & br_nm)
bch = j
Sách bài tập.Thêm
base_fil = ActiveWorkbook.Name
Với i = 1 Đến cnt_fil
Sổ làm việc(base_fil).Sheets.Add.Name = Magz_nm_No_ext(i)
Tiếp theo tôi
Application.DisplayAlerts = Sai
Trang tính ("Trang tính 1"). Xóa
Application.CutCopyMode = Sai
Trang tính(1).Chọn
Phạm vi("A1").Chọn
'wrk1.Kích hoạt
Gặp lỗi Chuyển tới 22
Với n = 1 Đến cnt_fil
Sổ làm việc(Magz_nm_No_ext(n)).Sheets(brch).Cells.Copy Đích:=Workbooks(base_fil).Sheets(Magz_nm_No_ext(n)).Range("A1")
Tiếp theo n
22:
Windows(base_fil).Kích hoạt
Tên tệp ActiveWorkbook.SaveAs:= _
tạo_pth & "\" & brch & ".xlsx"
Application.DisplayAlerts = Sai
Windows(brch).Đóng
Tiếp theo j
Với g = 1 Đến cnt_fil
'Sách bài tập(Magz_nm_fin(P)).
Application.DisplayAlerts = Sai
Sổ làm việc(Magz_nm_fin(g)).Đóng savechanges:=False
Application.DisplayAlerts = Đúng
Tiếp theo g
MsgBox "R5 đã hoàn tất thành công theo nhánh"
Khác
MsgBox ("Vui lòng mở tệp và nhấp lại vào ""Tạo báo cáo"")
Thoát phụ
Kết thúc nếu
Kết thúc phụ
Trả lời:
Thay đổi vòng lặp
Đối với mỗi fl Trong fld.Files
Sách bài tập.Open (fl)
Magz_nm_path(P) = fl.Path
Magz_nm_fin(P) = fl.Name
Magz_nm(P) = Left(Magz_nm_fin(P), InStr(1, Magz_nm_fin(P), "_") - 1)
Magz_nm_No_ext(P) = Left(Magz_nm_fin(P), InStr(1, Magz_nm_fin(P), ".") - 1)
magz_code = Right(No_ext_fil, InStr(1, Magz_nm_fin(P), ".") - 1 - InStr(1, Magz_nm_fin(P), "_"))
P = P + 1
FL tiếp theo
ĐẾN
Đối với mỗi fl Trong fld.Files
Nếu Left(fl, 1).Name <> "~" Thì
Sách bài tập.Open (fl)
Magz_nm_path(P) = fl.Path
Magz_nm_fin(P) = fl.Name
Magz_nm(P) = Left(Magz_nm_fin(P), InStr(1, Magz_nm_fin(P), "_") - 1)
Magz_nm_No_ext(P) = Left(Magz_nm_fin(P), InStr(1, Magz_nm_fin(P), ".") - 1)
magz_code = Right(No_ext_fil, InStr(1, Magz_nm_fin(P), ".") - 1 - InStr(1, Magz_nm_fin(P), "_"))
P = P + 1
Kết thúc nếu
FL tiếp theo
Trả lời:
Kính thưa ngài,
Cảm ơn bạn đã đưa ra giải pháp, theo giải pháp trên, tôi phải tham khảo đoạn thứ 2 Đúng không?.... Tôi là người dùng cuối không phải là người ở cấp độ lập trình viên, tôi sẽ thử giải pháp đó và thông báo cho bạn kết quả sau...vì hôm nay PC đó không có sẵn...
nhưng thưa ông, khi chạy cùng một báo cáo với cùng một macro trên một PC khác có Excel 2010 thì tôi thấy thông báo lỗi khác "Lỗi số 9, chỉ số dưới phạm vi"
và khi tôi gỡ lỗi tệp macro thì thông báo hiển thị màu vàng "Đặt wrk1 = Workbooks("R_Template")"
Tôi không hiểu rằng cùng một macro hiển thị hai thông báo lỗi khác nhau trên các PC khác nhau ..
Vui lòng đưa ra giải pháp cho vấn đề này cũng ...
Trân trọng
Hemant
Trả lời:
Thông báo lỗi có nghĩa là không có sổ làm việc có tên R_Template nào được mở trong Excel khi macro chạy. Macro sẽ chỉ chạy chính xác nếu người dùng đã mở sổ làm việc có tên R_Template.
Trả lời:
Thưa ngài,
Tôi luôn mở tệp R_template.xlsx khi chạy macro này. nhưng vẫn gặp phải thông báo Lỗi số 9... một tháng trước nó vẫn hoạt động trơn tru nhưng bây giờ tôi gặp phải sự cố này trên PC này..
Vui lòng giúp tôi..
Trân trọng
Hemant
Trả lời:
Hãy thử thay đổi dòng
Đặt wrk1 = Sổ làm việc("R_Template")
ĐẾN
Đặt wrk1 = Sổ làm việc("R_Template.xlsx")
Trả lời:
Xin chào ngài,
Tôi đã thử giải pháp đầu tiên mà bạn đưa ra nhưng khi tôi chạy macro đó, thông báo mới xuất hiện " Lỗi không có đối tượng 424 yêu cầu " khi tôi gỡ lỗi thì thông báo hiển thị màu vàng " If Left(fl, 1).Name <> "~" Then"
Tôi cũng đã thử tính năng này trên PC 2 và tôi thêm giải pháp vào macro " Đặt wrk1 = Workbooks("R_Template.xlsx")
nhưng nó không hoạt động khi tôi gỡ lỗi và sau đó thông báo tương tự được hiển thị bằng màu vàng Đặt wrk1 = Workbooks("R_Template.xlsx")
vui lòng đề xuất giải pháp cho cả hai ...
Trân trọng
Hemant
Trả lời:
Thay đổi
Nếu Left(fl, 1).Name <> "~" Thì
ĐẾN
Nếu còn lại(fl.Name, 1) <> "~" Thì
Nếu bạn vẫn nhận được thông báo lỗi trên đường dây
Đặt wrk1 = Sổ làm việc("R_Template.xlsx")
sổ làm việc R_Template.xlsx không mở được trong Excel, ít nhất là không có trong cùng một phiên bản Excel. Nó phải được mở trong phiên bản Excel mà bạn chạy macro.
Trả lời:
Xin chào ngài,
Khi tôi thử " If Left(fl.Name, 1) <> "~" Then" thì lại có thông báo mới hiển thị " Lỗi thời gian chạy 1004, lỗi do ứng dụng xác định hoặc do đối tượng xác định"
Khi tôi gỡ lỗi tệp thì thông báo hiển thị màu vàng trong tệp Macro là
" Workbooks(base_fil).sheets.add.Name = Magz_nm_No_ext (i) "
>Trả lời:
Khi mã bị tạm dừng do lỗi, hãy nhập hoặc sao chép/dán nội dung sau vào cửa sổ Ngay lập tức và nhấn Enter:
Gỡ lỗi.Print Magz_nm_No_ext(i)
Kết quả là gì?
Trả lời:
Xin chào ngài,
vui lòng giải thích chi tiết nơi sao chép/dán ở trên chính xác? trong tệp Macro? hoặc thay thế bằng thông báo lỗi màu vàng trong Macro?
Comments
Post a Comment