Trích xuất file *.xml sang Excel cho hóa đơn điện tử áp dụng nghị định 123/2020

Liên hệ QC
Xin cả nhà trợ giúp ! Có cách nào tải hàng loạt dữ liệu xml từ trang tct về bằng excel không ạ ?! Trân trọng
 

Trích xuất file *.xml sang Excel cho hóa đơn điện tử áp dụng nghị định 123/2020​


Ngày 07/10/2021 Tổng cục thuế đã ban hành quyết định 1450/QĐ-TCT về thành phần chứa dữ liệu nghiệp vụ hóa đơn điện tử.
Theo đó các nhà cung cấp hóa đơn điện tử sẽ chuẩn hóa cấu trúc file *.xml để truyền dữ liệu hóa đơn đến cơ quan thuế nhờ đó mà em có ý tưởng làm file macro này :)
Mục đích của file là trích xuất dữ liệu của 1 hoặc nhiều file *.xml sang Excel.
Khi nhà cung cấp gửi dữ liệu hóa đơn điện tử cho doanh nghiệp, kế toán lưu file .*xml sau đó sử dụng file này để trích xuất dữ liệu ra Excel cho các mục đích khác nhau :)

Mong rằng file này có ích cho anh, chị em đang làm kế toán đỡ vất vả hơn trong việc chuẩn bị dữ liệu hoàn thuế GTGT theo quy định tại thông tư 80/2021 hoặc lấy dữ liệu để đẩy vào phần mềm kế toán được nhanh chóng...

14.03.2022 - Đã update version 2 thêm thông tin Ký hiệu hóa đơn, Mã CQT, Ngày cấp mã, Tên người mua, MST người mua.
15.07.2022 - Đã update version 5 thêm thông tin ngày ký số và sheet Tonghop xử lý bằng dictionary.
13.04.2022 - Đã update version 6 thêm thông tin "Địa chỉ người mua" và "Địa chỉ người bán"
Ghi chú : File này chỉ dùng cho những hóa đơn điện tử đã áp dụng theo quy định về hóa đơn tại nghị định 123/2020/NĐ-CP

Trân trọng,
HMT.
Cảm ơn sếp. hy vọng ở bản cập nhật tới, sếp cho 2 cột là link tra cứu và mã tra cứu thì tuyệt quá
 
Mình cũng đang quan tâm, thấy 1 số trang bán tools này từ 1-2 triệu để lấy dữ liệu tự động từ trang tct vào excel
Theo như tìm hiểu của mình từ Misa, saveinvoice thì họ dùng tool tải hàng loạt file xml rồi mới xử lý . Còn việc tải được file pdf gốc thì hoàn toàn họ không tự tải mà phải cung cấp thông tin mail hoặc tạo mail nhận hoá đơn trên tool của họ
 
Xin chào!
Tôi muốn thử viết một chương trình tải hóa đơn điện tử.
Bác nào có thể chia sẻ một hóa đơn có thể tìm kiếm tại hoadondientu.gdt.gov.vn không?
Nếu chia sẻ, mọi người có thể nhắn vào hộp thoại riêng của tôi.
(***Đã được chia sẻ)

Tải dữ liệu phần không cần đăng nhập:

1705902222087.png
 
Lần chỉnh sửa cuối:
Xin chào!
Tôi muốn thử viết một chương trình tải hóa đơn điện tử.
Bác nào có thể chia sẻ một hóa đơn có thể tìm kiếm tại hoadondientu.gdt.gov.vn không?
Nếu chia sẻ, mọi người có thể nhắn vào hộp thoại riêng của tôi.
(***Đã được chia sẻ)

Tải dữ liệu phần không cần đăng nhập:

View attachment 298675
em có thể gửi cho bác bằng cách nào
Bài đã được tự động gộp:

Trích xuất file *.xml sang Excel cho hóa đơn điện tử áp dụng nghị định 123/2020​


