Chia sẻ file Excel tải hóa đơn hàng loạt (xlsx, xml) kết hợp VBA và SeleniumBasic tương tác với web tra cứu thuế

Liên hệ QC

qtm1987

Thành viên thường trực
Tham gia
15/9/09
Bài viết
317
Được thích
225
Nghề nghiệp
Kế toán tổng hợp
Hôm nay tôi muốn chia sẻ với mọi người cách tôi dùng VBA trong công việc kế toán hàng ngày. Ứng dụng đầu tiên tôi nghĩ rất cần thiết đó là "Tải hóa đơn điện tử hàng loạt các file xlsx, xml từ web thuế".
Nếu là kế toán chắc ai cũng hiểu đến tháng, đến quý phải làm tờ khai thuế GTGT. Không phải công ty nào cũng bỏ phí ra trang bị các app, phần mềm cho kế toán. Vì vậy với tôi Excel trở thành người bạn đồng hành.
Các bài viết về Selenium trên diễn đàn có rất nhiều, bạn nào không biết có thể tìm đọc lại.
Tôi có dùng winrar để gom toàn bộ các file và tạo file cài đặt exe cho thuận tiện nhưng sợ bị nhận diện báo là virus nên không up file exe lên. Thay vào đó tôi sẽ chỉ các bạn tự tạo ra file. Ở đây tôi dùng trình duyệt Chrome nên sẽ đưa các link tải về cài đặt như sau:
1. Tải SeleniumBasic v2.0.9.0 dùng cho VBA tại: https://github.com/florentbr/SeleniumBasic/releases
2. Tải bản Chrome và ChromeDriver phù hợp với máy tính của bạn (win32 hay win64). Máy tính tôi dùng bản win64 nên sẽ tải các file sau:
2.1. Chrome win64: https://storage.googleapis.com/chrome-for-testing-public/129.0.6668.91/win64/chrome-win64.zip
2.2. ChromeDriver win64: https://storage.googleapis.com/chrome-for-testing-public/129.0.6668.91/win64/chromedriver-win64.zip
2.3. Chrome-headless-shell win64: https://storage.googleapis.com/chro...6668.91/win64/chrome-headless-shell-win64.zip
3. Cuối cùng là tải file Excel tôi đính kèm trong bài viết này. File được xây dựng để đáp ứng các công việc kế toán của tôi.

* Việc cài đặt tôi không nói đến vì có nhiều tài liệu hướng dẫn rồi. Ở đây tôi giới thiệu sơ một số chức năng thao tác trên userform trong file tôi xây dựng:
* Nhược điểm:
+ Tốc độ chậm trung bình tải một file xml tốn khoản 4-5 giây. Tôi có test tăng tốc độ lên bằng cách giảm thời gian chờ cho mỗi lệnh request tương tác với web để mỗi file xml tải về khoản còn 2 giây nhưng nhận thấy rất hay có lỗi nếu mạng yếu hoặc web thuế quá tải vào những ngày nộp báo cáo, hoặc có thể khi request lệnh "quá nhanh" sẽ bị khóa ip nên tôi không khuyến khích tăng tốc độ.
+ Khi web thay đổi giao diện thì file sẽ phát sinh lỗi trong quá trình tìm kiếm các phần tử web. Tôi đã cố gắng code tổng quát nhất và cập nhật thường xuyên để ngăn ngừa các trường hợp phát sinh lỗi.
- Ưu điểm:
+ Tải file xml hàng loạt cho từng tháng hoặc tùy chọn tải một lúc gồm nhiều tháng (Trong lúc chờ đợi tải file xong ta có thể tranh thủ thưởng thức một tách cà phê).
+ Toàn bộ file tải về sẽ gom vào một Thư mục riêng cho từng tháng phân loại theo hóa đơn mua vào và bán ra.
+ Tạo file txt "nhật ký tải file" thống kê số lượng file tải về thành công / không thành công.
+ Đọc file xml và ghi dữ liệu vào file excel để tạm tính toán số liệu lên tờ khai thuế GTGT.

File chia sẻ không đặt mật khẩu. Code tôi viết theo kiến thức tôi có nên có thể chưa được tối ưu. Ai quan tâm và có nhu cầu sử dụng, có thể hoàn thiện phát triển thêm. (Thật sự ai không đam mê tốc độ thì thử qua file tốc độ rùa bò này, tốc độ siêu chậm là đây)
 

File đính kèm

  • Project Invoice.xlsm
    606.4 KB · Đọc: 31
  • Userform_tab 01.jpg
    Userform_tab 01.jpg
    46.6 KB · Đọc: 29
  • Userform_tab 02.jpg
    Userform_tab 02.jpg
    85.5 KB · Đọc: 29
  • Userform_tab 03.jpg
    Userform_tab 03.jpg
    89.5 KB · Đọc: 29
  • LogInvoice_In.jpg
    LogInvoice_In.jpg
    123.1 KB · Đọc: 30
  • LogInvoice_Out.jpg
    LogInvoice_Out.jpg
    213.2 KB · Đọc: 31
Lần chỉnh sửa cuối:
File XML nếu dùng phần mềm này đọc được tức là chuẩn rồi đúng không bạn?

Screen Shot 2024-10-10 at 15.57.07.png
 
Upvote 0
Bỏ SeleniumBasic khi duyệt Web đi bạn nhé, tham khảo thư viện CDP VBA được chia sẻ trên Github.
Ưu điểm là nhanh và không cần cài đặt và cập nhật ChromeDriver.
 
Upvote 0
Bỏ SeleniumBasic khi duyệt Web đi bạn nhé, tham khảo thư viện CDP VBA được chia sẻ trên Github.
Ưu điểm là nhanh và không cần cài đặt và cập nhật ChromeDriver.
Cám ơn bạn. Mình sẽ nghiên cứu tìm hiểu thêm thư viện này
 
Upvote 0
Hôm nay tôi muốn chia sẻ với mọi người cách tôi dùng VBA trong công việc kế toán hàng ngày. Ứng dụng đầu tiên tôi nghĩ rất cần thiết đó là "Tải hóa đơn điện tử hàng loạt các file xlsx, xml từ web thuế".
Nếu là kế toán chắc ai cũng hiểu đến tháng, đến quý phải làm tờ khai thuế GTGT. Không phải công ty nào cũng bỏ phí ra trang bị các app, phần mềm cho kế toán. Vì vậy với tôi Excel trở thành người bạn đồng hành.
Các bài viết về Selenium trên diễn đàn có rất nhiều, bạn nào không biết có thể tìm đọc lại.
Tôi có dùng winrar để gom toàn bộ các file và tạo file cài đặt exe cho thuận tiện nhưng sợ bị nhận diện báo là virus nên không up file exe lên. Thay vào đó tôi sẽ chỉ các bạn tự tạo ra file. Ở đây tôi dùng trình duyệt Chrome nên sẽ đưa các link tải về cài đặt như sau:
1. Tải SeleniumBasic v2.0.9.0 dùng cho VBA tại: https://github.com/florentbr/SeleniumBasic/releases
2. Tải bản Chrome và ChromeDriver phù hợp với máy tính của bạn (win32 hay win64). Máy tính tôi dùng bản win64 nên sẽ tải các file sau:
2.1. Chrome win64: https://storage.googleapis.com/chrome-for-testing-public/129.0.6668.91/win64/chrome-win64.zip
2.2. ChromeDriver win64: https://storage.googleapis.com/chrome-for-testing-public/129.0.6668.91/win64/chromedriver-win64.zip
2.3. Chrome-headless-shell win64: https://storage.googleapis.com/chro...6668.91/win64/chrome-headless-shell-win64.zip
3. Cuối cùng là tải file Excel tôi đính kèm trong bài viết này. File được xây dựng để đáp ứng các công việc kế toán của tôi.

* Việc cài đặt tôi không nói đến vì có nhiều tài liệu hướng dẫn rồi. Ở đây tôi giới thiệu sơ một số chức năng thao tác trên userform trong file tôi xây dựng:
* Nhược điểm:
+ Tốc độ chậm trung bình tải một file xml tốn khoản 4-5 giây. Tôi có test tăng tốc độ lên bằng cách giảm thời gian chờ cho mỗi lệnh request tương tác với web để mỗi file xml tải về khoản còn 2 giây nhưng nhận thấy rất hay có lỗi nếu mạng yếu hoặc web thuế quá tải vào những ngày nộp báo cáo, hoặc có thể khi request lệnh "quá nhanh" sẽ bị khóa ip nên tôi không khuyến khích tăng tốc độ.
+ Khi web thay đổi giao diện thì file sẽ phát sinh lỗi trong quá trình tìm kiếm các phần tử web. Tôi đã cố gắng code tổng quát nhất và cập nhật thường xuyên để ngăn ngừa các trường hợp phát sinh lỗi.
- Ưu điểm:
+ Tải file xml hàng loạt cho từng tháng hoặc tùy chọn tải một lúc gồm nhiều tháng (Trong lúc chờ đợi tải file xong ta có thể tranh thủ thưởng thức một tách cà phê).
+ Toàn bộ file tải về sẽ gom vào một Thư mục riêng cho từng tháng phân loại theo hóa đơn mua vào và bán ra.
+ Tạo file txt "nhật ký tải file" thống kê số lượng file tải về thành công / không thành công.
+ Đọc file xml và ghi dữ liệu vào file excel để tạm tính toán số liệu lên tờ khai thuế GTGT.

File chia sẻ không đặt mật khẩu. Code tôi viết theo kiến thức tôi có nên có thể chưa được tối ưu. Ai quan tâm và có nhu cầu sử dụng, có thể hoàn thiện phát triển thêm. (Thật sự ai không đam mê tốc độ thì thử qua file tốc độ rùa bò này, tốc độ siêu chậm là đây)
Mình có thể xuất PDF được không bạn? PDF hiển thị như khi xem thông tin hóa đơn ấy.
 
Upvote 0
Mình có thể xuất PDF được không bạn? PDF hiển thị như khi xem thông tin hóa đơn ấy.
Pdf từ mẫu hóa đơn chuẩn chung của thuế thì có thể, còn pdf của hóa đơn gốc theo mình khó lấy hàng loạt. Theo quy định thì dùng pdf bạn phải dùng bản có cụm từ "hóa đơn điện tử được chuyển đổi ..." thì in ra mới được thuế chấp nhận. Do đó theo mình cần vào tải pdf thủ công thôi hoặc đăng ký mail nhận hóa đơn điện tử để gom vào hết mail đó cuối tháng dùng app lọc các file đính kèm trong mail ra.
 
Upvote 0
Upvote 0
Bỏ SeleniumBasic khi duyệt Web đi bạn nhé, tham khảo thư viện CDP VBA được chia sẻ trên Github.
Ưu điểm là nhanh và không cần cài đặt và cập nhật ChromeDriver.
Thư viện này hả anh ?
Anh có lập sẵn file nào chưa cho em tham khảo với.
 
Upvote 0
Thư viện này hả anh ?
Anh có lập sẵn file nào chưa cho em tham khảo với.
Đây chỉ là 1 bản đơn giản, còn bản đầy đủ hơn cũng nằm trong link này dưới cùng.

Thực ra họ viết mã không tương thích với x32 và x64, tôi đã sửa một bản để tương thích. Vấn đề không nằm ở thư viện, mà vấn đề là giới hạn phát triển của họ. Hai dự án đó có khá nhiều khuyết điểm và không nhất quán trình duyệt Chrome và Edge. Nhưng cũng tạm để sử dụng ở mức cơ bản.

Tôi chỉ xem qua mã họ viết mà chưa tạo một dự án nào. Có thể dự án ZaloExcel mới tôi sẽ tạo với thư viện CDP nếu có thời gian.
 
Upvote 0
Upvote 0
Bản CDP tôi đã chỉnh sửa, và tệp ví dụ trên Github hướng dẫn.
Hiện tại tôi chưa đọc hiểu sâu thư viện nên chưa có hướng dẫn thêm.
 

File đính kèm

  • Examples.xlsm
    43.6 KB · Đọc: 13
  • CDP.xlam
    1.1 MB · Đọc: 12
Upvote 0
Hay quá ạ! Đợt này anh chị em kế toán có nhiều công cụ hữu ích, cảm ơn bác!
 
Upvote 0
Bản CDP tôi đã chỉnh sửa, và tệp ví dụ trên Github hướng dẫn.
Hiện tại tôi chưa đọc hiểu sâu thư viện nên chưa có hướng dẫn thêm.
Để em ráng ứng dụng. Vì có rất nhiều JavaScript cũng như ứng dụng không thể chạy nền trên IE vì quá cũ; Nên cái này sẽ mở ra một trời ứng dụng.
Không phải cài SeleniumBasic là một lợi thế.
Vì nhiều công ty không có cho user cài đặt quá nhiều thứ can thiệp vào hệ thống.
Đặc biệt file gửi đi thì máy đó cũng phải cài mới sử dụng được.

Hôm nay tôi muốn chia sẻ với mọi người cách tôi dùng VBA trong công việc kế toán hàng ngày. Ứng dụng đầu tiên tôi nghĩ rất cần thiết đó là "Tải hóa đơn điện tử hàng loạt các file xlsx, xml từ web thuế".
Rất cảm ơn bạn chủ thớt. File bạn làm tỉ mẫn và quá là kỳ công. Dù công việc của mình không liên quan nhiều đến ứng dụng này, nhưng sẽ là công cụ để mình tham khảo và tìm hiểu.
 
Upvote 0
Web KT

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

Back
Top Bottom