Ứng dụng kế toán theo thông tư 133/2016 (1 người xem)

Liên hệ QC

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

Maika8008

Thành viên gạo cội
Tham gia
12/6/20
Bài viết
4,765
Được thích
5,742
Donate (Momo)
Donate
Giới tính
Nam
Hôm nay tôi chia sẻ 1 giải pháp tương đối ổn về việc viết và phân phối ứng dụng bằng VBA. Chia sẻ ở đây tuy thực sự không phải chia sẻ mà là chia sẻ :) .

Giải pháp của tôi là:
1. Viết dll bằng VB6.
2. Ghi Mã máy và Mã kích hoạt của người dùng lên Registry.
3. Mã hóa Mã máy + giải mã Mã kích hoạt ở bước 2.
4. So khớp 2 kết quả ở bước 3:
- Nếu khớp: User đã có bản quyền -> tiếp tục dùng.
- Không khớp: Ghi số lần dùng code lên đâu đó ở Registry
+ Cảnh báo số lần còn được dùng.
+ Xóa file nếu cố dùng tiếp đến mức quá số lần quy định.

Tất cả các code để phục vụ giải pháp được học hỏi từ nhiều nơi trên cõi mạng nhưng phần lớn từ GPE, trong đó đặc biệt cảm ơn gợi ý việc dùng VB6 viết dll và làm cho Excel 64 bit dùng được dll VB6 của @Kiều Mạnh. Khả năng của tôi chỉ dừng lại ở đây, các giải pháp nâng cao đối với tôi là quá tầm.

Như đã nói ở trên, bộ file tôi chia sẻ ở đây là để test giải pháp chứ tôi không có ý định chia sẻ ứng dụng (tất nhiên là file đã code hoàn chỉnh để dùng được 10 lần chạy code như mục 4 ở trên đã nêu chứ không phải file demo). Các sư huynh GPE vui lòng đừng "phẫu thuật" cái dll của đệ nhé :) và chỉ dẫn thêm cho đệ nếu sẵn lòng.:)

Tất nhiên là khi đăng ký dll trên một số máy sẽ gặp vấn đề, hay gặp nhất là hệ điều hành không đáp ứng, không thông báo cho ta biết để chọn Yes/No. Gặp vấn đề này tôi không biết cách giải quyết, mong mọi người cùng tìm cách xử lý.

Cập nhật 21/05/2023: Thêm file Hướng dẫn. Các bạn chép vào cùng chỗ với file kế toán.
Cập nhật 26/05/2023: Sửa lỗi file 64bit không chạy được tác vụ lấy mã máy và kích hoạt.
 

File đính kèm

Lần chỉnh sửa cuối:
Không hiểu sao máy tôi không chạy được cái Com32on64.exe mặc dùng đã Run As Administrator như hướng dẫn. Vô Task manager không thấy nó luôn.
Máy Windows 11 (64bit) + Office 2021 (64bit).
Bị mấy cái báo lỗi như bên dưới nhưng tôi nghĩ là do không chạy được cái Com server ở trên. Hay là do phải buộc chạy ở ổ đĩa D? Máy tôi không có ổ D rồi :)

Đã đăng ký:

Screen Shot 2023-05-12 at 10.24.54.png

- Khi bấm [Thi hành]:

Screen Shot 2023-05-12 at 10.29.00.png. Screen Shot 2023-05-12 at 10.29.07.png

- Khi bấm [Chấm công theo giờ]:

Screen Shot 2023-05-12 at 10.25.25.png. Screen Shot 2023-05-12 at 10.25.37.png
 
À sau khi sửa lại đường dẫn đăng ký file DLL như bên dưới thì cái Class AccTXTBaoCao không bị lỗi nhưng vẫn còn lỗi cái Class AccTXT.CongCu.

Regsvr32.exe /s C:\Windows\SysWOW64\AccTXT.dll
 
À sau khi sửa lại đường dẫn đăng ký file DLL như bên dưới thì cái Class AccTXTBaoCao không bị lỗi nhưng vẫn còn lỗi cái Class AccTXT.CongCu.

Regsvr32.exe /s C:\Windows\SysWOW64\AccTXT.dll
Mấy chuyện đó tôi còn lơ ngơ lắm. Bạn xử lý giúp còn tôi thì theo dõi kết quả :D
 
Chắc không tương thích với office 64 bit.
 
Khi nào rảnh tôi mổ xẻ nó thử!
 
Bác ơi, đây là ứng dụng kế toán hả? nếu có sản phẩm thì bác cho em xin link xem thử nhé. Và nếu có ứng dụng kế toán theo thông tư 200 nữa thì đúng là thứ em đang cần ạ!
 
Bác ơi, đây là ứng dụng kế toán hả? nếu có sản phẩm thì bác cho em xin link xem thử nhé. Và nếu có ứng dụng kế toán theo thông tư 200 nữa thì đúng là thứ em đang cần ạ!
Sản phẩm được đính kèm ở bài #1 đấy bạn.
 
Đã thử office 32 bit không chạy được ! Dù đã đăng kí dll thành công và add tới reference nên chưa mỗ xẻ được.
Capture.JPG
 
Máy tui không có ổ D bạn chuyển sang ổ E cho tui được không.
Không thể tạo ổ D vì ổ D trên máy thực chứa phần mềm máy ảo đang chạy.
 
Máy tui không có ổ D bạn chuyển sang ổ E cho tui được không.
Không thể tạo ổ D vì ổ D trên máy thực chứa phần mềm máy ảo đang chạy.
Vậy bạn mở file Reg_KeToanTXT.bat bằng Notepad rồi sửa lại đường dẫn trong đó.
 
Đăng kí ro

Mình đăng kí rồi vẫn không chạy
Vụ này bạn tìm cách sửa giúp. Hồi xưa tôi cũng gặp trường hợp y vậy, đăng ký dll của Kiều Mạnh không chạy nhưng làm sao đó không nhớ nữa, sau đó lại chạy được. Bạn thử gỡ ra rồi đăng ký lại xem.
 
Vụ này bạn tìm cách sửa giúp. Hồi xưa tôi cũng gặp trường hợp y vậy, đăng ký dll của Kiều Mạnh không chạy nhưng làm sao đó không nhớ nữa, sau đó lại chạy được. Bạn thử gỡ ra rồi đăng ký lại xem.
Nếu cái Com server có dinh tới thư viện VB6 chắc phải đăng ký cái dll của VB6 luôn quá. Tôi đoán mò thôi.
 
Nó báo thư viện không tìm thấy mà đăng kí thì đã thành công !
 
Tôi nghĩ chắc do việc khai báo gọi các hàm trong dll chưa chuẩn thử làm như ví dụ này xem
Sub AddNumbersUsingDLL()
Dim result As Double
Dim myObject As Object

' Create an instance of the object from the DLL
Set myObject = CreateObject("MyComponent.MyClass")

' Call the AddNumbers function from the DLL
result = myObject.AddNumbers(5, 10)

' Display the result
MsgBox "The result is: " & result

' Clean up
Set myObject = Nothing
End Sub
 
Tôi nghĩ chắc do việc khai báo gọi các hàm trong dll chưa chuẩn thử làm như ví dụ này xem
Sub AddNumbersUsingDLL()
Dim result As Double
Dim myObject As Object

' Create an instance of the object from the DLL
Set myObject = CreateObject("MyComponent.MyClass")

' Call the AddNumbers function from the DLL
result = myObject.AddNumbers(5, 10)

' Display the result
MsgBox "The result is: " & result

' Clean up
Set myObject = Nothing
End Sub
Để tôi xem lại cú pháp. Nhưng dù sao tôi vẫn đăng ký thành công ở 2 máy ngay lần đầu (máy không cài VB6)
 
Sửa xong úp lại mình kiểm tra bảo mật cho !
 
Cập nhật file kế toán 64bit tại bài #1.
 
Vẫn bị lỗi không thể load dll để đọc các hàm !
Capture.JPG
Bài đã được tự động gộp:

Cấu trúc đăng kí dll của bạn không làm việc được mình sửa thế này báo thành công nhưng không load được Regsvr32.exe D:\KeToan\AccTXT.dll
 
Lần chỉnh sửa cuối:
Vẫn bị lỗi không thể load dll để đọc các hàm !
View attachment 290691
Bài đã được tự động gộp:

Cấu trúc đăng kí dll của bạn không làm việc được mình sửa thế này báo thành công nhưng không load được Regsvr32.exe D:\KeToan\AccTXT.dll
Có mấy bạn đăng ký chạy bình thường mà. Nếu có vấn đề thì lẽ ra họ cũng bị lỗi như bạn.
 
cứ vậy viết là tốt rồi thong thả cùng Em chatGPT mà viết nữa sẽ ổn áp thôi

VB6 sẽ sống hết vòng đời Windows 11 còn 12 hay 13 chua biết ... nhưng vòng đời bản Windows 11 có chết thì cùng sau 10 năm nữa

Tôi khuyên như sau

1/ Bỏ file COM32on64.exe vì có file này khi sử dụng trên Excel 64 bít thì bạn cũng phải đăng ký cả file DLL cùng nữa nếu không là không sử dụng được

( Trừ khi bạn biết viết hàm RegFrreCOM = sử dụng COM mà không cần đăng ký )

2/ vào mục hình sau chuyển từ DLL sang Exe builder ActiveX.exe trục tiếp luôn thì khi sử dụng trên 64 bít không cần đăng ký DLL kèm theo

Hình sau là DLL

1685148509355.png

Hình sau là chuyển qua ActiveX.exe bấm Combobox chọn nó xong OK là xong

1685148617505.png

Như vậy sẽ có 2 file tên như nhau chỉ khác nhau là DLL và Exe ... nếu 64 bit keo họ đăng ký Exe còn 32 bít là dll

3/ khi bạn thực hiện chuyển đổi trên thì Exe sẽ báo rất nhiều virus nếu trong đó có nhiều hàm + Class + Module

Không bậm tâm và quá lo lắng vì đó là virus giả và do cấu trúc code bạn viết ra như khai báo thừa không sử dụng và các Object khởi tạo thừa vvv

từ đó xem viết lại chặt chẽ hơn dần dần bạn sẽ hiểu được và code tiến bộ lên

4/ không nên làm biếng khái báo các biến toàn cục quá nhiều trên VB6 khi bạn tái sử dụng nó mà không xác dịnh các hàm khác dùng lại đi đâu về đâu

và đó cũng là 1 nguyên nhân báo Virus giả ... Vì vậy nên khai báo trong hàm cho chắc ăn và nên set = nothing

5/ cái set = nothing 10 năm trước trên này ồn ào nhưng khi họ viết trên 1 ngôn ngữ hiện đại sẽ biết thôi ( Mục này tôi không bàn )

6/ khi làm quen trên VB6 thành công thì chuyển qua Delphi cơ bản nó cũng thế thôi ... chịu mò mẫm sau 6 tháng là tạm ok


tạm vậy đi rảnh chỉ dẫn cho
 
Lần chỉnh sửa cuối:

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

Back
Top Bottom