Ngày 07/10/2021 Tổng cục thuế đã ban hành quyết định 1450/QĐ-TCT về thành phần chứa dữ liệu nghiệp vụ hóa đơn điện tử.
Theo đó các nhà cung cấp hóa đơn điện tử sẽ chuẩn hóa cấu trúc file *.xml để truyền dữ liệu hóa đơn đến cơ quan thuế nhờ đó mà em có ý tưởng làm file macro này :)
Mục đích của file là trích xuất dữ liệu của 1 hoặc nhiều file *.xml sang Excel.
Khi nhà cung cấp gửi dữ liệu hóa đơn điện tử cho doanh nghiệp, kế toán lưu file .*xml sau đó sử dụng file này để trích xuất dữ liệu ra Excel cho các mục đích khác nhau :)

Mong rằng file này có ích cho anh, chị em đang làm kế toán đỡ vất vả hơn trong việc chuẩn bị dữ liệu hoàn thuế GTGT theo quy định tại thông tư 80/2021 hoặc lấy dữ liệu để đẩy vào phần mềm kế toán được nhanh chóng...

14.03.2022 - Đã update version 2 thêm thông tin Ký hiệu hóa đơn, Mã CQT, Ngày cấp mã, Tên người mua, MST người mua.
15.07.2022 - Đã update version 5 thêm thông tin ngày ký số và sheet Tonghop xử lý bằng dictionary.
13.04.2022 - Đã update version 6 thêm thông tin "Địa chỉ người mua" và "Địa chỉ người bán"
Ghi chú : File này chỉ dùng cho những hóa đơn điện tử đã áp dụng theo quy định về hóa đơn tại nghị định 123/2020/NĐ-CP

Trân trọng,
HMT.
Hiện nay em chạy file mà trong tên đơn vị có ký tự đặc biệt như "&" thì không thực hiện được, mong bác fix lỗi này ạ
 
Hiện nay em chạy file mà trong tên đơn vị có ký tự đặc biệt như "&" thì không thực hiện được

Bạn dùng cái này thì siêu tốc cả chục ngàn file rồi còn gì.

1706065049129.png

 
Không phải thế nhé.
99.9999% đều có thông tin tra cứu hóa đơn gốc đó.

Gợi ý đây nhé:
Hiện tại, ở Việt Nam, có 28 đơn vị cung cấp dịch vụ hóa đơn điện tử (tự tìm nhé).
Trong tập tin xml có chỗ để tìm ra đơn vị nào cung cấp dịch vụ kia, từ đó tìm ra điều bí mật thứ nhất.
Điều bí mật thứ 2 là mã tra cứu cũng nằm trong tập tin xml, ở mấy từ khóa "SearchKey, Số bảo mật, ID***, ..."

Muốn giải được bài toán này thì phải có số lượng tập tin xml đủ lớn của 28 đơn vị kia và công sức không nhỏ nhé.
Anh có thể xem giúp em file XML này mã tra cứu ở đâu được không ạ?
 

File đính kèm

  • hoadon-20240328231751.rar
    6 KB · Đọc: 16
Anh có thể xem giúp em file XML này mã tra cứu ở đâu được không ạ?

Mã đây em nhé.

 
Mã đây em nhé.

hay quá ạ, anh chỉ em với được không ạ? nó nằm thẻ nào vậy anh?

Bên em nhiều hóa đơn của bên mắt bão lắm mà cứ phải up file .XML lên mắt bão để lấy mã tra cứu hơi cực. Em xuất được các thông tin khác mà mã tra cứu em bó tay.

Anh chỉ em node để lấy mã tra cứu nằm chỗ nào với , em cảm ơn anh nhiều lắm ạ
 
hay quá ạ, anh chỉ em với được không ạ? nó nằm thẻ nào vậy anh?

Bên em nhiều hóa đơn của bên mắt bão lắm mà cứ phải up file .XML lên mắt bão để lấy mã tra cứu hơi cực. Em xuất được các thông tin khác mà mã tra cứu em bó tay.

