Lỗi thời gian chạy VBA trong Excel 2010 (1004) khi sử dụng chức năng SaveAs nếu tệp đã tồn tại.
Đây là một đoạn mã: >
> > >filesavename = Application.GetSaveAsFilename(FileMonth, _ > fileFilter:="(*.xlsm), *.xlsm, (*.xlsx), *.xlsx,(*.xls), *.xls") >' FileMonth là tên Sổ làm việc, các tùy chọn lọc để lưu tệp phiên bản cũ hơn >ActiveWorkbook.SaveAs filesavename > On Error GoTo SaveError >' mã không liên quan khác >' >' >SaveError: >msg = "Tên tệp đã tồn tại và chưa được lưu." & Chr(13) & Chr(13) _ > & "Kiểm tra xem Năm và Tháng có chính xác không." & Chr(13) & Chr(13) >MsgBox msg >
>Kết thúc Sub>
> Hoạt động trơn tru cho đến khi tên tệp trùng lặp. > Hộp thoại xuất hiện để phát hiện tệp đã tồn tại với các tùy chọn lưu: Có, Không, Hủy. > Có: hoạt động tốt và tệp được ghi đè. > Không và Hủy: mở hộp thoại lỗi thời gian chạy, thông báo - Phương thức "SaveAs" đối tượng '_Workbook' đã thất bại. > Các tùy chọn là Kết thúc hoặc Gỡ lỗi. > Kết thúc: đóng hộp thoại và mã tiếp tục chạy mà tệp chưa được lưu. >
Nếu hộp thoại lỗi không hiển thị, thì tệp sẽ được lưu và ghi đè lên tệp gốc. > Đã thử xử lý lỗi sau khi lưu dưới dạng tệp khác, nhưng không phát hiện được lỗi. >
Bạn có ý kiến gì không?
>
>
Trả lời:
> > >filesavename = Application.GetSaveAsFilename(FileMonth, _ > fileFilter:="(*.xlsm), *.xlsm, (*.xlsx), *.xlsx,(*.xls), *.xls") >' FileMonth là tên Sổ làm việc, các tùy chọn lọc để lưu tệp phiên bản cũ hơn >ActiveWorkbook.SaveAs filesavename > On Error GoTo SaveError >' mã không liên quan khác >' >' >SaveError: >msg = "Tên tệp đã tồn tại và chưa được lưu." & Chr(13) & Chr(13) _ > & "Kiểm tra xem Năm và Tháng có chính xác không." & Chr(13) & Chr(13) >MsgBox msg >
>Kết thúc Sub>
> Hoạt động trơn tru cho đến khi tên tệp trùng lặp. > Hộp thoại xuất hiện để phát hiện tệp đã tồn tại với các tùy chọn lưu: Có, Không, Hủy. > Có: hoạt động tốt và tệp được ghi đè. > Không và Hủy: mở hộp thoại lỗi thời gian chạy, thông báo - Phương thức "SaveAs" đối tượng '_Workbook' đã thất bại. > Các tùy chọn là Kết thúc hoặc Gỡ lỗi. > Kết thúc: đóng hộp thoại và mã tiếp tục chạy mà tệp chưa được lưu. >
Nếu hộp thoại lỗi không hiển thị, thì tệp sẽ được lưu và ghi đè lên tệp gốc. > Đã thử xử lý lỗi sau khi lưu dưới dạng tệp khác, nhưng không phát hiện được lỗi. >
Bạn có ý kiến gì không?
>
>
Trả lời:
Hãy thử cách này xem.
Bernie
Dim FileMonth As String
Dim FileSaveName As String
FileMonth = ThisWorkbook.Name
Lấy tên:
FileSaveName = Application.GetSaveAsFilename(FileMonth, _
fileFilter:="(*.xlsm), *.xlsm, (*.xlsx), *.xlsx,(*.xls), *.xls")
'FileMonth là tên của sổ làm việc, các tùy chọn lọc cho phép lưu tệp phiên bản cũ hơn'.
Nếu Dir(FileSaveName) = "" thì
ActiveWorkbook.SaveAs FileSaveName
Khác
Nếu MsgBox("Tệp đó đã tồn tại. Bạn có muốn ghi đè không?", vbYesNo) = vbNo thì GoTo GetName
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs FileSaveName
Application.DisplayAlerts = True
Kết thúc nếu
' mã khác không liên quan
'
'
Comments
Post a Comment