Lỗi thời gian chạy khi xuất Excel VBA dưới dạng PDF: 2147417848 (80010108)

Xin chào,

Tôi tự hỏi liệu có ai có thể giúp đỡ hoặc có ai khác gặp phải vấn đề tương tự không.

Tôi có một đoạn mã VBA rất đơn giản, chỉ chạy và xuất một bảng tính dưới dạng PDF. Nó đã hoạt động tốt trong nhiều năm. Tuy nhiên, tôi có một máy tính xách tay mới và vì lý do nào đó nó đã ngừng hoạt động và tôi nhận được thông báo sau:

Lỗi thời gian chạy '-2147417848 (80010108)':

Lỗi tự động hóa

Đối tượng được gọi đã ngắt kết nối khỏi máy khách của nó.

Đoạn mã rất đơn giản nên tôi không hiểu tại sao nó lại không hoạt động? Sự khác biệt duy nhất mà tôi thấy là máy mới đang chạy Excel 64-bit thay vì 32-bit như trước đây.

Đây là đoạn mã:

Sub ExportPDF()

Ứng dụng.Màn hình cập nhật = Sai

Trang tính ("Trang tính 1"). Chọn
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Redcar ISG\Tracking System\" & "PDF1", Chất lượng _
:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Trang tính ("Trang tính 1"). Chọn

End Sub

Có ai có ý kiến ​​gì không?




Trả lời:

Chào AC

Tôi đoán bạn đã bỏ sót phần mở rộng tệp trong Tên tệp:=".pdf"

Hãy thử


***************************************************************

Sub ExportPDF()


Ứng dụng.Màn hình cập nhật = Sai


Trang tính ("Trang tính 1").Kích hoạt

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

"C:\Redcar ISG\Tracking System\" & "PDF1" & ".pdf", Chất lượng _

:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _

OpenAfterPublish:=False

Trang tính ("Trang tính 1").Kích hoạt

Ứng dụng.Màn hình cập nhật = Đúng

End Sub

>

*************************************************************



Trả lời:

Hai sự thay đổi

1- Thay đổi "PDF1" và ".pdf" thành "PDF1.pdf"

2-Nếu bạn luôn xuất cùng một trang tính dưới dạng PDF thì không cần phải chọn trang tính.

***************************************************************

Sub ExportPDF()


Ứng dụng.Màn hình cập nhật = Sai

Sheet1.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

"C:\Redcar ISG\Tracking System\" & "PDF1.pdf", Chất lượng _

:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _

OpenAfterPublish:=False

Ứng dụng.Màn hình cập nhật = Đúng

End Sub

>

*************************************************************

>



Trả lời:

Chào Jeovany,

Tôi rất cảm ơn phản hồi và sự giúp đỡ của bạn. Tuy nhiên, tôi không nghĩ đó là nguyên nhân gây ra vấn đề. Tôi đã đổi tên tệp thành 'test.pdf' (xem đoạn mã mới bên dưới) và vẫn gặp lỗi tương tự. Nó cũng hoạt động trên các máy trước đây mà không cần phải chỉ định phần mở rộng tệp là 'pdf'.

Lạ thật, nếu tôi định nghĩa trang tính ở trên thì nó lại hoạt động (dim ws as worksheet). Điều này khiến tôi nghĩ rằng nó có vấn đề trong việc nhận diện 'trang tính đang hoạt động'. Tôi đã thêm một hộp thoại để xác nhận xem nó có nhận diện được trang tính đó hay không và nó đã nhận diện được. Tuy nhiên, nó vẫn báo lỗi tương tự. Tôi không muốn định nghĩa các trang tính vì trong một số đoạn mã của mình, tôi muốn chọn một mảng các trang tính đó rồi tạo tệp PDF.

Sub ExportPDF()

Ứng dụng.Màn hình cập nhật = Sai

Trang tính ("Trang tính 1"). Chọn
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="test.pdf", Quality _
:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Trang tính ("Trang tính 1"). Chọn

End Sub



Trả lời:

Tôi đã thử nghiệm macro của bạn ở phía mình và nó hoạt động tốt.

Vì bạn không chỉ định đường dẫn lưu tệp PDF nên theo mặc định nó sẽ được lưu trong thư mục Tài liệu của người dùng.

Xin lưu ý:

Hãy đảm bảo bật lại chức năng cập nhật màn hình trong macro của bạn. Đây là lần thứ hai bạn đăng macro mà không bật chức năng đó.

****************************************************************

Sub ExportPDF()


Ứng dụng.Màn hình cập nhật = Sai


Trang tính ("Trang tính 1"). Chọn

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="test.pdf", Quality _

:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _

OpenAfterPublish:=False

Trang tính ("Trang tính 1"). Chọn

Ứng dụng.Màn hình cập nhật = Đúng


End Sub

*********************************************************************



Trả lời:

Cảm ơn bạn. Tôi sẽ thêm screenupdating thành 'true' ở cuối.

Điều kỳ lạ là, nó hoạt động tốt trên 2 máy tính khác mà tôi đang dùng. Nó hoạt động tốt và đã hoạt động tốt trong một thời gian dài trên tất cả các máy tính mà tôi từng sở hữu. Tuy nhiên, trên chiếc máy tính xách tay mới này thì không. Tôi muốn hỏi bạn đang sử dụng phiên bản Office/Excel 64-bit hay 32-bit? Tôi nghĩ đây là nguyên nhân gây ra vấn đề. Có lẽ có một số lỗi khiến nó không thích sử dụng ActiveSheet khi chưa được định nghĩa?



Trả lời:

Hãy kiểm tra xem dự án VBA của bạn chỉ sử dụng Option Explicit hay không.



Trả lời:
Màn hình của tôi giống hệt như vậy?

Comments

Popular posts from this blog

Đ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ể.

Mở tài liệu Excel và Word từ Outlook Lỗi - Không đủ bộ nhớ

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