Cái đó do win bạn dùng 32 bit nên nó báo vây.
Bạn viết cái 3 chấm kia thì người ta làm sao biết làm? Đã mua sách là chưa biết mới mua. Mua sách rồi lại phải tìm kiếm, đi hỏi người khác là chỗ 3 chấm kia viết thế nào? Thế thì mua sách làm gì? Mà là nâng cao đấy nhé. 64 bit có từ lâu, sách mới viết, tái bản thì sao không viết?Cái đó do win bạn dùng 32 bit nên nó báo vây.
Nếu dùng 64 bit.
# if vba7 then
Private declare ptrsafe....... Ptr
# else
Chèn code đỏ vào
# end if
Thì đúng rồi. Thông báo lỗi nói rõ ràng mà.Bạn chụp đoạn code phía trên đoạn báo lỗi xem sao? Khả năng bạn dùng Office 64bit nên chưa update.
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" ( _
ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String) As Long
...
#If VBA7 Then
Private Declare PtrSafe Function DefWindowProcW Lib "user32" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPtr
#Else
Private Declare Function DefWindowProcW Lib "user32" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
#End If
'For the Title form
Private Const WM_SETTEXT As Long = &HC
'******************************************************************************************************
Private Const C_USERFORM_CLASSNAME = "ThunderDFrame"
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" ( _
ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
Thì đúng rồi. Thông báo lỗi nói rõ ràng mà.
À màCơ bản em toàn dùng Office 32-bit nên không để ý
Private Declare PtrSafe Function DefWindowProcW Lib "user32" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPtr
Private Declare PtrSafe Function DefWindowProcW Lib "user32" (ByVal hwnd As LongPtr, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPtr
Nhờ bác update cho 64-bit nhé.
#If VBA7 Then
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Private Declare PtrSafe Function FindWindowEx Lib "user32" Alias "FindWindowExA" ( _
ByVal hWnd1 As LongPtr, ByVal hWnd2 As LongPtr, ByVal lpsz1 As String, ByVal lpsz2 As String) As LongPtr
#Else
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" ( _
ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
#End If
Phần này từ hàm cũ của em, mà cũng chỉ dùng mỗi API ở nội dung này, nhưng quên không update cho Excel 64bit thôi, còn đã xong với Window 64bit rồi. Trong sách cũng có hướng dẫn, bạn đọc có thể vận dụng để sửa lại.Nếu sách lập trình VBA GPE mà liên quan đến lập trình API, nếu chỉ viết trên Office 32 bit khả năng phải cải biên sớm vì bây giờ người ta hay cài Office 64 bit lắm khi đó sẽ nhiều người gặp lỗi như trên.
Compile error:
The code in this project must be updated for use on 64-bit
systems. Please review and update Declare statements and
then mark them with the PtrSafe attribute.
Dịch bởi Google ----------------------------------
Lỗi biên dịch:
Mã trong dự án này phải được cập nhật để sử dụng trên 64 bit
hệ thống. Vui lòng xem lại và cập nhật Tuyên bố khai báo và
sau đó đánh dấu chúng bằng thuộc tính PtrSafe.
Phần này từ hàm cũ của em, mà cũng chỉ dùng mỗi API ở nội dung này, nhưng quên không update cho Excel 64bit thôi, còn đã xong với Window 64bit rồi. Trong sách cũng có hướng dẫn, bạn đọc có thể vận dụng để sửa lại.
Tôi nghĩ sách đã lỡ in, thì nên viết thêm 1 phụ lục bổ sung (chừng 10 trang), cho những mục như chủ đề này. In ra giấy A4 dán bìa và kẹp theo sách khi có người mua
Bác viết sách đi mới cẩn thận được, và có người kiểm lại thì tốt, không có thì sách giờ (mà không biết có gọi là sách đúng nữa không) dễ bị lỗi và sai làm người đọc khó khăn và chắp vá kiến thức.Theo tôi thì phần lỗi không quan trọng lắm. Nhưng nếu tái bản sách thì:
Quyển "cơ bản" tôi thêm:
1. phân biệt giữa Sub và Function. Tầm vực của biến và Sub/Function
2. phân biệt giữa các hàm VBA và hàm Application.[Function]
3. Cấu trúc dữ liệu (data structure).
4. Các chương 12, 13, 15 tôi cho vào phụ lục (phụ lục A, B, C), thay vì chương. Chúng là để mở mang kiến thức chứ đâu phải là căn bản VBA.
View attachment 229215
Quyển "nâng cao" tôi thêm:
1. sửa chương 23: "Lý thuyết Cơ Sở Dữ Liệu và Kêt Nối CSDL bằng ADO"
2. thêm phần phụ lục:
Phụ lục A: cách thức debug (bậc cao)
Phụ lục B: các lỗi cơ bản do mặc định môi trường. Điển hình các đối tượng kết nối sớm sẽ sử dụng hàm mặc định khác với kết nối trễ. Và cái vụ 32-64 bit có thể cho vào mục này.
View attachment 229217
Viết cái gì cũng có sơ sót.Bác viết sách đi mới cẩn thận được, và có người kiểm lại thì tốt, không có thì sách giờ (mà không biết có gọi là sách đúng nữa không) dễ bị lỗi và sai làm người đọc khó khăn và chắp vá kiến thức.
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2