Auto VBA Extract Dữ liệu từ PDF sang Excel
Thân chào cả Nhà GPEX..!
Hiện tại em có một File PDF bao gồm hơn 100 Page, mỗi Page tương ứng với một đơn đặt hàng và chi tiết theo từng Đơn. Em muốn trích xuất dữ liệu từ PDF sang Excel theo Template để dễ dàng tracking Data hơn ạ vì nếu nhìn từng Page thì em rất khó khăn trong việc Tracking.
Em có đính kèm File Excel Demo và 2 page của file PDF ạ.
Mong cả nhà giúp đỡ, anh chân thành cảm ơn ạ.
Nếu tôi đề xuất 1 phương pháp bán thủ công bạn nghĩ sao?
Bước 1) Thủ công: Mở file PDF, Ctrl A, copy toàn bộ body
Bước 2) Qua excel, chọn ô A1 của 1 sheet trống (VD: sheet Temp) : Paste Special/Unicode Text
Lúc này, cột A bao gồm tất cả data từ PDF copy sang
Bước 3) Tự động hóa: Dùng VBA code lọc dữ liệu đem qua 1 sheet khác theo mẫu
Trong hình đính kèm, cột A, vùng màu xanh là vùng chứa data cần lọc ra.
Nếu bạn OK thì mình tiếp tục nhé.
7084
1. Cách khác: code VBA
– Gọi Word Application, mở file PDF.
– Duyệt qua các Table trong Word để lấy dữ liệu.2. Kiếm cái thư viện Extract PDF free rồi dùng VBA gọi. xử lý.
Chưa làm qua cái nào trong 2 cách trên 😀
Thớt chỉ có ý tưởng thôi chứ đã làm được đâu. Mục đích có cho biết là để "track" cái gì đó (cái gì đó thì không cho biết).
Tracking là công việc khó, cần kinh nghiệm để biết dữ liệu như thế nào (form/format) và bao nhiêu (scope) thì đủ.
Thớt đưa ra ý tưởng, quý vị gò lưng làm chuột thí nghiệm từng bước. Tôi nghĩ là ngoài code VBA "bấm một phát", thớt không chấp nhận cách nào khác đâu.
Cái này chỉ hơn nhau ở cái mồm, chịu khó dẻo cái miệng (cho dù là bên bán hay bên mua) kêu người tạo ra bảng PDF đó gửi bảng Excel là được.
OK.
Sau khi mở file PDF, copy, dán vào cột A (paste special/Unicode Text) sheet "Temp" xong, qua sheet "Data" nhấn nút "Run"
Cách dùng:
Alt-F11 mở cửa sổ VBA, insert/module1, dán code này vô.
Sheet Data, nút "Run", chuột phải, assign macro, tìm đến sub "PDF"
Option Explicit
Sub PDF()
Dim lr&, i&, k&, rng, res(1 To 10000, 1 To 10)
Dim s, inv As String
With Sheets("Temp")
lr = .Cells(Rows.Count, "A").End(xlUp).Row
rng = .Range("A1:A" & lr).Value
End With
Do
i = i + 1
s = Split(rng(i, 1))
If InStr(1, rng(i, 1), "(PO No.)") Then inv = s(UBound(s))
If UBound(s) > 1 Then
If IsNumeric(s(0)) And IsNumeric(s(1)) And Len(s(1)) = 7 And IsNumeric(Left(s(2), 7)) Then
k = k + 1
res(k, 1) = k: res(k, 2) = rng(i, 1): res(k, 10) = inv
Do
i = i + 1: s = Split(rng(i, 1))
If UBound(s) > 2 Then
If IsNumeric(s(0)) And IsDate(s(1)) And IsDate(s(2)) Then Exit Do 'And IsNumeric(s(3)) Then Exit Do
End If
res(k, 2) = res(k, 2) & " " & rng(i, 1)
Loop Until i >= lr – 1
End If
End If
If UBound(s) > 2 Then
If IsNumeric(s(0)) And IsDate(s(1)) And IsDate(s(2)) Then 'And IsNumeric(s(3)) Then
res(k, 3) = s(0): res(k, 4) = s(1): res(k, 5) = s(2): res(k, 6) = s(3)
res(k, 7) = rng(i + 1, 1): res(k, 8) = rng(i + 2, 1): res(k, 9) = rng(i + 3, 1)
i = i + 3
End If
End If
Loop Until i >= lr – 1
With Sheets("Data")
.Range("A4:J10000").ClearContents
.Range("A4").Resize(k, 10).Value = res
End With
End Sub
www.giaiphapexcel.com/diendan/threads/auto-vba-extract-d%E1%BB%AF-li%E1%BB%87u-t%E1%BB%AB-pdf-sang-excel.165520/
Ứng dụng AI và Chat GPT trong Quản trị nhân sự
Học xong khóa này, học viên có thể: Hiểu đúng bản chất AI, các nhóm AI phổ biến và cách AI “hoạt động” ở...
Xem khóa học
Bình luận