Một số câu lệnh không tương thích VBA với VB6

Liên hệ QC

PhanTuHuong

VBA & VB.NET for Excel & AutoCad
Thành viên danh dự
Tham gia
13/6/06
Bài viết
7,121
Được thích
24,279
Khi sử dụng dll, tôi phát hiện một số câu lệnh không tương thích VBA với VB6 (dll). Ví dụ như đóng 1 workbook.

Trong VBA:
Workbooks(TenFileLuu).Close savechanges:=True

Tuy nhiên trong VB6 lại không được khi sử dụng:
mxlApp.Workbooks(TenFileLuu).Close savechanges:=True


trong đó, mxlApp là tham chiếu thư viện Excel (Excel.Application)

toàn bị báo lỗi:
Runtime error "91":
Object variable or With block variable not set

Mà phải viết như thế này mới được:

Dim FileLuu As Workbook
FileLuu.Close savechanges:=True

Thế mới oái oăm, có bác nào hiểu hơn thì phân tích nhé!
 
Dear all,
--------
Nếu vậy phải đặt lại tên chủ đề là "Tìm hiểu lỗi Runtime error "91": Object variable or With block variable not set" thì mới chính xác, chứ theo em thực chất 2 câu lệnh trên là tương đương nhau.

Chẳng qua là do môi trường khác nhau thôi! Với VBA, thư viện Excel.Application chính là môi trường làm việc của Excel (hiểu nôm na: mở VBA ra là đã có Excel), đó chính là thư viện
C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE
mà anh không thể loại bỏ nó trong bất kỳ VBA Project nào.

Ngược lại trong môi trường VB, ngoài việc anh phải Refer to C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE,anh phải gán (set) cho biến đối tượng mxlApp một thể hiện:

Set mxlApp = Excel.Application

và sau khi làm việc xong thì xoá bỏ nó

Set mxlApp = Nothing

Em tưởng cái này thì không thể quên khi "ngồi" trên VB6 chứ nhỉ!!!
 
Web KT
Back
Top Bottom