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,966
Được thích
2,557
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:
E có 1 file trộn Như thế này ạ giờ muốn trộn với file demo như A tạo. Vậy trong file excle cần thay đổi hay sửa gì để khi trộn thì: 1. mục "Thời gian hưởng từ ngày....... đến ngày......." theo tổng số tháng hưởng phía trên ạ.
2. Phần phụ lục thông báo, các ngày thông báo được tính và thiết kế như thế nào để nhảy từ ngày hưởng đến các tháng tiếp theo nhưng vẫn trừ thứ 7, chủ nhật và nghỉ lễ ạ.
E đã tìm hiều và cũng áp dụng hàm WORKDAY.INTL nhưng vẫn bị sai.
Bạn nên nhớ rằng bảng dữ liệu để trộn là bảng dữ liệu cuối cùng để chuyển qua file Word. Còn làm như thế nào để có những dữ liệu cuối cùng đó thì bạn phải xử lý trước trong Excel rồi chứ. Các mục 1, 2 bạn hỏi thì bạn phải đưa file Excel lên, tổ chức xây dựng bảng dữ liệu như thế nào, kết quả mong muốn như thế nào rồi thuần túy xử lý bảng tính chứ không liên quan gì đến việc trộn.
Việc tính các ngày làm việc trừ ngày nghỉ, lễ đã có nhiều bài viết trên GPE rồi, bạn chịu khó với nút tìm kiếm góc trên, bên phải nhé.
 
Upvote 1
Hướng dẫn thiết kế file Word để có thể nhận hình ảnh theo cái demo Excel của tôi:
--------------------------------------------
Dùng Table để chứa file ảnh. Tận dụng tính năng Auto Fit - Fixed Column Width để chèn ảnh vừa khít 1 ô trong Table.
- Trong file Word, dùng công cụ Draw table để vẽ 1 ô tại vị trí mình muốn hiển thị ảnh.
- Chọn các mục như hình bên dưới.
- Nhập tên cột cần trộn vào ô table này. Xong

CleanShot 2022-06-20 at 10.09.45@2x.png CleanShot 2022-06-20 at 10.11.44@2x.png. Screen Shot 2022-06-20 at 10.13.13.png
 
Lần chỉnh sửa cuối:
Upvote 0
Có cập nhật về định dạng các kiểu dữ liệu bị thay đổi khi trộn qua Word. Lúc trước bỏ quên vụ này.
Các bạn tải lại file ở bài #1 nhé.
Sau này có thời gian rảnh tôi sẽ chuyển thành Add-in dùng Task panel, Form để tương tác và dễ phân phối, sử dụng cho các file Excel khác.
 
Upvote 0
Có cập nhật về định dạng các kiểu dữ liệu bị thay đổi khi trộn qua Word. Lúc trước bỏ quên vụ này.
Các bạn tải lại file ở bài #1 nhé.
Sau này có thời gian rảnh tôi sẽ chuyển thành Add-in dùng Task panel, Form để tương tác và dễ phân phối, sử dụng cho các file Excel khác.
Chào anh, mạn phép xin anh có thể giúp em đoạn mã tự động "Insert Merge Field" trong word,theo từng trường thông tin ở file "2.xlsx" tương ứng với file word 1 ( em đã làm xong ), được không ạ. Nhiều file mà em làm tay thì hơi mất thời gian ạ. Mong anh dành chút thời gian xem qua. Em xin cảm ơn nhiều.
 

File đính kèm

  • mailmerge.rar
    48.3 KB · Đọc: 29
Upvote 0
Chào anh, mạn phép xin anh có thể giúp em đoạn mã tự động "Insert Merge Field" trong word,theo từng trường thông tin ở file "2.xlsx" tương ứng với file word 1 ( em đã làm xong ), được không ạ. Nhiều file mà em làm tay thì hơi mất thời gian ạ. Mong anh dành chút thời gian xem qua. Em xin cảm ơn nhiều.
Tôi chưa hiểu ý bạn lắm.
Ý bạn là muốn trong file Word, khi thao tác chọn "Insert merge Field" - chọn từng Field cho từng vị trí trong văn bản, thì sẽ có code tự động chèn vào? Hay ý như thế nào?

Screen Shot 2022-06-22 at 21.36.53.png.

--> Tự động chọn field như hình và chèn?

Ý đầu như tôi nói ở trên là không làm được nhé vì làm sao máy tính nó tự động biết chèn Field nào ở vị trí nào trong văn bản. Phải có thao tác thủ công của con người vô.
 
Upvote 0
Tôi chưa hiểu ý bạn lắm.
Ý bạn là muốn trong file Word, khi thao tác chọn "Insert merge Field" - chọn từng Field cho từng vị trí trong văn bản, thì sẽ có code tự động chèn vào? Hay ý như thế nào?

View attachment 277768.

--> Tự động chọn field như hình và chèn?

Ý đầu như tôi nói ở trên là không làm được nhé vì làm sao máy tính nó tự động biết chèn Field nào ở vị trí nào trong văn bản. Phải có thao tác thủ công của con người vô.
Dạ vâng em cảm ơn anh nhiều
 
Upvote 0
Tôi chưa hiểu ý bạn lắm.
Ý bạn là muốn trong file Word, khi thao tác chọn "Insert merge Field" - chọn từng Field cho từng vị trí trong văn bản, thì sẽ có code tự động chèn vào? Hay ý như thế nào?

View attachment 277768.

--> Tự động chọn field như hình và chèn?

Ý đầu như tôi nói ở trên là không làm được nhé vì làm sao máy tính nó tự động biết chèn Field nào ở vị trí nào trong văn bản. Phải có thao tác thủ công của con người vô.
Chào anh ạ, hoặc có thể làm phương án là mình chọn vị trí trên Word rồi mình đánh chữ để gợi ý (vd: đánh chữ S sẽ gợi ý ra những dòng "SoPhieuChuyen") v..v, để mình chọn được không ạ. Tại trên Insert Merge Field phải tìm nên hơi lâu ạ. Làm nhiều file chắc mờ cả mắt luôn :D. Cám ơn anh đã xem ạ
 
Upvote 0
Chào anh ạ, hoặc có thể làm phương án là mình chọn vị trí trên Word rồi mình đánh chữ để gợi ý (vd: đánh chữ S sẽ gợi ý ra những dòng "SoPhieuChuyen") v..v, để mình chọn được không ạ. Tại trên Insert Merge Field phải tìm nên hơi lâu ạ. Làm nhiều file chắc mờ cả mắt luôn :D. Cám ơn anh đã xem ạ
Tôi nghĩ là được nhưng khi đó sẽ là viết code mail merger trong Word chứ không phải trong Excel. Nhưng giờ thì chưa viết được nhe :D .
Không biết bác @giaiphap , bác @huuthang_bd đã có cái Word Add in nào có tính năng tìm kiếm merge Field giống đề xuất như trên giới thiệu cho bạn ấy xài không nhỉ.
 
Upvote 0
Tôi nghĩ là được nhưng khi đó sẽ là viết code mail merger trong Word chứ không phải trong Excel. Nhưng giờ thì chưa viết được nhe :D .
Không biết bác @giaiphap , bác @huuthang_bd đã có cái Word Add in nào có tính năng tìm kiếm merge Field giống đề xuất như trên giới thiệu cho bạn ấy xài không nhỉ.
Dạ em cám ơn anh ạ
 
Upvote 0
Tôi nghĩ là được nhưng khi đó sẽ là viết code mail merger trong Word chứ không phải trong Excel. Nhưng giờ thì chưa viết được nhe :D .
Không biết bác @giaiphap , bác @huuthang_bd đã có cái Word Add in nào có tính năng tìm kiếm merge Field giống đề xuất như trên giới thiệu cho bạn ấy xài không nhỉ.
Dùng file này kết hợp với tiện ích của bạn xem có được không? Cái này chỉ dùng riêng cho cái tiện ích của bác thôi đấy nhé.
 

File đính kèm

  • Insert Merge Field.zip
    20.3 KB · Đọc: 86
Upvote 0
Xin cảm ơn anh nhều
 
Lần chỉnh sửa cuối:
Upvote 0
Chào anh em có file mẫu thiết kế như này nhưng chạy không ra anh à. nhờ anh sửa em code với em xin chân thành cảm ơn anh
1. Nó báo lỗi như thế nào hoặc có triệu chứng như thế nào bạn?
2. Dòng tiêu đề của bảng dữ liệu trong file mẫu của tôi không có dùng dấu ngoặc vuông "[ ]" nhé. Nó là tên cột dùng để tham chiếu, đối chiếu với file Word nên khi có thay đổi nào trong tên Cột sẽ làm ứng dụng chạy không như mong muốn nhé.
 
Lần chỉnh sửa cuối:
Upvote 0
Không điền được dữ liệu anh à
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom