Trộn dữ liệu từ Excel sang Word mở rộng (phiên bản ongke0711)

Liên hệ QC

ongke0711

Thành viên gắn bó
Tham gia
7/9/06
Bài viết
1,969
Được thích
2,561
Giới tính
Nam
(Xin phép được tách bài từ bài post của bác Maika8008 (Link) để tránh lẫn lộn khi trao đổi và do cũng tài lanh xen vào, gây loãng bài của bác ấy).


Trộn dữ liệu từ Excel sang Word
-------------------------------------------------------------------------------------------

Lấy cảm hứng từ ý tưởng và file của bác Maika8008, tôi cũng thiết kế một phiên bản khác cho việc Trộn dữ liệu từ Excel sang Word.
Phiên bản này tổng hợp các nhu cầu thực tế của người dùng đã trao đổi trong chủ để này, có thể chưa đầy đủ nhưng cũng đáp ứng cơ bản cho công việc.

* Các chức năng:
- Tùy chọn trộn dữ liệu: Một (hoặc nhiều) đối tượng cho một (hoặc nhiều) văn bản.
- Tự động tạo tiêu đề cột riêng, không ảnh hưởng đến thiết kế bảng.
- Không cần cố định vị trí (dòng, cột ) của dữ liệu cần trộn vì dùng tham chiếu qua Table name.
- Chỉ lấy những dòng dữ liệu sau khi dùng Filter trong bảng dữ liệu.
- Khắc phục lỗi khi trộn đoạn văn bản nhiều hơn 255 ký tự.
- Trộn có kèm luôn file hình ảnh (.jpg, .png, .bmp).
- Trộn các Symbols (font Wingdings, Marlett, Webdings)
- Xuất file dạng .Docx, .PDF


>> Cập nhật ngày 11/10/2023:
- Trộn bảng biểu Excel vào Word Table, giữ nguyên định dạng thiết kế trong Excel.

Thiết kế cũng chưa bẫy lỗi gì nhiều, chắc chắn sẽ phát sinh lỗi khi thao tác, các bạn chạy kiểm tra thử nhé.
Tôi cũng đã thử dùng kết hợp tính năng Mail Merger có sẵn trong Word + VBA cho các tùy chọn nhưng tốc độ thực thi cũng không bằng một góc so với việc dùng thẳng Mail Merge (*) trong Word vì dù gì thì nó cũng đã qua code VBA để gọi tính năng Merge.

(*) Dùng Mail Merge trong Word rất nhanh nhưng nó chỉ đáp ứng tùy chọn cơ bản, đó là lý do có nhiều công cụ viết mở rộng thêm cho tính năng này.

Mã:
wdocSource.MailMerge.OpenDataSource...






3qgQKVn.png






Hướng dẫn sử dụng trong video.


* Đã cập nhật bẫy lỗi và chuyển sang kết nối muộn (Late binding) với Word để tránh lỗi giữa các phiên bản Office.

Link file (full code): https://www.mediafire.com/file/8fc086iogo32cie/MergeDataExcel2Word.zip/file
 
Lần chỉnh sửa cuối:
@ongke0711 Nếu trộn dữ liệu bình thường, em có thể viết mã trộn cho dự án này
với 500 dòng dữ liệu cho mỗi văn bản chỉ trong vòng 15 đến vài mươi giây
có thời gian em sẽ tham gia dự án.
 
Upvote 0
Từ file của bác @ongke0711 em có Save as sang file add-in. Bác nào cần có thể sử dụng ạ!
1704521255843.png

 

File đính kèm

  • EW_TronFile.xlam
    71.4 KB · Đọc: 19
Lần chỉnh sửa cuối:
Upvote 0
Bác @ongke0711 ơi, sẽ găp lỗi 1004 nếu định dạng tại cột Danh sách 'bảng biểu' là Custom mà không phải là General ạ!
1704606613428.png
--------------------------- Microsoft Excel ---------------------------
Error: 1004 Err content: Application-defined or object-defined error
--------------------------- OK ---------------------------
 
