Triệu chứng
Khi chạy mã sử dụng tự động điều khiển Microsoft Excel, một trong các lỗi sau đây có thể xảy ra:
Trong Microsoft Excel 97 và các phiên bản Excel, bạn nhận được một thông báo lỗi sau:
Thông báo lỗi 1
Thời gian chạy lỗi '1004':
Phương pháp '< tên phương pháp >' đối tượng '_Global' không thành công
Thông báo lỗi 2
Lỗi ứng dụng xác định hoặc xác định đối tượng
Trong Microsoft Excel 95, bạn nhận được một thông báo lỗi sau:
Thông báo lỗi 1
Thời gian chạy lỗi '-2147023174'
OLE lỗi tự động
Thông báo lỗi 2
Thời gian chạy lỗi '462':
Máy chủ từ xa không tồn tại hay không.
Nguyên nhân
Visual Basic đã thiết lập một tham chiếu đến Excel bởi một dòng mã gọi một đối tượng Excel, phương pháp hoặc thuộc tính không có đủ điều kiện các yếu tố với biến đối tượng Excel. Visual Basic không phát hành tham khảo này cho đến khi bạn kết thúc chương trình. Tham chiếu lang thang này cản trở tự động mã khi mã được chạy nhiều lần.
Giải pháp
Để khắc phục sự cố này, thay đổi mã để mỗi cuộc gọi đối tượng, phương pháp hoặc thuộc tính của Excel đủ điều kiện với biến đối tượng phù hợp.
Trạng thái
Hoạt động này là theo thiết kế.
Thông tin
Để tự động Microsoft Excel, bạn thiết lập biến đối tượng thường đề cập đến các đối tượng ứng dụng Excel hoặc đối tượng sổ làm việc Excel. Biến đối tượng khác có thể được đặt để tham khảo trang tính, nhiều hoặc các đối tượng trong mô hình đối tượng Microsoft Excel. Khi bạn soạn mã sử dụng đối tượng, phương pháp hoặc thuộc tính của Excel, bạn nên luôn đứng trước cuộc gọi với biến đối tượng phù hợp. Nếu không, Visual Basic lập mình tham chiếu đến Excel. Này có thể gây ra sự cố khi bạn cố gắng chạy mã tự động nhiều lần. Lưu ý rằng ngay cả khi dòng mã bắt đầu với biến đối tượng, cuộc gọi có thể được thực hiện một đối tượng Excel, phương pháp hoặc thuộc tính giữa dòng mã không trước với biến đối tượng.
Các bước sau đây minh họa làm thế nào để tái tạo lại vấn đề này và cách khắc phục sự cố.
Các bước để tái tạo hiện tượng
-
Bắt đầu một dự án tiêu chuẩn EXE Visual Basic. Biểu mẫu 1 được tạo ra theo mặc định.
-
Trên Project menu, bấm tham khảovà sau đó kiểm tra thư viện đối tượng cho phiên bản Excel mà bạn muốn tự động.
-
Đặt điều khiển CommandButton vào Form1.
-
Sao chép mẫu mã sau vào cửa sổ Form1, mã.
Option Explicit
Private Sub Command1_Click()
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets("Sheet1")
xlSheet.Range(Cells(1, 1), Cells(10, 2)).Value = "Hello"
xlBook.Saved = True
Set xlSheet = Nothing
Set xlBook = Nothing
xlApp.Quit
Set xlApp = Nothing
End Sub -
Trên menu chạy , bấm bắt đầu, hoặc nhấn phím F5 để khởi động chương trình.
-
Bấm vào điều khiển CommandButton . Không có lỗi xảy ra. Tuy nhiên, một tham chiếu đến Excel đã được tạo ra và không được phát hành.
-
Bấm vào điều khiển CommandButton lại. Lưu ý rằng bạn nhận được một thông báo lỗi được thảo luận trong phần "Triệu chứng".
Lưu ý Thông báo lỗi xảy ra vì mã đề cập đến phương pháp ô không trước cuộc gọi với các
biến đối tượng xlSheet . -
Dừng dự án và thay đổi dòng mã sau:
xlSheet.Range(Cells(1,1),Cells(10,2)).Value = "Hello"
Thay đổi dòng mã giống như dòng mã sau.
xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(10,2)).Value = "Hello"
-
Chạy lại chương trình. Lưu ý rằng bạn có thể chạy mã nhiều lần mà không nhận được thông báo lỗi.
Tham khảo
Để biết thêm thông tin, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:
Tệp trợ giúp tự động Microsoft Office 97 167223 có
189618 bạn có thể nhận được thông báo lỗi "lỗi thời gian chạy '-2147023174' (800706ba)" hoặc "thời gian chạy lỗi '462'" khi bạn chạy Visual Basic mã sử dụng tự động điều khiển từ