Anh chỉ em node để lấy mã tra cứu nằm chỗ nào với , em cảm ơn anh nhiều lắm ạ

Trường hợp này lấy mã từ API em nhé.
 
Mong người viết có thể cập nhật thêm cột Họ Và Tên Người Mua Hàng, em rất cảm ơn ạ công cụ đã hỗ trợ e rất nhiều
 
Bạn dùng cái này thì siêu tốc cả chục ngàn file rồi còn gì.

View attachment 298724


topic này là chủ đề chia sẻ kiến thức học tập kèm mã nguồn VBA. Đồng chí chen ngang để bán hàng là không hay đâu nhé.
 

Trích xuất file *.xml sang Excel cho hóa đơn điện tử áp dụng nghị định 123/2020​


Ngày 07/10/2021 Tổng cục thuế đã ban hành quyết định 1450/QĐ-TCT về thành phần chứa dữ liệu nghiệp vụ hóa đơn điện tử.
Theo đó các nhà cung cấp hóa đơn điện tử sẽ chuẩn hóa cấu trúc file *.xml để truyền dữ liệu hóa đơn đến cơ quan thuế nhờ đó mà em có ý tưởng làm file macro này :)
Mục đích của file là trích xuất dữ liệu của 1 hoặc nhiều file *.xml sang Excel.
Khi nhà cung cấp gửi dữ liệu hóa đơn điện tử cho doanh nghiệp, kế toán lưu file .*xml sau đó sử dụng file này để trích xuất dữ liệu ra Excel cho các mục đích khác nhau :)

Mong rằng file này có ích cho anh, chị em đang làm kế toán đỡ vất vả hơn trong việc chuẩn bị dữ liệu hoàn thuế GTGT theo quy định tại thông tư 80/2021 hoặc lấy dữ liệu để đẩy vào phần mềm kế toán được nhanh chóng...

14.03.2022 - Đã update version 2 thêm thông tin Ký hiệu hóa đơn, Mã CQT, Ngày cấp mã, Tên người mua, MST người mua.
15.07.2022 - Đã update version 5 thêm thông tin ngày ký số và sheet Tonghop xử lý bằng dictionary.
13.04.2022 - Đã update version 6 thêm thông tin "Địa chỉ người mua" và "Địa chỉ người bán"
Ghi chú : File này chỉ dùng cho những hóa đơn điện tử đã áp dụng theo quy định về hóa đơn tại nghị định 123/2020/NĐ-CP

Trân trọng,
HMT.
Cám ơn bạn đã chia sẻ file rất hữu ích
 

Trích xuất file *.xml sang Excel cho hóa đơn điện tử áp dụng nghị định 123/2020​


Ngày 07/10/2021 Tổng cục thuế đã ban hành quyết định 1450/QĐ-TCT về thành phần chứa dữ liệu nghiệp vụ hóa đơn điện tử.
Theo đó các nhà cung cấp hóa đơn điện tử sẽ chuẩn hóa cấu trúc file *.xml để truyền dữ liệu hóa đơn đến cơ quan thuế nhờ đó mà em có ý tưởng làm file macro này :)
Mục đích của file là trích xuất dữ liệu của 1 hoặc nhiều file *.xml sang Excel.
Khi nhà cung cấp gửi dữ liệu hóa đơn điện tử cho doanh nghiệp, kế toán lưu file .*xml sau đó sử dụng file này để trích xuất dữ liệu ra Excel cho các mục đích khác nhau :)

Mong rằng file này có ích cho anh, chị em đang làm kế toán đỡ vất vả hơn trong việc chuẩn bị dữ liệu hoàn thuế GTGT theo quy định tại thông tư 80/2021 hoặc lấy dữ liệu để đẩy vào phần mềm kế toán được nhanh chóng...

14.03.2022 - Đã update version 2 thêm thông tin Ký hiệu hóa đơn, Mã CQT, Ngày cấp mã, Tên người mua, MST người mua.
15.07.2022 - Đã update version 5 thêm thông tin ngày ký số và sheet Tonghop xử lý bằng dictionary.
13.04.2022 - Đã update version 6 thêm thông tin "Địa chỉ người mua" và "Địa chỉ người bán"
Ghi chú : File này chỉ dùng cho những hóa đơn điện tử đã áp dụng theo quy định về hóa đơn tại nghị định 123/2020/NĐ-CP

Trân trọng,
HMT.
Mong Ad hỗ trợ hướng dẫn, em muốn lấy thêm số nội bộ vào File thì phải làm sao ạ
 

File đính kèm

  • 1_001_C24TDT_282_2178.pdf
    85.7 KB · Đọc: 8
Cảm ơn bạn đã chia sẻ file. mình mở lên thì gặp vấn đề như này, rất mong bạn trợ giúp. cảm ơn bạn nha!View attachment 303371
Nếu bạn đã enable macro nhưng khi mở file thấy xuất hiện biểu tượng Security Risk bạn làm như sau :
1724548766008.png

Đóng file đó lại, ra ngoài thư mục vừa chứa file tải về ---> nhấp phải chuột vào File\Chọn Properties, trong thẻ General bạn tích chọn unlock ---> Nhấp ok rồi mở lại file nhé.
1724548830295.png
 
Cách nhập dữ liệu trong tệp XML như thế này tôi thấy chưa hợp lý lắm.

1. Giả sử tệp xml còn nằm trong tệp zip. Không lẽ là người dùng phải tự tay bung zip. Sử dụng lớp thư viện Shell.Application có thể xuất tệp xml trong zip như mã dưới đây.
JavaScript:
Private Sub importHDDTFromFiles()
  Dim fso, r, f As file, fd As folder, temp$, k&, sh, s$, xml$, re, stream As Object
  Dim a
  Set stream = CreateObject("ADODB.Stream")
  Set fso = glbFSO: Set sh = glbShellA: Set re = glbRegex
  CreateFolder temp
  temp = IIf(Environ$("tmp") <> "", Environ$("tmp"), Environ$("temp")) & "\VBE\" & projectName & "\export\"
  CreateFolder temp
  Set fd = fso.getfolder("path")
  If fd Is Nothing Then
    MsgBox ""
    Exit Sub
  End If
  For Each f In fd.files
    If f.name Like "*.zip" Then
      sh.Namespace(CVar(f.ParentFolder.Path)).copyhere sh.Namespace(CVar(f.Path)).Items.item(CVar("invoice.xml")), 4 Or 16
      s = f.ParentFolder.Path & "\invoice.xml"
      xml = readFileText(s, stream)
      ' Duyệt trong xml
      fso.MoveFile s, "Đổi tên sang tên có mst mđ khmshđ khhđ.xml" , True
    ElseIf f.name Like "*.xml" Then
        ' Duyệt trong xml
        xml = readFileText(f.Path, stream)
    End If
    k = k + 1
  Next
End Sub
Function glbFSO()
  Set glbFSO = CreateObject("Scripting.FileSystemObject")
End Function
Function glbRegex(Optional bGlobal As Boolean = True, Optional IgnoreCase As Boolean = True, Optional MultiLine As Boolean = True) As Object
  Set glbRegex = CreateObject("VBScript.RegExp")
  With glbRegex: .Global = bGlobal: .IgnoreCase = IgnoreCase: .MultiLine = MultiLine: End With
End Function
Function glbShellA()
  Set glbShellA = CreateObject("Shell.Application")