Upvote 0
Phần tạo thư mục con cho từng dòng dữ liệu khi em test thì nó mỗi file lại tạo 1 folder, chứ không gom lại ạ!
1704608103098.png
 
Upvote 0
Upvote 0
Tôi có ghi là tạo folder từng dòng mà. Còn muốn tạo kiểu khác nữa thì phải thiết kế thêm các tùy chọn thôi, tôi không làm tất cả mà chỉ làm phần chính thôi bạn.
Vâng là từng dòng đó ạ. Ví dụ dòng STT 1 thì các file tạo ra cho dòng đó cùng gom vào 1 thư mục. Nhưng của em nó lại thành 1, 1_1, 1_2 ấy ạ
Bài đã được tự động gộp:

Phút 26:27 trong Video này ạ:
Liên kết: https://youtu.be/PV0QaBIjOkk?si=u4CXR4vG_dwPOj-J

Vâng là từng dòng đó ạ. Ví dụ dòng STT 1 thì các file tạo ra cho dòng đó cùng gom vào 1 thư mục. Nhưng của em nó lại thành 1, 1_1, 1_2 ấy ạ
 
Upvote 0
Bác @ongke0711 ơi, sẽ găp lỗi 1004 nếu định dạng tại cột Danh sách 'bảng biểu' là Custom mà không phải là General ạ!
View attachment 298160
--------------------------- Microsoft Excel ---------------------------
Error: 1004 Err content: Application-defined or object-defined error
--------------------------- OK ---------------------------
Về cơ bản thì khi thiết kế, người dùng phải thiết lập kiểu dữ liệu chính xác cho từng cột dữ liệu chứ không dễ dãi, muốn để sao cũng được, rồi sau này đi dọn rác cho họ.
Nếu đã lỡ gặp trường hợp "Custom" thì bạn sửa đoạn code này xem như thế nào.
Screenshot at Jan 07 18-12-58.png
 
Upvote 0
Vâng là từng dòng đó ạ. Ví dụ dòng STT 1 thì các file tạo ra cho dòng đó cùng gom vào 1 thư mục. Nhưng của em nó lại thành 1, 1_1, 1_2 ấy ạ
Bài đã được tự động gộp:

Phút 26:27 trong Video này ạ:
Liên kết: https://youtu.be/PV0QaBIjOkk?si=u4CXR4vG_dwPOj-J

Do lúc trước có bạn có nhu cầu là tạo Folder riêng cho từng file một nên tôi mới tạo cái hàm MakeRecursiveFolder().
Nếu nhu cầu chung thực tế chỉ cần tạo 1 folder rồi gộp các file cùng đối tượng vào thì đơn giản hơn.

- Bạn copy cái hàm này vào module modFunctions:

Mã:
Sub makeFolder(Path As String, filePath As String)
    Static sPath As String
    sPath = Path
   
    If dirExists(Path) = False Then
        creaFolder Path
    End If
    sFPath = sPath & "\" & filePath
End Sub

- Trong thủ tục "SearchAndReplaceText": thêm gọi cái hàm vừa tạo như hình. (Làm tương tự cho trường hợp "Word")

Screenshot at Jan 07 18-53-44.png
 
Upvote 0
Do lúc trước có bạn có nhu cầu là tạo Folder riêng cho từng file một nên tôi mới tạo cái hàm MakeRecursiveFolder().
Nếu nhu cầu chung thực tế chỉ cần tạo 1 folder rồi gộp các file cùng đối tượng vào thì đơn giản hơn.

- Bạn copy cái hàm này vào module modFunctions:

Mã:
Sub makeFolder(Path As String, filePath As String)
    Static sPath As String
    sPath = Path
  
    If dirExists(Path) = False Then
        creaFolder Path
    End If
    sFPath = sPath & "\" & filePath
