Tải hóa đơn điện tử (https://hoadondientu.gdt.gov.vn/) Excel Vba (1 người xem)

Liên hệ QC

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

ongke0711

Thành viên gắn bó
Tham gia
7/9/06
Bài viết
2,324
Được thích
3,131
Giới tính
Nam
Chào các bạn,
Tôi ngồi mò mẫm mấy ngày mới tìm được cách tải hóa đơn điện tử từ trang https://hoadondientu.gdt.gov.vn/. Cách này có thể không chuyên nghiệp nhưng cũng giải quyết được vấn đề tải hóa đơn hàng loạt từ trang trên và ghi xuống Excel theo định dạng dễ tổng hợp dữ liệu sau này.
- Tốc độ không nhanh như các ứng dụng python siêu nhanh.
- Chưa tìm được các link tải file .xml hoặc .html
- Chưa trải nghiệm qua các định dạng hóa đơn điện tử của các nhà cung cấp giải pháp khác nhau nên sẽ không đảm bảo chạy đúng 100%.
- Chưa biết cách tích hợp code vượt Captcha của (Python, C#..) vào VBA nên phải nhập Captcha thủ công.
Nói chung cái tool cũng giải quyết được việc tải hóa đơn hàng loạt :D .
Tôi sẽ upload file demo không khóa (có khóa cũng như không) sau vì code còn lộn xộn lắm. Các bạn xem qua và đóng góp cách xử lý tốt hơn, gọn hơn nhé.


*** 12/10/2024: Cập nhật sửa một đống lỗi.
*** 15/10/2024: Cập nhật sửa lỗi Null và nhập ngày tháng.
*** 16/10/2024: Thêm tính năng lưu User/Pass.
*** 20/10/2024: Sửa lỗi hiển thị ngày tháng, sửa và thêm một số code phụ trợ.
*** 28/10/2024: Sửa lấy hóa đơn từ máy tính tiền.
*** 07/11/2024: Sửa code trích xuất dữ liệu, thêm cột so sánh.
*** 13/11/2024: Dùng code của bạn Hesanbi để tự động nhập Captcha. Thêm code lấy link tra cứu của VNPT và BKAV.
*** 05/02/2025: Thêm code tải file Zip và trích xuất dữ liệu hóa đơn từ file XML. Sửa một số lỗi.
*** 23/02/2025: Sửa lỗi hiển thị sai <Trạng thái hóa đơn>.
 

File đính kèm

Lần chỉnh sửa cuối:
Chào các bạn,
Tôi ngồi mò mẫm mấy ngày mới tìm được cách tải hóa đơn điện tử từ trang https://hoadondientu.gdt.gov.vn/. Cách này có thể không chuyên nghiệp nhưng cũng giải quyết được vấn đề tải hóa đơn hàng loạt từ trang trên và ghi xuống Excel theo định dạng dễ tổng hợp dữ liệu sau này.
- Tốc độ không nhanh như các ứng dụng python siêu nhanh.
- Chưa tìm được các link tải file .xml hoặc .html
- Chưa trải nghiệm qua các định dạng hóa đơn điện tử của các nhà cung cấp giải pháp khác nhau nên sẽ không đảm bảo chạy đúng 100%.
- Chưa biết cách tích hợp code vượt Captcha của (Python, C#..) vào VBA nên phải nhập Captcha thủ công.
Nói chung cái tool cũng giải quyết được việc tải hóa đơn hàng loạt :D .
Tôi sẽ upload file demo không khóa (có khóa cũng như không) sau vì code còn lộn xộn lắm. Các bạn xem qua và đóng góp cách xử lý tốt hơn, gọn hơn nhé.



*** 12/10/2024: Cập nhật sửa một đống lỗi.
*** 15/10/2024: Cập nhật sửa lỗi Null và nhập ngày tháng.
*** 16/10/2024: Thêm tính năng lưu User/Pass.
*** 20/10/2024: Sửa lỗi hiển thị ngày tháng, sửa và thêm một số code phụ trợ.
*** 28/10/2024: Sửa lấy hóa đơn từ máy tính tiền.
*** 07/11/2024: Sửa code trích xuất dữ liệu, thêm cột so sánh.
*** 13/11/2024: Dùng code của bạn Hesanbi để tự động nhập Captcha. Thêm code lấy link tra cứu của VNPT và BKAV.
1735265274107.png

Nhờ bác xem giúp lỗi này nhé! Tks
 
Upvote 0
Các anh cho em hỏi, sao em chạy trên máy em thì bình thường, mà chạy trên máy công ty thì lại bị lỗi như vầy khi bấm vào tải hóa đơn mua vào nhỉ, em cảm ơn các anh ạ

1735266773793.png
 
Upvote 0
Em chào các bác ạ. Các bác đã có ai giải được bài toán kiểm tra tình trạng MST chưa ạ. Em cảm ơn các bác rất là nhiều ạ
 
Upvote 0
1735898822735.pngvì sao eđã mở macro rồi mà vẫn hiện thông báo này. giúp em với
Bài đã được tự động gộp:

Em chào các bác ạ. Các bác đã có ai giải được bài toán kiểm tra tình trạng MST chưa ạ. Em cảm ơn các bác rất là nhiều ạ
Xài phần mềm của Huvisoft nha bác, giá rẻ
 
Upvote 0
cảm ơn ongke0711, file hay quá, phát hành phiên bản tải file XML nữa tốt đẹp quá ad.
 
Upvote 0
OPTIONS trong HTTP là lệnh gửi yêu cầu thiết đặt tùy chọn tại server trước khi gửi yêu cầu tiếp theo, để server hiểu là yêu cầu tiếp theo gửi đến các tùy chọn là khớp với OPTIONS đó để server nhận đúng yêu cầu và sẽ trả về kết quả theo OPTIONS đó.
Nếu anh viết mã HTTP đồng bộ thì quá trình gửi OPTIONS này sẽ thêm độ trễ.
Viết mã HTTP Bất đồng bộ là lập trình VBA nâng cao, để tiến đến viết mã ứng dụng chuyên nghiệp mà người học lập trình nên hướng đến. Hãy xem một ví dụ là Chrome tải hình ảnh của Intagram của một cá nhân, với hàng trăm ảnh cùng lúc. Thì không thể tải đồng bộ, nó sẽ tạo ra độ trễ lớn cho người xem.


Hãy hiểu về svg trước bạn nhé, svg nó có các ký tự định nghĩa cú pháp M L Q Z ... bạn chỉ cần xóa hết các chỉ số định vị vị trí chiều rộng cao đi. Giữ lại các ký tự cú pháp. Bây giờ việc bạn cần làm là nhấn nút tạo mới captcha để chép lại các dãy mã SVG từ 0-9 A-Z xóa như trên để sau này so sánh với SVG mới. Hãy nghĩ xem bạn sẽ thấy mỗi ký tự có chỉ số định vị vị trí theo chiều ngang, so sánh 1 trong các chỉ số này của mỗi ký tự bạn sẽ có được thứ tự vị trí 6 ký tự.
Mỗi tệp svg đều có 2 3 đường kẻ che phía trước, các định nghĩa cú pháp SVG của nó rất đơn giản, nên rất dễ phát hiện chúng để loại trừ ra.

Sử dụng biểu thức chính quy bạn sẽ làm được các điều trên.

Tôi cũng đang viết ứng dụng này, bước captcha tôi đã xử lý xong, giai đoạn tiếp theo là xử lý khối dữ liệu và tải dữ liệu. Viết ứng dụng về HDDT là không đơn giản tí nào.

Bạn có thể xem qua hình ảnh ứng dụng tôi viết. Và cũng sẽ sớm chia sẻ.

View attachment 304547

@quocphuoc88
Dữ liệu API và XML là giống hệt nhau, từ dữ liệu API viết mã tạo tệp XML, thay vì tải zip. Bạn có 10k hóa đơn, nếu bạn tải về máy tính của bạn thì chỉ tốn kém. có 2 cách để giải quyết vấn đề tải zip để tiết kiệm cho việc tải:
1. Tải zip sau khi bạn lọc danh sách ít hóa đơn.
2. Từ Dữ liệu API tạo ra xml/html.
có file ko bạn ơi
 
Upvote 0
Thank bác chủ top. Em cũng làm Kế toán.
Em góp ý thêm với hoá đơn của Meinvoice.vn (MISA) thì link tra cứu kick phát ra ngay hoá đơn là nối lại giữ link tra cứu mặc định và mã hoá đơn ạ.

Thanks

1737426363965.png
 
Upvote 0
Chào các bạn,
Tôi ngồi mò mẫm mấy ngày mới tìm được cách tải hóa đơn điện tử từ trang https://hoadondientu.gdt.gov.vn/. Cách này có thể không chuyên nghiệp nhưng cũng giải quyết được vấn đề tải hóa đơn hàng loạt từ trang trên và ghi xuống Excel theo định dạng dễ tổng hợp dữ liệu sau này.
- Tốc độ không nhanh như các ứng dụng python siêu nhanh.
- Chưa tìm được các link tải file .xml hoặc .html
- Chưa trải nghiệm qua các định dạng hóa đơn điện tử của các nhà cung cấp giải pháp khác nhau nên sẽ không đảm bảo chạy đúng 100%.
- Chưa biết cách tích hợp code vượt Captcha của (Python, C#..) vào VBA nên phải nhập Captcha thủ công.
Nói chung cái tool cũng giải quyết được việc tải hóa đơn hàng loạt :D .
Tôi sẽ upload file demo không khóa (có khóa cũng như không) sau vì code còn lộn xộn lắm. Các bạn xem qua và đóng góp cách xử lý tốt hơn, gọn hơn nhé.



*** 12/10/2024: Cập nhật sửa một đống lỗi.
*** 15/10/2024: Cập nhật sửa lỗi Null và nhập ngày tháng.
*** 16/10/2024: Thêm tính năng lưu User/Pass.
*** 20/10/2024: Sửa lỗi hiển thị ngày tháng, sửa và thêm một số code phụ trợ.
*** 28/10/2024: Sửa lấy hóa đơn từ máy tính tiền.
*** 07/11/2024: Sửa code trích xuất dữ liệu, thêm cột so sánh.
*** 13/11/2024: Dùng code của bạn Hesanbi để tự động nhập Captcha. Thêm code lấy link tra cứu của VNPT và BKAV.
Cái Sheet chi tiết mua ko có chi tiết ra từng hàng và thuế suất theo từng hàng ko bác ơi
 
Upvote 0
Mình tải file về nhưng không hiện được mã captcha, nên k đăng nhập và ko tải được hóa đơn. Có click cái con mắt rồi nhưng nó k hiện captcha á, có ai bị lỗi này ko.
 
Upvote 0
*** 05/02/2025: Cập nhật thêm phần tải file zip và trích xuất dữ liệu từ file XML. Tự động điền captcha.

dResiL8.png



jlJU550.png
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
*** 05/02/2025: Cập nhật thêm phần tải file zip và trích xuất dữ liệu từ file XML. Tự động điền captcha.

dResiL8.png

Macro đang bị bị disabled
chú ý:
1) xem file có bị lock file không, thì unlock
2) khi mở file nhớ Enable contents --> để Enable macro
1738912761032.png
Bác ơi. Máy mình mở lên bị lỗi như này. Bác chỉ mình các fix lỗi với. Cảm ơn bác
 
Upvote 0
bạn làm khó tôi quá…:D:D
hiện tại đang bị lỗi anh à. trạng thái hóa đơn đang bị lỗi.
1. hóa đơn điều chỉnh thì tool nó ra hóa đơn thay thế
2. hóa đơn bị điều chỉnh thì tool nó ra hóa đơn bị thay thế
3. hóa đơn hủy thì tool nó ra hóa đơn bị thay thế.
Em báo lỗi. mong bác ongke0711 cứu rỗi tool trở về thời huy hoàng. cảm ơn anh nhiều ạ
 
Upvote 0
@ongke0711 em thấy trường trạng thái hóa đơn hoạt động có vẻ không đúng so với trang hoadondientu.gdt.gov.vn. Cụ thể ở bản V6 này lỗi như sau:

- Hóa đơn đã bị thay thế => Hóa đơn điều chỉnh
- Hóa đơn đã bị xóa bỏ/hủy bỏ => Hóa đơn đã bị điều chỉnh
- Hóa đơn thay thế => Hóa đơn mới
- Hóa đơn mới => Tất cả.

Em thấy bản V3 cho ra kết quả chính xác nhất so với trang web.

Mong anh xem xét và sửa lại vấn đề này. Cảm ơn anh!
 
Upvote 0
@ongke0711 em thấy trường trạng thái hóa đơn hoạt động có vẻ không đúng so với trang hoadondientu.gdt.gov.vn. Cụ thể ở bản V6 này lỗi như sau:

- Hóa đơn đã bị thay thế => Hóa đơn điều chỉnh
- Hóa đơn đã bị xóa bỏ/hủy bỏ => Hóa đơn đã bị điều chỉnh
- Hóa đơn thay thế => Hóa đơn mới
- Hóa đơn mới => Tất cả.

Em thấy bản V3 cho ra kết quả chính xác nhất so với trang web.

Mong anh xem xét và sửa lại vấn đề này. Cảm ơn anh!
Bác ấy không khóa mã nên anh em vào sửa lại vba 1 chút là được.
 
Upvote 0
Sau khi mình test thấy có một số lỗi như sau (File V6):
  1. Phần link tra cứu hóa đơn, không click hiện trang tra cứu luôn (Cái này hơi bất tiện một xíu...), một số tổ chức giải pháp nhảy lộn xộn khi tra cứu sang trang không đúng trang cung cấp (hình bên dưới) cái này @ongke0711 để ý một xíu nha. (Cái phần ô chỏ chuột đó không phải vectc mà là Viettel)Loi link tra cuu.png
  2. Khi tải tất cả tệp zip về khi đưa lên trên Excel lại bất tiện vì một lần nữa phải nhấp phải chuột từng cái để kéo thả vào thư mục, (hình dưới đây mình chỉ giải nén ra chưa tách được file xml)Screenshot 2025-02-20 103739.png
  3. Sau khi mình nhập từng cái thì phần bên dưới không hiện các file chứng từ xml đã nhập lên Excel như thế nào nên không biết cái nào nhập r cái nào chưa nhập (Hình bên dưới), không hiện kết quả gì hết trơn.Screenshot 2025-02-20 104110.png
Mình có đề xuất thêm như sau:
  1. Mong Tác giả @ongke0711 khắc phục những lỗi mình vừa nêu trên.
  2. Đề xuất thêm: Nếu như tùy chọn xml/html đó mà không tích thì ở dưới các danh sách không cần hiện, nếu mà tích chọn cái đó thì phải có số lượng hóa đơn, đơn giá tổng, thành tiền tổng để có thể đối chiếu lại các hóa đơn còn sót trong kỳ.
  3. Phần chọn ngày tháng có thể show lịch cụ thể chứ có thể một số năm nhuận có 29 ngày sẽ bị thiếu hóa đơn, tất cả các ngày hoặc tùy chọn thêm tháng, quý, năm cũng được.
Mong rằng tác giả @ongke0711 có thể đọc phản hồi này, mình luôn ủng hộ dự án này phát triển nhiều hơn nữa trong tương lai.
Bài đã được tự động gộp:

OPTIONS trong HTTP là lệnh gửi yêu cầu thiết đặt tùy chọn tại server trước khi gửi yêu cầu tiếp theo, để server hiểu là yêu cầu tiếp theo gửi đến các tùy chọn là khớp với OPTIONS đó để server nhận đúng yêu cầu và sẽ trả về kết quả theo OPTIONS đó.
Nếu anh viết mã HTTP đồng bộ thì quá trình gửi OPTIONS này sẽ thêm độ trễ.
Viết mã HTTP Bất đồng bộ là lập trình VBA nâng cao, để tiến đến viết mã ứng dụng chuyên nghiệp mà người học lập trình nên hướng đến. Hãy xem một ví dụ là Chrome tải hình ảnh của Intagram của một cá nhân, với hàng trăm ảnh cùng lúc. Thì không thể tải đồng bộ, nó sẽ tạo ra độ trễ lớn cho người xem.


Hãy hiểu về svg trước bạn nhé, svg nó có các ký tự định nghĩa cú pháp M L Q Z ... bạn chỉ cần xóa hết các chỉ số định vị vị trí chiều rộng cao đi. Giữ lại các ký tự cú pháp. Bây giờ việc bạn cần làm là nhấn nút tạo mới captcha để chép lại các dãy mã SVG từ 0-9 A-Z xóa như trên để sau này so sánh với SVG mới. Hãy nghĩ xem bạn sẽ thấy mỗi ký tự có chỉ số định vị vị trí theo chiều ngang, so sánh 1 trong các chỉ số này của mỗi ký tự bạn sẽ có được thứ tự vị trí 6 ký tự.
Mỗi tệp svg đều có 2 3 đường kẻ che phía trước, các định nghĩa cú pháp SVG của nó rất đơn giản, nên rất dễ phát hiện chúng để loại trừ ra.

Sử dụng biểu thức chính quy bạn sẽ làm được các điều trên.

Tôi cũng đang viết ứng dụng này, bước captcha tôi đã xử lý xong, giai đoạn tiếp theo là xử lý khối dữ liệu và tải dữ liệu. Viết ứng dụng về HDDT là không đơn giản tí nào.

Bạn có thể xem qua hình ảnh ứng dụng tôi viết. Và cũng sẽ sớm chia sẻ.

View attachment 304547

@quocphuoc88
Dữ liệu API và XML là giống hệt nhau, từ dữ liệu API viết mã tạo tệp XML, thay vì tải zip. Bạn có 10k hóa đơn, nếu bạn tải về máy tính của bạn thì chỉ tốn kém. có 2 cách để giải quyết vấn đề tải zip để tiết kiệm cho việc tải:
1. Tải zip sau khi bạn lọc danh sách ít hóa đơn.
2. Từ Dữ liệu API tạo ra xml/html.
Nếu như Bác @HeSanbi đã tạo xong r thì chia sẻ lên cộng đồng để trải nghiệm trước tính năng thế nào để còn biết sửa lỗi chứ bác dựa vào @ongke0711 thấy hơi kì (Cái này chia sẻ thật lòng luôn, không khiển trách ai với ai cả). Còn không thì 2 bác hợp tác lại chia sẻ chung 1 file, đồng tác giả luôn cũng được
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi lập trình tự lực bạn nhé, không dựa vào bất kỳ đoạn mã nào trong ứng dụng ở đây. Và tôi không có thời gian để đọc mã của ứng dụng này.
Tôi chỉ sợ các bạn học theo tôi không kịp, chứ đừng trông tôi học từ các bạn.

Tôi đang trong quá trình viết mã để chặn đánh cắp mã nguồn.


Tôi chỉ có ảnh để chứng minh, bao gồm các Module và Class Module

1740025185877.png1740025291232.png1740025226808.png
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi lập trình tự lực bạn nhé, không dựa vào bất kỳ đoạn mã nào trong ứng dụng ở đây. Và tôi không có thời gian để đọc mã của ứng dụng này.
Tôi chỉ sợ các bạn học theo tôi không kịp, chứ đừng trong tôi học từ các bạn.

Tôi đang trong quá trình viết mã để chặn đánh cắp mã nguồn.
Nếu như bác sợ bị đánh cắp mã thì khoá mã VBA cũng được đặt mật khẩu cho đoạn mã để bảo vệ an toàn cũng được, cái mà người ta nhận được chỉ là danh sách, như tôi làm kế toán đây ko yêu cầu xem code, chỉ xem các kết quả trả về có phù hợp hay không thôi. Mong bác đọc được phản hồi này. Cảm ơn
 
Upvote 0
Mình nghĩ Tool Excel này đang được tác giả chia sẻ miễn phí. Nên có không vừa ý các bạn hay không phù hợp các bạn có thể bỏ qua và mua bản trả phí của các nhà cung cấp khác. Còn nếu vẫn muốn dùng và góp ý thêm thì các bạn nên nói nhờ tác giả coi vậy có hợp lý và có thời gian làm không. Chứ nhiều bạn dùng miễn phí công sức của người khác mà toàn nói kiểu mình là người thuê viết riêng ý!
 
Upvote 0
em thấy trường trạng thái hóa đơn hoạt động có vẻ không đúng so với trang hoadondientu.gdt.gov.vn. Cụ thể ở bản V6 này lỗi như sau:
- Hóa đơn đã bị thay thế => Hóa đơn điều chỉnh
- Hóa đơn đã bị xóa bỏ/hủy bỏ => Hóa đơn đã bị điều chỉnh
- Hóa đơn thay thế => Hóa đơn mới
- Hóa đơn mới => Tất cả.

Lỗi này do tôi tham chiếu sai cái mảng <Trạng thái hóa đơn>, nên bị sai thứ tự tên được hiển thị chứ code lấy dữ liệu thì không sai.
Chỉ cần sửa đoạn này: I2 --> I3

JavaScript:
arrTrangThai = Sheets("LinkTraCuu").Range("I3:I8").Value    'Bo dong "Tat ca"

Screenshot 2025-02-23 at 09.30.46.png
 

File đính kèm

Upvote 0
Lỗi này do tôi tham chiếu sai cái mảng <Trạng thái hóa đơn>, nên bị sai thứ tự tên được hiển thị chứ code lấy dữ liệu thì không sai.
Chỉ cần sửa đoạn này: I2 --> I3

JavaScript:
arrTrangThai = Sheets("LinkTraCuu").Range("I3:I8").Value    'Bo dong "Tat ca"

View attachment 307220
Mình có ý kiến sau:
1. Phần diclink.item(msttcgp) viết đơn giản là tìm kiếm 2 điều kiện theo dk1 msttcgp và dk2 là mst. Để phù hợp cho mọi trường hợp nhiều tổ chức cung cấp giải pháp link tra cứu riêng cho đơn vị sử dụng hoá đơn.
2. Phần MSttcgp chưa hiện khi hoá đơn được lập từ máy tính tiền.
Bạn check lại giúp mọi người nhé.
 
Upvote 0
Lỗi này do tôi tham chiếu sai cái mảng <Trạng thái hóa đơn>, nên bị sai thứ tự tên được hiển thị chứ code lấy dữ liệu thì không sai.
Chỉ cần sửa đoạn này: I2 --> I3

JavaScript:
arrTrangThai = Sheets("LinkTraCuu").Range("I3:I8").Value    'Bo dong "Tat ca"

View attachment 307220
Cảm ơn bạn rất nhiều, dính mấy cái hóa đơn của BKAV mãi không lấy file pdf được, nhờ tool này mà lấy ngon .
 
Upvote 0
Các anh các chị cho em hỏi. Ví dụ mình là bên chi hộ (tức là không phải người mua, cũng không phải người bán).
Em tạm gọi bên bán là A bên mua là B, và em là C. Bên C làm việc với A và bên A sẽ xuất hóa đơn cho C trong đó người mua sẽ là bên B.

Tức là những hóa đơn này sẽ không có trong tài khoản hoadondientu.gov của bên C. Bọn em phải tải hóa đơn về để cung cấp cho bên B thanh toán.

Em bị vướng chỗ phần captcha. Khác với captcha của hoadondientu.gov là SVG. Các trang hóa đơn như https://cangbinhduong-tt78.vnpt-invoice.com.vn/ là hình captcha ạ

Em có biết cách xài API solve captcha ạ. Em xài https://2captcha.com

Các anh chị cho em hỏi có cách nào mình vượt qua captcha như này được không ạ. Em xin phép cảm ơn ạ
 
Lần chỉnh sửa cuối:
Upvote 0
Chào các Bác ạ, em thấy pm hữu ích quá muốn sử dụng mà khi tải về mở file lên bị lỗi như sau
1741751273178.png
nhấp vào ok lại lên file lỗi sau ạ
1741751315680.png
và nhấp vào tải hóa đơn chỉ hiện lên bảng này ạ
1741751399076.png
Vậy cho em xin hỏi là bị sao ạ, em muốn sử dụng thì phải làm sao được ạ, mong được các Bác hướng dẫn ạ
 
Upvote 0
Chào các bạn,
Tôi ngồi mò mẫm mấy ngày mới tìm được cách tải hóa đơn điện tử từ trang https://hoadondientu.gdt.gov.vn/. Cách này có thể không chuyên nghiệp nhưng cũng giải quyết được vấn đề tải hóa đơn hàng loạt từ trang trên và ghi xuống Excel theo định dạng dễ tổng hợp dữ liệu sau này.
- Tốc độ không nhanh như các ứng dụng python siêu nhanh.
- Chưa tìm được các link tải file .xml hoặc .html
- Chưa trải nghiệm qua các định dạng hóa đơn điện tử của các nhà cung cấp giải pháp khác nhau nên sẽ không đảm bảo chạy đúng 100%.
- Chưa biết cách tích hợp code vượt Captcha của (Python, C#..) vào VBA nên phải nhập Captcha thủ công.
Nói chung cái tool cũng giải quyết được việc tải hóa đơn hàng loạt :D .
Tôi sẽ upload file demo không khóa (có khóa cũng như không) sau vì code còn lộn xộn lắm. Các bạn xem qua và đóng góp cách xử lý tốt hơn, gọn hơn nhé.


*** 12/10/2024: Cập nhật sửa một đống lỗi.
*** 15/10/2024: Cập nhật sửa lỗi Null và nhập ngày tháng.
*** 16/10/2024: Thêm tính năng lưu User/Pass.
*** 20/10/2024: Sửa lỗi hiển thị ngày tháng, sửa và thêm một số code phụ trợ.
*** 28/10/2024: Sửa lấy hóa đơn từ máy tính tiền.
*** 07/11/2024: Sửa code trích xuất dữ liệu, thêm cột so sánh.
*** 13/11/2024: Dùng code của bạn Hesanbi để tự động nhập Captcha. Thêm code lấy link tra cứu của VNPT và BKAV.
*** 05/02/2025: Thêm code tải file Zip và trích xuất dữ liệu hóa đơn từ file XML. Sửa một số lỗi.
*** 23/02/2025: Sửa lỗi hiển thị sai <Trạng thái hóa đơn>.
File rất hữu ích ạ. Cảm ơn bạn rất nhiều!
 
Upvote 0
Lỗi này do tôi tham chiếu sai cái mảng <Trạng thái hóa đơn>, nên bị sai thứ tự tên được hiển thị chứ code lấy dữ liệu thì không sai.
Chỉ cần sửa đoạn này: I2 --> I3

JavaScript:
arrTrangThai = Sheets("LinkTraCuu").Range("I3:I8").Value    'Bo dong "Tat ca"

View attachment 307220
Chào anh @ongke0711,
Anh cho em hỏi:
1/ Tại sheet TongHopHD_Mua cột S và T (khung màu đỏ bị sai) lại khác với cột AP và AR (tiền chưa thuế và thuế).
2/ Cột AW Tổng tiền thanh toán bằng số khác với bằng chữ cột AX
3/ Thuế suất sheet TongHopHD_Mua và ChiTietHD_Mua khác nhau.

Số liệu ở sheet ChiTietHD_Mua là số đúng.

Em cảm ơn, mong anh phản hồi.

1742183788493.png

1742183903948.png
 
Upvote 0
Lỗi này do tôi tham chiếu sai cái mảng <Trạng thái hóa đơn>, nên bị sai thứ tự tên được hiển thị chứ code lấy dữ liệu thì không sai.
Chỉ cần sửa đoạn này: I2 --> I3

JavaScript:
arrTrangThai = Sheets("LinkTraCuu").Range("I3:I8").Value    'Bo dong "Tat ca"

View attachment 307220
1742197573875.png
Gặp lỗi này là sao bác nhỉ, em chỉ "Tải hoá đơn" thôi ạ.
 
Upvote 0
1742866338225.png
1742866351708.png

Khi nhắn vào nút Tải hóa đơn thì bị lỗi.Nhờ Ad và mọi người chỉ mình khắc phúc
 
Upvote 0
Cảm ơn bác chủ, mấy nay mấy ngày chạy nước rút rồi, mong anh em kế toán vượt ải thành công
 
Upvote 0
@ongke0711 : bác xem giúp với sheet ChiTietHD_Mua phần cảnh báo Chênh lệch kê khai thuế ở cột AD nếu hóa đơn 1 dòng thì đúng, nếu hóa đơn nhiều dòng đang ghi nhận số tiền thuế ở 1 dòng nên cảnh báo sai1743401249436.png
 
Upvote 0
@ongke0711 : bác xem giúp với sheet ChiTietHD_Mua phần cảnh báo Chênh lệch kê khai thuế ở cột AD nếu hóa đơn 1 dòng thì đúng, nếu hóa đơn nhiều dòng đang ghi nhận số tiền thuế ở 1 dòng nên cảnh báo saiView attachment 307683
cũng đúng mà anh,
Em thấy nhiều chỗ họ để cột tổng tiền của VAT sẽ nằm ở dòng đầu tiên/ hoặc cuối của hóa đơn có nhiều hơn 1 dòng
 
Upvote 0
OPTIONS trong HTTP là lệnh gửi yêu cầu thiết đặt tùy chọn tại server trước khi gửi yêu cầu tiếp theo, để server hiểu là yêu cầu tiếp theo gửi đến các tùy chọn là khớp với OPTIONS đó để server nhận đúng yêu cầu và sẽ trả về kết quả theo OPTIONS đó.
Nếu anh viết mã HTTP đồng bộ thì quá trình gửi OPTIONS này sẽ thêm độ trễ.
Viết mã HTTP Bất đồng bộ là lập trình VBA nâng cao, để tiến đến viết mã ứng dụng chuyên nghiệp mà người học lập trình nên hướng đến. Hãy xem một ví dụ là Chrome tải hình ảnh của Intagram của một cá nhân, với hàng trăm ảnh cùng lúc. Thì không thể tải đồng bộ, nó sẽ tạo ra độ trễ lớn cho người xem.


Hãy hiểu về svg trước bạn nhé, svg nó có các ký tự định nghĩa cú pháp M L Q Z ... bạn chỉ cần xóa hết các chỉ số định vị vị trí chiều rộng cao đi. Giữ lại các ký tự cú pháp. Bây giờ việc bạn cần làm là nhấn nút tạo mới captcha để chép lại các dãy mã SVG từ 0-9 A-Z xóa như trên để sau này so sánh với SVG mới. Hãy nghĩ xem bạn sẽ thấy mỗi ký tự có chỉ số định vị vị trí theo chiều ngang, so sánh 1 trong các chỉ số này của mỗi ký tự bạn sẽ có được thứ tự vị trí 6 ký tự.
Mỗi tệp svg đều có 2 3 đường kẻ che phía trước, các định nghĩa cú pháp SVG của nó rất đơn giản, nên rất dễ phát hiện chúng để loại trừ ra.

Sử dụng biểu thức chính quy bạn sẽ làm được các điều trên.

Tôi cũng đang viết ứng dụng này, bước captcha tôi đã xử lý xong, giai đoạn tiếp theo là xử lý khối dữ liệu và tải dữ liệu. Viết ứng dụng về HDDT là không đơn giản tí nào.

Bạn có thể xem qua hình ảnh ứng dụng tôi viết. Và cũng sẽ sớm chia sẻ.

View attachment 304547

@quocphuoc88
Dữ liệu API và XML là giống hệt nhau, từ dữ liệu API viết mã tạo tệp XML, thay vì tải zip. Bạn có 10k hóa đơn, nếu bạn tải về máy tính của bạn thì chỉ tốn kém. có 2 cách để giải quyết vấn đề tải zip để tiết kiệm cho việc tải:
1. Tải zip sau khi bạn lọc danh sách ít hóa đơn.
2. Từ Dữ liệu API tạo ra xml/html.
Bác viết file này xong chưa bác, em xin file với bác ơi. Em cảm ơn ạ
 
Upvote 0
Tôi lập trình tự lực bạn nhé, không dựa vào bất kỳ đoạn mã nào trong ứng dụng ở đây. Và tôi không có thời gian để đọc mã của ứng dụng này.
Tôi chỉ sợ các bạn học theo tôi không kịp, chứ đừng trông tôi học từ các bạn.

Tôi đang trong quá trình viết mã để chặn đánh cắp mã nguồn.


Tôi chỉ có ảnh để chứng minh, bao gồm các Module và Class Module

View attachment 307171View attachment 307173View attachment 307172
Bác ra bảng hoàn thiện chưa mình kế toán mà trông ngóng để nhanh chóng hơn trong công việc quá
 
Upvote 0
Lỗi này do tôi tham chiếu sai cái mảng <Trạng thái hóa đơn>, nên bị sai thứ tự tên được hiển thị chứ code lấy dữ liệu thì không sai.
Chỉ cần sửa đoạn này: I2 --> I3

JavaScript:
arrTrangThai = Sheets("LinkTraCuu").Range("I3:I8").Value    'Bo dong "Tat ca"

View attachment 307220
cám ơn bác file Excel hữu ít lắm ạ, bác còn phát triển cập nhập file này nữa ko
 
Upvote 0
Chào các bạn,
Tôi ngồi mò mẫm mấy ngày mới tìm được cách tải hóa đơn điện tử từ trang https://hoadondientu.gdt.gov.vn/. Cách này có thể không chuyên nghiệp nhưng cũng giải quyết được vấn đề tải hóa đơn hàng loạt từ trang trên và ghi xuống Excel theo định dạng dễ tổng hợp dữ liệu sau này.
- Tốc độ không nhanh như các ứng dụng python siêu nhanh.
- Chưa tìm được các link tải file .xml hoặc .html
- Chưa trải nghiệm qua các định dạng hóa đơn điện tử của các nhà cung cấp giải pháp khác nhau nên sẽ không đảm bảo chạy đúng 100%.
- Chưa biết cách tích hợp code vượt Captcha của (Python, C#..) vào VBA nên phải nhập Captcha thủ công.
Nói chung cái tool cũng giải quyết được việc tải hóa đơn hàng loạt :D .
Tôi sẽ upload file demo không khóa (có khóa cũng như không) sau vì code còn lộn xộn lắm. Các bạn xem qua và đóng góp cách xử lý tốt hơn, gọn hơn nhé.


*** 12/10/2024: Cập nhật sửa một đống lỗi.
*** 15/10/2024: Cập nhật sửa lỗi Null và nhập ngày tháng.
*** 16/10/2024: Thêm tính năng lưu User/Pass.
*** 20/10/2024: Sửa lỗi hiển thị ngày tháng, sửa và thêm một số code phụ trợ.
*** 28/10/2024: Sửa lấy hóa đơn từ máy tính tiền.
*** 07/11/2024: Sửa code trích xuất dữ liệu, thêm cột so sánh.
*** 13/11/2024: Dùng code của bạn Hesanbi để tự động nhập Captcha. Thêm code lấy link tra cứu của VNPT và BKAV.
*** 05/02/2025: Thêm code tải file Zip và trích xuất dữ liệu hóa đơn từ file XML. Sửa một số lỗi.
*** 23/02/2025: Sửa lỗi hiển thị sai <Trạng thái hóa đơn>.
Bài viết cũng mới nma ấn vô file thì thấy báo lỗi tùm lum nhỉ :)))
 
Upvote 0
Bạn bỏ dòng code đó đi cũng được. (thêm dấu nháy đơn trước dòng code đó).
Hi bác, mình thử cả 3 phiên bản v5, v6, v6.1 thì khi click chuột vào khung chỗ khoanh tròn chọn để nhập "Đến ngày" thì báo lỗi này. Không rõ là vì sao nữa. Mình dùng Office365. Cảm ơn bác!

1746518738617.png
 
Upvote 0
Upvote 0
Upvote 0
Trong V6.1 Mình đã thêm được Link tương ứng cho từng MST đơn vị phát hành khác nhau, tuy nhiên phần Mã tra cứu lại không hiển thị được như các phiên bản cũ. Mình gửi là đơn vị phát hành là Shopee tuy nhiên lại không có mã tra cứu. Mstccgp là 0101300842 (Thái Sơn). Nhờ các bạn kiểm tra giúp!
 

File đính kèm

  • z6646930573553_7de7f7157b4e5b4b7e7149a3d64c6ddc.jpg
    z6646930573553_7de7f7157b4e5b4b7e7149a3d64c6ddc.jpg
    36.1 KB · Đọc: 44
Upvote 0
Lỗi này do tôi tham chiếu sai cái mảng <Trạng thái hóa đơn>, nên bị sai thứ tự tên được hiển thị chứ code lấy dữ liệu thì không sai.
Chỉ cần sửa đoạn này: I2 --> I3

JavaScript:
arrTrangThai = Sheets("LinkTraCuu").Range("I3:I8").Value    'Bo dong "Tat ca"

View attachment 307220
Không biết sao mình bị lỗi này 1748444163988.png
Bài đã được tự động gộp:

Bị ngày dòng code:
Private Sub UserForm_Initialize()
Me.lblThanhCong.Visible = False
Me.lblThatBai.Visible = False
Me.wbCatcha.Visible = False
Me.cmdHienMK.Visible = True
Me.cmdDauMK.Visible = False
layUserPass
createXmlHttpObj
End Sub
 
Upvote 0
Upvote 0
Không biết lỗi trang web hay sao mà file không tải được Hóa đơn có mã khởi tạo từ máy tình tiền anh @ongke0711.
 
Upvote 0
Upvote 0
Các bác cho e hỏi, e tải file về nhưng khi bấm Tải hóa đơn mua thì báo lỗi này là gì vậy ạ1750261066830.png
 
Upvote 0
Dạ cho em hỏi, em tải XML bị lỗi 429, gửi quá nhiều yêu cầu tới máy chủ của web, mình khắc phục sao vậy ạ
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ cho em hỏi, em tải XML bị lỗi 429, gửi quá nhiều yêu cầu tới máy chủ của web, mình khắc phục sao vậy ạ
Tăng thời gian chờ lên, từ 500 thì chuyển thành 1000 (tương đương 1s) hoặc lên hẳn 5000 (5s) thì sẽ ít gặp lỗi 429. Nhưng nếu bạn tải quá nhiều thì cũng vẫn sẽ bị.
 
Upvote 0
Tăng thời gian chờ lên, từ 500 thì chuyển thành 1000 (tương đương 1s) hoặc lên hẳn 5000 (5s) thì sẽ ít gặp lỗi 429. Nhưng nếu bạn tải quá nhiều thì cũng vẫn sẽ bị.
dạ vâng em cảm ơn ạ, chắc do em tải nhiều quá ạ, em tải bảng V6 dùng lại không bị, nên e dùng V6 luôn ạ
 
Upvote 0
Chào các bạn,
Tôi ngồi mò mẫm mấy ngày mới tìm được cách tải hóa đơn điện tử từ trang https://hoadondientu.gdt.gov.vn/. Cách này có thể không chuyên nghiệp nhưng cũng giải quyết được vấn đề tải hóa đơn hàng loạt từ trang trên và ghi xuống Excel theo định dạng dễ tổng hợp dữ liệu sau này.
- Tốc độ không nhanh như các ứng dụng python siêu nhanh.
- Chưa tìm được các link tải file .xml hoặc .html
- Chưa trải nghiệm qua các định dạng hóa đơn điện tử của các nhà cung cấp giải pháp khác nhau nên sẽ không đảm bảo chạy đúng 100%.
- Chưa biết cách tích hợp code vượt Captcha của (Python, C#..) vào VBA nên phải nhập Captcha thủ công.
Nói chung cái tool cũng giải quyết được việc tải hóa đơn hàng loạt :D .
Tôi sẽ upload file demo không khóa (có khóa cũng như không) sau vì code còn lộn xộn lắm. Các bạn xem qua và đóng góp cách xử lý tốt hơn, gọn hơn nhé.


*** 12/10/2024: Cập nhật sửa một đống lỗi.
*** 15/10/2024: Cập nhật sửa lỗi Null và nhập ngày tháng.
*** 16/10/2024: Thêm tính năng lưu User/Pass.
*** 20/10/2024: Sửa lỗi hiển thị ngày tháng, sửa và thêm một số code phụ trợ.
*** 28/10/2024: Sửa lấy hóa đơn từ máy tính tiền.
*** 07/11/2024: Sửa code trích xuất dữ liệu, thêm cột so sánh.
*** 13/11/2024: Dùng code của bạn Hesanbi để tự động nhập Captcha. Thêm code lấy link tra cứu của VNPT và BKAV.
*** 05/02/2025: Thêm code tải file Zip và trích xuất dữ liệu hóa đơn từ file XML. Sửa một số lỗi.
*** 23/02/2025: Sửa lỗi hiển thị sai <Trạng thái hóa đơn>.
Số lượng hóa đơn rất lớn, dẫn đến tải hóa đơn thường bị lỗi => thêm được lọc theo MST người bán nữa thì chặn được SL hóa đơn cần tải :)
 
Upvote 0
các bác cho hỏi khi tải hóa đơn bị báo lỗi như thế này thì sao khác phục được nhỉ. Tks
 

File đính kèm

  • screenshot_1751511348.png
    screenshot_1751511348.png
    14.9 KB · Đọc: 11
Upvote 0
Cảm ơn tác giả ứng dụng rất nhiều. Trước đây hoàn toàn đáp ứng nhu cầu của tôi. Tuy nhiên từ 01/7 liên tục bị lỗi kết nối các loại, dù đã tăng thời gian giữa 2 lần tải lên các mức khác nhau: 500, 1000, 2000, 5000, 7000, 10000.
Không biết có ai bị thế ko? Nhờ tác giả nghiên cứu giúp!
 
Upvote 0
Cảm ơn tác giả ứng dụng rất nhiều. Trước đây hoàn toàn đáp ứng nhu cầu của tôi. Tuy nhiên từ 01/7 liên tục bị lỗi kết nối các loại, dù đã tăng thời gian giữa 2 lần tải lên các mức khác nhau: 500, 1000, 2000, 5000, 7000, 10000.
Bạn này thật vui tính, trước đây tải về dùng tốt, mừng quá nên chưa kịp cảm ơn tác giả, giờ đây không dùng được nữa mới chợt nhớ ra.
 
Upvote 0
có lấy được hoá đơn khởi tạo từ máy tính tiên không các pro
 
Upvote 0
Bạn tôi làm kế toán cho nhiều cty và nói vẫn tải được bình thường nhé và có lưu ý là ngày 1- 3 có bị trục trặc do hệ thống thuế.
hnay hết trục trặc rồi mà ko lấy được hóa đơn khởi tạo từ máy tính tiền ak bác. Có cách nào khắc phục ko ạ
Bài đã được tự động gộp:

Bạn tôi làm kế toán cho nhiều cty và nói vẫn tải được bình thường nhé và có lưu ý là ngày 1- 3 có bị trục trặc do hệ thống thuế.
H tải lại lại được rồi bác nha :XX
 
Lần chỉnh sửa cuối:
Upvote 0
Quá là đỉnh, lại còn show luôn code. Bác thớt đúng là công đức vô lượng.
 
Upvote 0
Xin Bác admin trợ giúp khắc phục lỗi 429 mặc dù đã tăng thời gian nghỉ và giảm thời gian tải mà vẫn bị không tải được ạ . Trân trọng
 
Upvote 0
Xin Bác admin trợ giúp khắc phục lỗi 429 mặc dù đã tăng thời gian nghỉ và giảm thời gian tải mà vẫn bị không tải được ạ . Trân trọng
Có thể số lượng hóa đơn của bạn nhiều quá. Mỗi lần tải chừng 400 hóa đơn thôi bạn.

Hình bên dưới là tôi tải hóa đơn từ máy tính tiền (do có bạn nói tải không được).

Screenshot 2025-07-16 at 21.55.35.png

Screenshot 2025-07-16 at 21.55.47.png
Bài đã được tự động gộp:

Bạn bỏ luôn những dòng nào có từ khóa: "wbCatcha" nhe.
 
Upvote 0
Có thể số lượng hóa đơn của bạn nhiều quá. Mỗi lần tải chừng 400 hóa đơn thôi bạn.

Hình bên dưới là tôi tải hóa đơn từ máy tính tiền (do có bạn nói tải không được).

View attachment 308927

View attachment 308928
Bài đã được tự động gộp:


Bạn bỏ luôn những dòng nào có từ khóa: "wbCatcha" nhe.
Mình chỉ tải xml 5 ngày với 20 hoá đơn vẫn không được . Bác admin trợ giúp ạ
 
Upvote 0
Mình chỉ tải xml 5 ngày với 20 hoá đơn vẫn không được . Bác admin trợ giúp ạ
Bạn thử cách này.
- Vô code của frmTaiHoaDon --> kiếm cái Sub taiXML_zip() --> đi đến dòng "nextInvoice" --> thêm dòng "Sleep Me.txtSleep"
- Xem hình:

Screenshot at Jul 16 22-26-55.png

Screenshot at Jul 16 22-27-19.png
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Hình bên dưới là tôi tải hóa đơn từ máy tính tiền (do có bạn nói tải không được).
Em thử tải thì đối với đầu vào thì vẫn có á anh, nhưng đầu ra thì lại không tải được, trả về không có hóa đơn nào, chắc ý của bạn ở trên là tải HĐ từ MTT đầu ra chứ không phải đầu vào
 
Upvote 0
Em thử tải thì đối với đầu vào thì vẫn có á anh, nhưng đầu ra thì lại không tải được, trả về không có hóa đơn nào, chắc ý của bạn ở trên là tải HĐ từ MTT đầu ra chứ không phải đầu vào
Kỳ lạ nhỉ. Tôi tải hóa đơn bán vẫn được mà.

Screenshot 2025-07-17 at 11.12.20.png

Screenshot 2025-07-17 at 11.13.37.png
 
Upvote 0
OPTIONS trong HTTP là lệnh gửi yêu cầu thiết đặt tùy chọn tại server trước khi gửi yêu cầu tiếp theo, để server hiểu là yêu cầu tiếp theo gửi đến các tùy chọn là khớp với OPTIONS đó để server nhận đúng yêu cầu và sẽ trả về kết quả theo OPTIONS đó.
Nếu anh viết mã HTTP đồng bộ thì quá trình gửi OPTIONS này sẽ thêm độ trễ.
Viết mã HTTP Bất đồng bộ là lập trình VBA nâng cao, để tiến đến viết mã ứng dụng chuyên nghiệp mà người học lập trình nên hướng đến. Hãy xem một ví dụ là Chrome tải hình ảnh của Intagram của một cá nhân, với hàng trăm ảnh cùng lúc. Thì không thể tải đồng bộ, nó sẽ tạo ra độ trễ lớn cho người xem.


Hãy hiểu về svg trước bạn nhé, svg nó có các ký tự định nghĩa cú pháp M L Q Z ... bạn chỉ cần xóa hết các chỉ số định vị vị trí chiều rộng cao đi. Giữ lại các ký tự cú pháp. Bây giờ việc bạn cần làm là nhấn nút tạo mới captcha để chép lại các dãy mã SVG từ 0-9 A-Z xóa như trên để sau này so sánh với SVG mới. Hãy nghĩ xem bạn sẽ thấy mỗi ký tự có chỉ số định vị vị trí theo chiều ngang, so sánh 1 trong các chỉ số này của mỗi ký tự bạn sẽ có được thứ tự vị trí 6 ký tự.
Mỗi tệp svg đều có 2 3 đường kẻ che phía trước, các định nghĩa cú pháp SVG của nó rất đơn giản, nên rất dễ phát hiện chúng để loại trừ ra.

Sử dụng biểu thức chính quy bạn sẽ làm được các điều trên.

Tôi cũng đang viết ứng dụng này, bước captcha tôi đã xử lý xong, giai đoạn tiếp theo là xử lý khối dữ liệu và tải dữ liệu. Viết ứng dụng về HDDT là không đơn giản tí nào.

Bạn có thể xem qua hình ảnh ứng dụng tôi viết. Và cũng sẽ sớm chia sẻ.

View attachment 304547

@quocphuoc88
Dữ liệu API và XML là giống hệt nhau, từ dữ liệu API viết mã tạo tệp XML, thay vì tải zip. Bạn có 10k hóa đơn, nếu bạn tải về máy tính của bạn thì chỉ tốn kém. có 2 cách để giải quyết vấn đề tải zip để tiết kiệm cho việc tải:
1. Tải zip sau khi bạn lọc danh sách ít hóa đơn.
2. Từ Dữ liệu API tạo ra xml/html.
Cảm ơn tác giả rất nhiều, rất mong tác giả chia sẻ về ứng dụng này ạ.
 
Upvote 0
Upvote 0

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

Back
Top Bottom