End Function
Function CreateFolder(ByVal FolderPath As String, Optional ByRef FileSystem As Object) As Boolean
  Dim FolderArray, tmp$, i As Integer, UB As Integer, tFolder$
  tFolder = FolderPath
  If Right(tFolder, 1) = "\" Then tFolder = Left(tFolder, Len(tFolder) - 1)
  If tFolder Like "\\*\*" Then tFolder = Strings.Replace(tFolder, "\", "@", 1, 3)
  FolderArray = Split(tFolder, "\")
  If FileSystem Is Nothing Then Set FileSystem = glbFSO
  On Error GoTo Ends
  FolderArray(0) = Strings.Replace(FolderArray(0), "@", "\", 1, 3)
  UB = UBound(FolderArray)
  With FileSystem
    For i = 0 To UB
      tmp = tmp & FolderArray(i) & "\"
      If Not .FolderExists(tmp) Then DoEvents: .CreateFolder (tmp)
      CreateFolder = (i = UB) And Len(FolderArray(i)) > 0 And FolderArray(i) <> " "
    Next
  End With
Ends:
End Function
Function readFileText(FilePath$, Optional ADOStream As Object) As String
  With ADOStream
    .Open
    .Type = 2 'Stream type
    .Charset = "utf-8" 'or utf-16 etc
     .LoadFromFile = FilePath
    readFileText = .readtext()
    .Close
  End With
End Function


2. Dữ liệu có nhiều trường, mỗi người lại muốn mỗi trường khác nhau, tại sao không cho họ tự nhập từng trường

Ví dụ nhập các trường theo cách nối tiếp với dấu gạch chéo:

A1A2A3A4A5A6A7A8
TTChung/KHMSHDonTTChung/KHHDonTTChung/SHDonTTChung/MHSoTTChung/NLapNDHDon/NBan/TenTTChung/TTKhac/TTin[1]/DLieuTTChung/TTKhac/TTin[2]/DLieu

TTChung/KHMSHDon hiểu là tại trường <TTChung> lấy dữ liệu tại mục con <KHMSHDon>
TTChung/TTKhac/TTin[1]/DLieu hiểu là tại trường <TTChung> đến mục <TTKhac> đến mục <TTin> thứ nhất lấy <DLieu>

Kể cả danh sách dữ liệu HHDVu cũng có thể nhập với trường, với dấu + đại diện cho ký tự Tab:
HHDVu/TChat+HHDVu/STT+HHDVu/THHDVu

Nếu có xuống dòng sử dụng dấu mũ (^):
TTChung/TTKhac/TTin[1]/DLieu^TTChung/TTKhac/TTin[2]/DLieu

XML:
<HHDVu>
    <TChat>1</TChat>
    <STT>2</STT>
    <MHHDVu/>
    <THHDVu>Mút Xốp AF1870 - 2000 * 3000 * 1030 MM ( 13 Cục )</THHDVu>
    <DVTinh>M3</DVTinh>
    <SLuong>80.34</SLuong>
    <DGia>1170000</DGia>
    <TLCKhau>0</TLCKhau>
    <STCKhau>0</STCKhau>
    <ThTien>93997800</ThTien>
    <TSuat>8%</TSuat>
    <TTKhac>
        <TTin>
            <TTruong>VATAmount</TTruong>
            <KDLieu>decimal</KDLieu>
            <DLieu>7519824</DLieu>
        </TTin>
        <TTin>
            <TTruong>Amount</TTruong>
            <KDLieu>decimal</KDLieu>
            <DLieu>101517624</DLieu>
        </TTin>
    </TTKhac>
</HHDVu>


Cho vòng lặp chạy qua các trường do người dùng đặt, sử dụng biểu thức chính quy hoặc XMLDom dựa trên các trường để bốc tách dữ liệu gốc.

3. Xóa các style và id, chuyển các mã hóa Unicode sang cú pháp XML để XMLDom đọc không gặp lỗi


Cách nhập này dù cho thông tư năm 2050 ra mắt cũng không cần sửa mã VBA, mà chỉ cần người dùng sửa trường thông tin.

----------------------------------------------------------
Sắp ra mắt ứng dụng tải và quản lý Hóa đơn điện tử
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom