Đối mặt với lỗi thời gian chạy "1004" trong Macros excel

Đố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

Popular posts from this blog

Excel 2016 - mở tất cả các tệp trong MỘT phiên bản

Điều tôi muốn làm trong Excel 2010 là tạo một nút tùy chỉnh và gắn nó vào thanh công cụ Truy nhập nhanh và chạy một macro cụ thể.

Khẩn cấp - File Excel chứa các ký tự đặc biệt ở họ và tên liên hệ