End Sub

- Trong thủ tục "SearchAndReplaceText": thêm gọi cái hàm vừa tạo như hình. (Làm tương tự cho trường hợp "Word")

View attachment 298171
Dạ cảm ơn bác nhiều ạ
 
Upvote 0
1704794061717.png
Mình có chạy nhưng hình như header và footer sẽ không thể merge được đúng không bạn
 
Upvote 0
Upvote 0
Các bạn có ai bị giống mình k nhỉ, mình sử dụng file này dùng trên OneDrive thì bị crash.
Còn dùng trên local thì k bị
Bài đã được tự động gộp:

Các bạn có ai bị giống mình k nhỉ, mình sử dụng file này dùng trên OneDrive thì bị crash.
Còn dùng trên local thì k bị
 
Upvote 0
Các bạn có ai bị giống mình k nhỉ, mình sử dụng file này dùng trên OneDrive thì bị crash.
Còn dùng trên local thì k bị
Bài đã được tự động gộp:

Các bạn có ai bị giống mình k nhỉ, mình sử dụng file này dùng trên OneDrive thì bị crash.
Còn dùng trên local thì k bị
có thể là do đường dẫn dài quá bạn ạ! Của mình dùng cũng toàn copy ra ổ D chạy cho mượt!
 
Upvote 0
Các bạn có ai bị giống mình k nhỉ, mình sử dụng file này dùng trên OneDrive thì bị crash.
Còn dùng trên local thì k bị
có thể là do đường dẫn dài quá bạn ạ! Của mình dùng cũng toàn copy ra ổ D chạy cho mượt!
quả thật là đường dẫn dài thật (nhưng đường dẫn mình đều đặt k dấu và không có space, để mình thử đổi lại đường dẫn ngắn hơn xem sao). cảm ơn ý kiến b
 
Upvote 0
1706197568294.png
Mình thấy có cách nào làm được như Misa thì dễ dùng hơn rất nhiều . Cả 2 phiên bản @ongke0711 và @Maika8008 đều là để table trên excel rồi copy qua word . Còn của misa là có sẵn table trên word rồi đưa tiêu đề cột vào nó tự co dãn theo key chính ở bảng dữ liệu nguồn
 
Upvote 0
View attachment 298766
Mình thấy có cách nào làm được như Misa thì dễ dùng hơn rất nhiều . Cả 2 phiên bản @ongke0711 và @Maika8008 đều là để table trên excel rồi copy qua word . Còn của misa là có sẵn table trên word rồi đưa tiêu đề cột vào nó tự co dãn theo key chính ở bảng dữ liệu nguồn
:D Làm như Misa thì code dễ hơn nhiều đó bạn. Cách tôi và bác Maika8008 nó tùy biến Table các kiểu, không phụ thuộc table thiết kế sẳn trong Word. Bạn ngâm cứu kỹ lại đi nhé.
 
Upvote 0
:D Làm như Misa thì code dễ hơn nhiều đó bạn. Cách tôi và bác Maika8008 nó tùy biến Table các kiểu, không phụ thuộc table thiết kế sẳn trong Word. Bạn ngâm cứu kỹ lại đi nhé.
Chắc do khả năng của mình là khó . Nếu được bạn giải thích giúp mình chỗ này
Ví dụ có sẵn 1 cái bảng trong word để tìm kiếm theo tiêu đề cột không khó gì , nhưng nếu tìm đc thì làm sao biết được nó nằm ở table nào trong word để còn insert dòng? Rồi trong 1 file word có nhiều table cần chèn thì sao được?
Bài đã được tự động gộp:

Trước đây mình từng hỏi cái này , nhớ có 1 bác trên này chỉ cho cách dùng tab nhưng có nhiều bảng dùng tab cũng không ổn lắm
 
Upvote 0
Web KT
Back
Top Bottom