Cách sửa lỗi đoạn code trong môi trường 64bit (3 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

talama123

Thành viên chính thức
Tham gia
23/12/10
Bài viết
55
Được thích
0
Em copy 1 file qua môi trường 64 bit thì thấy báo lỗi ở dòng này :
Private Declare Function ShowWindow Lib "User32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
1545541529399.png

Có cách nào khắc phục lỗi này không ạ !
 

File đính kèm

  • 1545541424818.png
    1545541424818.png
    210.9 KB · Đọc: 6
Sửa code:
Mã:
#If VBA7 Then
    Private Declare PtrSafe Function ShowWindow Lib "User32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
#Else
    Private Declare Function ShowWindow Lib "User32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
#End If
 
Upvote 0
Mình cảm ơn , nhưng sau khi sửa lại có thêm lỗi này !

1545549299565.png

Không biết có phải do office ko ạ, mà nó không cho sửa ta !
 
Lần chỉnh sửa cuối:
Upvote 0
Hic dạ e cảm ơn , không biết nó bị sao nữa a ơi, trên win 32 bit thì ok, e chuyển qua máy 64 thì thấy nhiều lỗi quá.
 
Upvote 0
Riêng về khai báo hàm ShowWindow thì xóa những nơi đã khai báo ShowWindow và thay bằng
Mã:
#If VBA7 Then
    Private Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hwnd As LongPtr, ByVal nCmdShow As Long) As Long
#Else
    Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
#End If

Chú ý là trong nhánh IF thì hwnd As LongPtr

Rất có thể còn nhiều chỗ sai nữa nhưng không có tập tin, không có quả cầu thủy tinh, thì thánh cũng bó tay.
 
Upvote 0
Dạ em cảm ơn các a quan tâm , e cài lại office 32 bit trên Win 64 và đã khắc phục được ! Hix bản trước em cài office 64 không load được
 
Upvote 0
Chú ý là trong nhánh IF thì hwnd As LongPtr
không biết Bác có nhầm không.
hwnd As Long vẫn hoạt động trong win64
VBA7 và Win64 nếu là một thủ tục hàm gọi lại (Win API Callbacks) sẽ là LongPtr (32-64) hoặc LongLong (64) hoặc Any
Ví dụ:

PHP:
Declare API <Function1> (<var> LongPtr/ LongLong/ Any) As LongPtr
<Function2>
Call <Function1> (AddressOf <Function2>)
Dạ em cảm ơn các a quan tâm , e cài lại office 32 bit trên Win 64 và đã khắc phục được ! Hix bản trước em cài office 64 không load được
Về Office32 bạn được thì ít mà thiếu thốn thì nhiều. Vì trong Office 64 có Hỗ trợ tương thích ngược với các API 32bit. Nên khi đang là Office64 thì không nhất thiết phải về Office32.
Nếu ở Office32 thì không thể tương thích với phần mềm 64 bit
 
Lần chỉnh sửa cuối:
Upvote 0
không biết Bác có nhầm không.
hwnd As Long vẫn hoạt động trong win64
Tôi không có các hệ điều hành nào khác ngoài XP để thử nghiệm nên không biết có hoạt động hay không.

Nhưng chắc chắn tôi không nhầm bạn ạ. Tôi copy từ tập tin Win32API_PtrSafe.TXT - mọi người có thể tải về từ

https://www.microsoft.com/en-us/download/details.aspx?id=9970

Khi có nhiều người nói khác nhau thì tôi luôn tin tưởng bác Bill. Không phải vì bác Bill đẹp trai nhìn thấy thiện cảm ngay hay bác đó là người không bao giờ nhầm lẫn, vì cũng có lúc bác ta nhầm. Nhưng tôi tin bác Bill vì đó là sản phẩm của bác đó.
 
Upvote 0
Tôi không có các hệ điều hành nào khác ngoài XP để thử nghiệm nên không biết có hoạt động hay không.

Nhưng chắc chắn tôi không nhầm bạn ạ. Tôi copy từ tập tin Win32API_PtrSafe.TXT - mọi người có thể tải về từ

https://www.microsoft.com/en-us/download/details.aspx?id=9970

Khi có nhiều người nói khác nhau thì tôi luôn tin tưởng bác Bill. Không phải vì bác Bill đẹp trai nhìn thấy thiện cảm ngay hay bác đó là người không bao giờ nhầm lẫn, vì cũng có lúc bác ta nhầm. Nhưng tôi tin bác Bill vì đó là sản phẩm của bác đó.
Chắc lời nói của em thua kém mọi người nên nói hơi khó hiểu. Chấp nhận lùi bước
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom