Demo Form sao lưu file (có tuỳ chọn nén) và thiết lập sao lưu định kỳ tự động (Task scheduler)

Liên hệ QC

ongke0711

Thành viên gắn bó
Tham gia
7/9/06
Bài viết
2,270
Được thích
3,015
Giới tính
Nam
218147


Chào các bạn,

Sau khi thiết kế ứng dụng xong thì một phần không thể thiếu là việc sao lưu dự phòng file CSDL (Excel thì phải lưu nguyên file). Tôi thấy có nhiều bạn trên diễn đàn hỏi về việc sao lưu nên sau mấy ngày vật vã, mò mẫm, đã viết xong cái module sao lưu nhỏ này chia sẻ với các bạn.
Cái tool này có các tuỳ chọn như sau:
- Sao lưu file hiện tại (đang mở) hoặc tuỳ chọn file cần sao lưu.
- Sao lưu và nén file với Winrar. Có thiết lập mật khẩu cho file .rar
- Một phần quan trọng trong tool này là tôi tích hợp việc sao lưu định kỳ theo thời gian chỉ định (ngày , tuần, giờ) thông qua Task Scheduler của Windows. Việc can thiệp thiết lập trong Task Scheduler tôi làm thông qua việc chạy các file VBScript chứ chưa làm được trực tiếp bằng code VBA.
- Các file trong folder Setting là các file VBScript để đăng ký sao lưu với Task Scheduler, các bạn không được xoá nhé.

Điểm chưa làm được:
- Có một điểm tôi thấy nó chạy chưa tốt là khi sao lưu + nén file cỡ 60M với mức độ nén cao nhất thì CPU chạy 100% và hơi bị lâu (mất ~20s).
- Thiết lập tuỳ chọn thời gian chạy định kỳ trong Task Scheduler tôi chưa làm tuỳ chọn theo [Tháng]. Thực ra tôi nghĩa cũng không đến nỗi quan trọng vì trong tool có tuỳ chọn lặp lại việc chạy tự động sao bao nhiêu ngày/ tuần thì nó cũng tương đương Tháng. Chưa tuỳ chọn được nhiều "thứ" trong tuần để sao lưu.

Về cơ bản thì tôi nghĩ tool cũng chạy trơn tru, code phát sinh nhiều nên có thể chưa được tối ưu.
Các bạn dùng thử và góp ý code để học hỏi, rút kinh nghiệm nhé.
 

File đính kèm

Lần chỉnh sửa cuối:
Với Task scheduler có lẽ sẽ gây phiền phức cho Window.
1. Quên xóa TS sau khi không dùng nữa
2. File đã chuyển sang nơi khác , file đã đổi tên.
3. Sao lưu với nhiều file thì thêm tiến trình.
4. Sao lưu trên Window, nhỡ đâu dính Virus Wannacry , mất toàn bộ.

Có thể Đơn giản hóa Phương pháp backup như sau:
1. Sử dụng cơ chế tự động Backup ngay trên Excel.
2. Tạo tài khoản dữ liệu đám mây và tải về ứng dụng: GoogleDriver hoặc OneDriver, ...

+ Để sao lưu 1 dự án không cần phiên làm việc, chỉ cần đặt Dự án vào folder của ứng dụng trên và làm việc, tự động Update and backup.
+ Nếu Dự án lớn thì Dự án cần thêm đoạn Code để tạo ra các phiên làm việc và tự động Copy dự án vào dữ liệu đám mây sau khi phiên làm việc kết thúc và dự án được Save, ví dụ chỉ tạo ra 100 phiên làm việc gần nhất, đơn vị lưu là 1 giờ hoặc 30 phút. Nếu phiên sau cùng lỗi có thể tìm lại phiên trước.
Đơn giản mà hiệu quả.

Form trên thiếu các phương án khi cần như giải nén tệp backup, mở tệp ngay tức thì.
Giải nén winrar thường update để tránh lỗi bảo mật, nên phải khuyên người tải file cần thường xuyên update winrar.
Hoặc cài win7z sẽ đơn giản thay thế cách nén rar ở trên.

(Good job!)
 
Upvote 0
Hình như phần mềm nén file 7z "ngon" hơn WinRAR.

Mới thử với 7zip - nén tối đa: tốc độ cũng không nhanh hơn Winrar nhưng CPU chỉ chiếm 50% so với 100% của Rar.
Sẽ đổi qua 7zip vì Free. :)


Với Task scheduler có lẽ sẽ gây phiền phức cho Window.
1. Quên xóa TS sau khi không dùng nữa
2. File đã chuyển sang nơi khác , file đã đổi tên.
3. Sao lưu với nhiều file thì thêm tiến trình.
4. Sao lưu trên Window, nhỡ đâu dính Virus Wannacry , mất toàn bộ.

Cảm ơn bạn đã góp ý.
Đúng là cái hạn chế khi dùng Task Scheduler là như bạn đã đề cập. Tôi chưa nghĩ ra cách khác để tự động sao lưu nếu không muốn ứng dụng phải mở hoặc chạy ngầm.

+ Để sao lưu 1 dự án không cần phiên làm việc, chỉ cần đặt Dự án vào folder của ứng dụng trên và làm việc, tự động Update and backup.
+ Nếu Dự án lớn thì Dự án cần thêm đoạn Code để tạo ra các phiên làm việc và tự động Copy dự án vào dữ liệu đám mây sau khi phiên làm việc kết thúc và dự án được Save, ví dụ chỉ tạo ra 100 phiên làm việc gần nhất, đơn vị lưu là 1 giờ hoặc 30 phút. Nếu phiên sau cùng lỗi có thể tìm lại phiên trước.
Đơn giản mà hiệu quả.

- Cách tôi muốn tạo file backup ở đây chính là backup các phiên làm việc như bạn đề cập. Thực tế ứng dụng này tôi dùng để sao lưu file CSDL Back-End của Access nên cần phải lưu theo mốc thời gian, nếu có phát sinh sai sót dữ liệu phiên này thì đổ lại dữ liệu của phiên trước.
- Nếu dùng cơ chế của Excel thì nó là lưu một bản dự phòng, tự động ghi đè lên bản cũ sau một khoảng thời chỉ định.
- Nếu lưu vào các Folder để đồng bộ lên GDrv, OneDrv ... thì cũng tương tự Excel, nó ghi đè dữ liệu do vậy kiểu gì thì cũng phải viết thêm code để sao lưu định kỳ dữ liệu theo mốc thời gian và nơi lưu dữ liệu dự phòng có thể là Folder độc lập hoặc Folder đồng bộ lên đám mây (sẽ an toàn hơn vì lưu được 2 nơi).
 
Upvote 0
View attachment 218072


Chào các bạn,

Sau khi thiết kế ứng dụng xong thì một phần không thể thiếu là việc sao lưu dự phòng file CSDL (Excel thì phải lưu nguyên file). Tôi thấy có nhiều bạn trên diễn đàn hỏi về việc sao lưu nên sau mấy ngày vật vã, mò mẫm, đã viết xong cái module sao lưu nhỏ này chia sẻ với các bạn.
Cái tool này có các tuỳ chọn như sau:
- Sao lưu file hiện tại (đang mở) hoặc tuỳ chọn file cần sao lưu.
- Sao lưu và nén file với Winrar. Có thiết lập mật khẩu cho file .rar
- Một phần quan trọng trong tool này là tôi tích hợp việc sao lưu định kỳ theo thời gian chỉ định (ngày , tuần, giờ) thông qua Task Scheduler của Windows. Việc can thiệp thiết lập trong Task Scheduler tôi làm thông qua việc chạy các file VBScript chứ chưa làm được trực tiếp bằng code VBA.
- Các file trong folder Setting là các file VBScript để đăng ký sao lưu với Task Scheduler, các bạn không được xoá nhé.

Điểm chưa làm được:
- Có một điểm tôi thấy nó chạy chưa tốt là khi sao lưu + nén file cỡ 60M với mức độ nén cao nhất thì CPU chạy 100% và hơi bị lâu (mất ~20s).
- Thiết lập tuỳ chọn thời gian chạy định kỳ trong Task Scheduler tôi chưa làm tuỳ chọn theo [Tháng]. Thực ra tôi nghĩa cũng không đến nỗi quan trọng vì trong tool có tuỳ chọn lặp lại việc chạy tự động sao bao nhiêu ngày/ tuần thì nó cũng tương đương Tháng. Chưa tuỳ chọn được nhiều "thứ" trong tuần để sao lưu.

Về cơ bản thì tôi nghĩ tool cũng chạy trơn tru, code phát sinh nhiều nên có thể chưa được tối ưu.
Các bạn dùng thử và góp ý code để học hỏi, rút kinh nghiệm nhé.
1/ Thử cho File trong đường dẫn sau : D:\Kiều Mạnh\Kiều Mạnh.xlsb xong chạy code xem sao !!!
2/ HÌnh như cái hàm sau xài trên WinRaR_x64 nó thất bại hay sao ấy
Mã:
Public Function WinRarIt(strSourceFile As String, strFormat As String, Optional strMethod As String, _
                         Optional strPassword As String, Optional ByRef strMSG As String) As Boolean

    On Error GoTo Err_handler

    Dim strFileNameRar As String
    Dim strCMDLine As String

    WinRarIt = False

    If CheckWinRar = False Then Exit Function
    If strSourceFile = "" Then Exit Function
    If Dir(strSourceFile, vbNormal) = "" Then
        strMSG = strMSG & vbCrLf & "Khong tim thay tap tin can nen"
        Exit Function
    End If

    strFileNameRar = Left$(strSourceFile, InStrRev(strSourceFile, ".")) & strFormat     'Dat ten tap tin nén

    strCMDLine = Chr(34) & strWinRarPath & Chr(34) & " m -ep1 -ibck -inul "  '-inul - Dùng câu lenh CMD

    If strMethod <> "" Then strCMDLine = strCMDLine & strMethod

    If strPassword <> "" Then strCMDLine = strCMDLine & " -p" & strPassword

    strCMDLine = strCMDLine & " -ilog" & strErrLogFile & " " & Chr(34) & strFileNameRar _
               & Chr(34) & " " & Chr(34) & strSourceFile & Chr(34)

    'Debug.Print strCMDLine
    'Chay lenh zip
    Call ShellAndWait(strCMDLine, vbHide)
    strSourceFile = strFileNameRar

    'Kiem tra lai xem da tao duoc file .rar chua
    If Dir(strSourceFile, vbNormal) <> "" Then
        WinRarIt = True
        strMSG = strMSG & vbCrLf & "Nen CSDL thanh cong"
    Else
        strMSG = strMSG & vbCrLf & "Nen CSDL That bai"
    End If

Err_Exit:
    Exit Function
Err_handler:
    If Err.Number <> 0 Then MsgBox Err.Description, vbExclamation, "WinRarIt Error: " & Err.Number
    strMSG = strMSG & vbCrLf & "-Nen CSDL That bai "
    Resume Err_Exit
End Function
Chưa có thời gian coi code kỹ nhưng Mạnh thấy nếu Xài Fso thì nên lấy đường dẫn ngắn của File hay Folder là ok đấy
Khi nào rảnh Mạnh mới test chi tiết cho .... món này Mạnh biết tí teo đó !!!
 
Lần chỉnh sửa cuối:
Upvote 0
1/ Thử cho File trong đường dẫn sau : D:\Kiều Mạnh\Kiều Mạnh.xlsb xong chạy code xem sao !!!
2/ HÌnh như cái hàm sau xài trên WinRaR_x64 nó thất bại hay sao ấy

:) Tôi không viết cho trường hợp Folder và tên file tiếng Việt có dấu nhé.
Tôi không có máy 64bit nên không test được. Khi nào bạn rảnh thì test và nếu được fix code lại cho phiên bản 64bit giùm cho các bạn nào cần xài 64bit nhe. Cảm ơn.
 
Upvote 0
View attachment 218072


Chào các bạn,

Sau khi thiết kế ứng dụng xong thì một phần không thể thiếu là việc sao lưu dự phòng file CSDL (Excel thì phải lưu nguyên file). Tôi thấy có nhiều bạn trên diễn đàn hỏi về việc sao lưu nên sau mấy ngày vật vã, mò mẫm, đã viết xong cái module sao lưu nhỏ này chia sẻ với các bạn.
Cái tool này có các tuỳ chọn như sau:
- Sao lưu file hiện tại (đang mở) hoặc tuỳ chọn file cần sao lưu.
- Sao lưu và nén file với Winrar. Có thiết lập mật khẩu cho file .rar
- Một phần quan trọng trong tool này là tôi tích hợp việc sao lưu định kỳ theo thời gian chỉ định (ngày , tuần, giờ) thông qua Task Scheduler của Windows. Việc can thiệp thiết lập trong Task Scheduler tôi làm thông qua việc chạy các file VBScript chứ chưa làm được trực tiếp bằng code VBA.
- Các file trong folder Setting là các file VBScript để đăng ký sao lưu với Task Scheduler, các bạn không được xoá nhé.

Điểm chưa làm được:
- Có một điểm tôi thấy nó chạy chưa tốt là khi sao lưu + nén file cỡ 60M với mức độ nén cao nhất thì CPU chạy 100% và hơi bị lâu (mất ~20s).
- Thiết lập tuỳ chọn thời gian chạy định kỳ trong Task Scheduler tôi chưa làm tuỳ chọn theo [Tháng]. Thực ra tôi nghĩa cũng không đến nỗi quan trọng vì trong tool có tuỳ chọn lặp lại việc chạy tự động sao bao nhiêu ngày/ tuần thì nó cũng tương đương Tháng. Chưa tuỳ chọn được nhiều "thứ" trong tuần để sao lưu.

Về cơ bản thì tôi nghĩ tool cũng chạy trơn tru, code phát sinh nhiều nên có thể chưa được tối ưu.
Các bạn dùng thử và góp ý code để học hỏi, rút kinh nghiệm nhé.
Anh thiết kế giao diện đẹp, chỉn chu, nhưng mà em nhìn mấy cái nút cmbt nó sao sao ý, hình như không cân đối thì phải hihihi
 
Upvote 0
Hình chụp đã có phím Alt :D
Anh có muốn form thành giao diện phẳng không?

View attachment 218151

:p haha...Tại tôi dùng Windows ảo trên Macbook nên không có mấy phím đặc thù của Windows. Dùng phím nóng mặc định của Mac để chụp màn hình (nó chụp toàn hoặc crop chứ không có chụp cửa sổ).
Tôi rất thích giao diện phẳng. Hiện tại mấy ứng dụng nhỏ của tôi dùng giao diện phẳng không đó. Giao diện cũng tuỳ khả năng cảm nhận của mỗi người :) .

218153


À giờ mới phát hiện là UserForm không có tuỳ chọn "Flat" cho một số Control (Command button, DatePicker...)
Bạn phải dùng công cụ khác hỗ trợ à? Công cụ gì vậy bạn?
 
Lần chỉnh sửa cuối:
Upvote 0
À giờ mới phát hiện là UserForm không có tuỳ chọn "Flat" cho một số Control (Command button, DatePicker...)
Bạn phải dùng công cụ khác hỗ trợ à? Công cụ gì vậy bạn?
Dùng mẹo thôi anh. :)

Ví dụ cái command butoon, anh vẽ to lên chút, rồi vẽ cái Frame chồng lên và chỉnh border style single.
 
Upvote 0
Dùng mẹo thôi anh. :)

Ví dụ cái command butoon, anh vẽ to lên chút, rồi vẽ cái Frame chồng lên và chỉnh border style single.

Haha..sáng tạo thật. Tận dụng mọi nguồn lực có sẳn.
Tôi thì cũng hay dùng Label hoặc Image làm nút lệnh nhưng phải viết code thêm cho nó để có các hiệu ứng giống CmdButton. Nói chung muốn muốn đẹp thì phải mất thời gian thôi khi ứng dụng không hỗ trợ.
 
Upvote 0
:p haha...Tại tôi dùng Windows ảo trên Macbook nên không có mấy phím đặc thù của Windows. Dùng phím nóng mặc định của Mac để chụp màn hình (nó chụp toàn hoặc crop chứ không có chụp cửa sổ).
Tôi rất thích giao diện phẳng. Hiện tại mấy ứng dụng nhỏ của tôi dùng giao diện phẳng không đó. Giao diện cũng tuỳ khả năng cảm nhận của mỗi người :) .

View attachment 218153


À giờ mới phát hiện là UserForm không có tuỳ chọn "Flat" cho một số Control (Command button, DatePicker...)
Bạn phải dùng công cụ khác hỗ trợ à? Công cụ gì vậy bạn?
Cái này nhìn giao diện Pro nè hihihihi, có phần mềm hay cho em ngâm cứu đi hahaah.
 
Upvote 0
Cái này nhìn giao diện Pro nè hihihihi, có phần mềm hay cho em ngâm cứu đi hahaah.

Ứng dụng bán hàng thì a chưa xong vì còn vướng mấy chỗ liên quan đến tính giá bình quân gia quyền cho hàng tồn kho. Tính lại giá BQGQ ngay khi có nghiệp vụ nhập xuất phát sinh thì hàm nó chạy nhanh, còn cuối năm chạy nghiêp vụ tính lại giá xuất cho cả năm (chừng 10.000 dòng) thì nó chạy rất lâu nên chưa share nhé.
A có file khác viết cũng lâu lắm rồi nên code cũng nhập môn thôi, dùng để quản lý văn phòng phẩm trong cty cũng có các nghiệp vụ liên quan như nhập xuất tồn, cũng tính giá trị tồn kho theo giá BQGQ nhưng cần tính lại giá xuất nên chạy ổn :) . Nếu cần thì a share qua email.
Quên một điều quan trọng: ứng dụng này là Access chứ không phải Excel nhé. :)


218194
 
Lần chỉnh sửa cuối:
Upvote 0
Ứng dụng bán hàng thì a chưa xong vì còn vướng mấy chỗ liên quan đến tính giá bình quân gia quyền cho hàng tồn kho. Tính lại giá BQGQ ngay khi có nghiệp vụ nhập xuất phát sinh thì hàm nó chạy nhanh, còn cuối năm chạy nghiêp vụ tính lại giá xuất cho cả năm (chừng 10.000 dòng) thì nó chạy rất lâu nên chưa share nhé.
A có file khác viết cũng lâu lắm rồi nên code cũng nhập môn thôi, dùng để quản lý văn phòng phẩm trong cty cũng có các nghiệp vụ liên quan như nhập xuất tồn, cũng tính giá trị tồn kho theo giá BQGQ nhưng cần tính lại giá xuất nên chạy ổn :) . Nếu cần thì a share qua email.
Quên một điều quan trọng: ứng dụng này là Access chứ không phải Excel nhé. :)


View attachment 218194
Cảm ơn anh.
Nhu cầu của em thì khong cần tính tới BQGQ dâu anh, em chỉ cần tìm hiểu buôn bán VPP thôi hihi, vả lại em cũng không cần thiết thiết là phải chạy trên excel hay access, cái em cần là cái data chuẩn để tham khảo với lại ý tưởng xử lý data thôi nhiều cái chưa hình dung nổi do em không phải là dân kế toán hihihi
 
Upvote 0
Nhu cầu của em thì khong cần tính tới BQGQ dâu anh, em chỉ cần tìm hiểu buôn bán VPP thôi hihi, vả lại em cũng không cần thiết thiết là phải chạy trên excel hay access, cái em cần là cái data chuẩn để tham khảo với lại ý tưởng xử lý data thôi nhiều cái chưa hình dung nổi do em không phải là dân kế toán hihihi

Một cách khác để bạn thu thập cái file database mẫu là bạn cài SQL Server sau đó cài các phần mềm dùng thử mà bạn muốn tham khảo CSDL rồi vào SQL Server xem cách họ tổ chức table, query như thế nào.
 
Upvote 0
View attachment 218147


Chào các bạn,

Sau khi thiết kế ứng dụng xong thì một phần không thể thiếu là việc sao lưu dự phòng file CSDL (Excel thì phải lưu nguyên file). Tôi thấy có nhiều bạn trên diễn đàn hỏi về việc sao lưu nên sau mấy ngày vật vã, mò mẫm, đã viết xong cái module sao lưu nhỏ này chia sẻ với các bạn.
Cái tool này có các tuỳ chọn như sau:
- Sao lưu file hiện tại (đang mở) hoặc tuỳ chọn file cần sao lưu.
- Sao lưu và nén file với Winrar. Có thiết lập mật khẩu cho file .rar
- Một phần quan trọng trong tool này là tôi tích hợp việc sao lưu định kỳ theo thời gian chỉ định (ngày , tuần, giờ) thông qua Task Scheduler của Windows. Việc can thiệp thiết lập trong Task Scheduler tôi làm thông qua việc chạy các file VBScript chứ chưa làm được trực tiếp bằng code VBA.
- Các file trong folder Setting là các file VBScript để đăng ký sao lưu với Task Scheduler, các bạn không được xoá nhé.

Điểm chưa làm được:
- Có một điểm tôi thấy nó chạy chưa tốt là khi sao lưu + nén file cỡ 60M với mức độ nén cao nhất thì CPU chạy 100% và hơi bị lâu (mất ~20s).
- Thiết lập tuỳ chọn thời gian chạy định kỳ trong Task Scheduler tôi chưa làm tuỳ chọn theo [Tháng]. Thực ra tôi nghĩa cũng không đến nỗi quan trọng vì trong tool có tuỳ chọn lặp lại việc chạy tự động sao bao nhiêu ngày/ tuần thì nó cũng tương đương Tháng. Chưa tuỳ chọn được nhiều "thứ" trong tuần để sao lưu.

Về cơ bản thì tôi nghĩ tool cũng chạy trơn tru, code phát sinh nhiều nên có thể chưa được tối ưu.
Các bạn dùng thử và góp ý code để học hỏi, rút kinh nghiệm nhé.
Sao mở ra lại báo lỗi này nhỉ ?
Máy em Window10 x64, Office 2016 x64

218342
Bài đã được tự động gộp:

Một cách khác để bạn thu thập cái file database mẫu là bạn cài SQL Server sau đó cài các phần mềm dùng thử mà bạn muốn tham khảo CSDL rồi vào SQL Server xem cách họ tổ chức table, query như thế nào.
Bác dân chuyên nghiệp nên nói được vậy. Như em "ngoài ngành" nhìn Database của SQL như nhìn sao trên trời.
 
Upvote 0
Sao mở ra lại báo lỗi này nhỉ ?
Máy em Window10 x64, Office 2016 x64

View attachment 218342

:) Cái hàm BrowseFile này tôi làm biếng không có viết khai báo các hàm API dùng cho hệ 64bit nên nó báo lỗi thôi.
Bạn thêm khai báo PtrSafe trước tên hàm và kiểu Long đổi thành LongPtr

Mã:
Declare PtrSafe Function GetOpenFile Lib "comdlg32.dll" Alias "GetOpenFileNameA" (OFN As tagOPENFILENAME) As Long

Declare PtrSafe Function GetSaveFile Lib "comdlg32.dll" Alias "GetSaveFileNameA" (OFN As tagOPENFILENAME) As Long

Declare PtrSafe Function CommDlgExtendedError Lib "comdlg32.dll" As Long

Declare PtrSafe Function SHGetPathFromIDList Lib "shell32.dll"  (ByVal pidl As LongPtr, ByVal pszPath As String) As Boolean

Type BROWSEINFO
hOwner As LongPtr
pidlRoot As LongPtr
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As LongPtr
lParam As LongPtr
iImage As Long
End Type
 
Upvote 0
*Bài viết đã được chuyển sang: Link mới
Chính xác là:

JavaScript:
'Kĩ thuật code một ứng dụng hoàn chỉnh đa nền tảng:
'Tiền xử lý'
#If Mac Then
    'MacOS'
    'Office cho Mac ra đời sau nên chỉ có phiên bản VBA7
#Else
    'Window'
    #If VBA7 Then
         'Office 64
        'Thêm vào PtrSafe
        '... PtrSafe '(Alls..As LongPtr hoặc Any) As Long hoặc Any
         'Tùy vào 1 số hàm sẽ áp dụng'
        #If Win64 Then
            '... PtrSafe ' (Alls..As LongPtr) As LongPtr hoặc LongLong hoặc Any
        #Else
             '... PtrSafe ' (Alls..As LongPtr) As Long
        #End if
    #Else
        'Office 32 and Window 32bit

    #End If
#End If

'Khởi tạo biến
#If VBA7 Then
    Public A as LongPtr '/LongLong 'No Any
#Else
    Public A as Long
#End if

'Khởi tạo Thủ tục '
#If VBA7 Then
    Function Test() as LongPtr '/LongLong  ' No Any - Any chỉ dành cho tiền xử lý gồm hàm Win32 và các hàm dựng thông qua DOM
        'Tính tương thích ngược với win32 ở win64 và office64'
        A = Application.HinstancePtr
#Else
    Function Test() as Long
        A = Application.Hinstance
#End if
        Test = A
End Function
'Click Debug Compiler trong VBA Ediot để soát lỗi'

'Để dể nhìn hơn:'
#If VBA7 Then
    Function Test() as LongPtr '/LongLong ' No Any
        'Tính tương thích ngược với win32 ở win64 và office64'
        '*Thêm: Khởi tạo biến tương thích
        #If Win64 Then
            Dim B As LongLong
        #Else
            Dim B As Long
        #End If
        B = Application.HinstancePtr
        A = B
        Test = A
    End Function
#Else
    Function Test() as Long
        A = Application.Hinstance
        Test = A
    End Function
#End If

218407

Xem tài liệu VBA



Để lập trình tương thích trong VBA dể dàng hơn tải:
Windows API Viewer hoặc WinAPIExcelp.exe - để xem các hàm tương thích ngược từ Win64 về Win32
Link 1 , Link 2

*Thêm: Các ứng dụng giúp lập trình VBA cùng với Win32API tương tác với Window:
1. WMIGen.exeWMI Code Creator- Thu thập thông tin xử lý tác vụ window với WMI
2. Microsoft Spy++ hoặc Winspector hoặc WinSpy: Để thu thập các lớp, tên, tiến trình, lệnh thực thi ... trong System
Spy Sử dụng trong Visual Studio:​

*Đặt biệt: Các ứng dụng trên trợ giúp hầu hết tất cả Ngôn ngữ lập trình để tương tác Window

Nếu cảm thấy bài viết bổ ích hãy click trả lời bài viết ! good job !
Tags: winapi, window api, win32 api, ptrsafe win64, system vba, longlong vba, longptr vba, ptrsafe vba
 
Lần chỉnh sửa cuối:
Upvote 0
Tuyệt vời lắm bạn HeSanbi. Cảm ơn đã chia sẽ tài liệu hay.
 
Upvote 0
Web KT

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

Back
Top Bottom