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,965
Được thích
2,554
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:
Muốn xác định bảng nào trong Word thì tôi biết có 2 cách: dùng Bookmark (như bạn đang thiết lập) hoặc Title.
Sau khi tham khảo khá nhiều nguồn và có thời gian thử nhiệm mình đã tìm ra cách để xác định nó là table nào, dòng nào, cột nào dựa vào phương thức find, kiểu như sau :
Mã:
         Set wDoc = WordApp.Documents.Open(FilePatch)

          With WordApp.Selection
               .find.Text = findstring
               .find.Forward = True
               .find.Execute
                Do While .Find.Found = True
                         .Collapse wdCollapseEnd
                         If .Information(wdWithInTable) = True Then
                             NumberTable = wDoc.Range(0, .Tables(1).Range.End).Tables.Count
                             NumberColumn = .Information(wdEndOfRangeColumnNumber)
                             NumberRow = .Information(wdEndOfRangeRowNumber)
                             ......................
                         End If
                        .Find.Execute
                Loop
          End With
Còn 1 cách nữa là dùng vòng lặp duyệt qua tất cả table nhưng khi đối chiếu cell trong word cần như sau mới đối chiếu được
Mã:
With Wdoc.Tables(numberTable)
If Trim(Worksheet.function.Clean(.Cell(iRow, iComumn).Range.Text)) = findString then
End With
.......
 
Lần chỉnh sửa cuối:
Upvote 0
Trước tiên rất cảm ơn bác chủ topic. Cho em hỏi một chút là nếu dữ liệu dạng số tiền, khi xuất ra file đã merge thì luôn có rất nhiều khoảng trắng trước và sau trường dữ liệu đó ạ. Vậy phải xử lý thế nào ạ? Em cảm ơn ạ1.PNG2.PNG
 
Upvote 0
Trước tiên rất cảm ơn bác chủ topic. Cho em hỏi một chút là nếu dữ liệu dạng số tiền, khi xuất ra file đã merge thì luôn có rất nhiều khoảng trắng trước và sau trường dữ liệu đó ạ. Vậy phải xử lý thế nào ạ? Em cảm ơn ạView attachment 299396View attachment 299397
Em nghĩ bác nên định dạng lại số dạng number đi, đừng để comma nữa!
 
Upvote 0
E lại nhờ các bác hỗ trợ giúp vấn đề nữa ạ. Khi merge table thì font chữ trong table khi in ra word đều bị chuyển về font mặc định, mặc dù e đã chỉnh font của table trước để merge rồi ạ.
Nhờ các bác chỉ cách khắc phục ạ
Cảm ơn các bác nhiều!
 
Upvote 0
E lại nhờ các bác hỗ trợ giúp vấn đề nữa ạ. Khi merge table thì font chữ trong table khi in ra word đều bị chuyển về font mặc định, mặc dù e đã chỉnh font của table trước để merge rồi ạ.
Nhờ các bác chỉ cách khắc phục ạ
Cảm ơn các bác nhiều!
à khi thực hiện nó cứ chớp chớp như bị điện giật vậy gọi là tuyệt sao bác.

A có thể cho e xin addins này ko ạ!!! E đang làm BBNT có vướng vào vị trí checklist dạng bảng ko biết xử lý ntn ạ
Em gửi kèm file nhờ a xem giúp e với ạ!!! Thank a
 

File đính kèm

  • BBNT_MAU_1.docx
    45.7 KB · Đọc: 3
  • LIST.xlsb
    87.2 KB · Đọc: 2
Upvote 0
Em gửi kèm file nhờ a xem giúp e với ạ!!! Thank a
Dạng BBNT này bạn gửi lại là 1 trường hợp khác với video nhóm nhiều dòng mình đã đăng phía trên vì có liên kết bảng, nhưng nói chung vẫn làm được. Mình sẽ làm video hướng dẫn riêng trường hợp này cho bạn.
 
Upvote 0
Upvote 0
Ý bạn có phải như vầy không? Trong này có đoạn mình tô đen chỗ dấu ngoặc kép khi xuất ra là do có xuống dòng trong ô. Nếu muốn không bị bạn có thể tạo riêng 1 table 1 cell cho ô này, link tương tự như 2 bảng kia.

Add in có chia sẻ không bác
 
Upvote 0
Web KT
Back
Top Bottom