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
2,134
Được thích
2,768
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:
hoặc có thể do office mình cài bị lỗi chăng? trước đó mình cũng cài thêm mấy add in rồi lại xoá. để mai mình xem lại xem sao vì mọi ng ko thấy ai kêu lỗi cả.
Không phải máy bạn bị lỗi đâu. Giờ rảnh tôi mới ngồi kiểm tra lại thì phát hiện lỗi ở phần code tự động lấy đường dẫn folder cũ -> nạp các file .doc trong đó.
Tôi đã sửa và cập nhật ở link bài #1. File đính kèm bên dưới.

Screenshot at Sep 27 01-16-33.png

(PS: Phải mượn cái laptop Windows của thằng con mới test ra cái lỗi đường dẫn, còn làm trên máy Windows ảo thì các đường dẫn dạng UNC nó vẫn chấp nhận, không báo lỗi)
 

File đính kèm

  • MergeDataExcel2Word.zip
    240.4 KB · Đọc: 36
Lần chỉnh sửa cuối:
Upvote 0
Không phải máy bạn bị lỗi đâu. Giờ rảnh tôi mới ngồi kiểm tra lại thì phát hiện lỗi ở phần code tự động lấy đường dẫn folder cũ -> nạp các file .doc trong đó.
Tôi đã sửa và cập nhật ở link bài #1. File đính kèm bên dưới.

View attachment 295188

(PS: Phải mượn cái laptop Windows của thằng con mới test ra cái lỗi đường dẫn, còn làm trên máy Windows ảo thì các đường dẫn dạng UNC nó vẫn chấp nhận, không báo lỗi)
quá tuyệt vời mình vừa chạy thì thấy ngon lành không bị lỗi nữa rồi bác! Đây là bản thấy tốc độ rất nhanh và nhiều option để lựa chọn!
 
Upvote 0
Không phải máy bạn bị lỗi đâu. Giờ rảnh tôi mới ngồi kiểm tra lại thì phát hiện lỗi ở phần code tự động lấy đường dẫn folder cũ -> nạp các file .doc trong đó.
Tôi đã sửa và cập nhật ở link bài #1. File đính kèm bên dưới.

View attachment 295188

(PS: Phải mượn cái laptop Windows của thằng con mới test ra cái lỗi đường dẫn, còn làm trên máy Windows ảo thì các đường dẫn dạng UNC nó vẫn chấp nhận, không báo lỗi)
Chào Bác @ongke0711 ,
khi chạy phát sinh cái lỗi:

1695778188915.png


Không biết mình có làm lộn cái gì không nữa, chưa có test debug nên ko biết dòng nào...

Cám ơn Bác nhiều.
 
Upvote 0
Upvote 0
Upvote 0
cho mình hỏi, khi mình chạy thì ví dụ cột A là [STT] không có dữ liệu, nhưng khi chạy thì file word vẫn hiện [STT] chứ không mặc định thay thế bằng rỗng, giờ muốn nó thay thế bằng rỗng nếu không có dữ liệu thì làm ntn bác?
 
Upvote 0
cho mình hỏi, khi mình chạy thì ví dụ cột A là [STT] không có dữ liệu, nhưng khi chạy thì file word vẫn hiện [STT] chứ không mặc định thay thế bằng rỗng, giờ muốn nó thay thế bằng rỗng nếu không có dữ liệu thì làm ntn bác?
À còn nhiều mục tôi chưa bẫy lỗi kỹ. Bạn dùng file đính kèm bên dưới đã cập nhật.
Tôi đang tinh chỉnh xem có tăng tốc được chút nào không chứ dùng vòng lặp trong Word chạy chậm thật.
 

File đính kèm

  • MergeDataExcel2Word.xlsb
    75.2 KB · Đọc: 12
Lần chỉnh sửa cuối:
Upvote 0
À còn nhiều mục tôi chưa bẫy lỗi kỹ. Bạn dùng file đính kèm bên dưới đã cập nhật.
Tôi đang tinh chỉnh xem có tăng tốc được chút nào không chứ dùng vòng lặp trong Word chạy chậm thật.
Mã:
Sub TaoDongTieuDe1()
    Dim arrTieuDe As Variant
    Dim rngTieuDe As Range
    Dim sTit As String, s As String, i As Long
    
    sTit = "T" & ChrW(7841) & "o d" & ChrW(242) & "ng ti" & ChrW(234) & "u " & ChrW(273) & ChrW(7873)
    s = vbNewLine & "Qu" & ChrW(233) & "t ch" & ChrW(7885) & "n d" & ChrW(242) & "ng Ti" & ChrW(234) & "u " & ChrW(273) & ChrW(7873) & " " & ChrW(273) & ChrW(7875) & " th" & ChrW(234) & "m d" & ChrW(7845) & "u ngo" & ChrW(7863) & "c vu" & ChrW(244) & "ng [...]." & vbNewLine & vbNewLine
    
    On Error Resume Next
    Set rngTieuDe = Application.InputBox(Prompt:=s, Title:=sTit, Type:=8)
    On Error GoTo 0
    
    If rngTieuDe Is Nothing Then Exit Sub
    
    ReDim arrTieuDe(1 To rngTieuDe.Columns.Count)
        
    For i = 1 To rngTieuDe.Columns.Count
        arrTieuDe(i) = "[" & rngTieuDe.Cells(1, i).Value & "]"
    Next
        
    rngTieuDe.Value = arrTieuDe
End Sub
Mình có sửa cái đoạn tạo dòng tiêu đề, để khi hiện hộp thoại thì nhấn esc không bị lỗi vì không chọn dải ô cần tạo.
Thấy file của bạn rất ổn rồi. Tốc độ thì mình thấy khá ok rồi.
 
Upvote 0
Dạ, e chào các A.C, hiện tại em đang gặp một lỗi như trong ảnh:
- Khi làm file thì nhiều lúc cũng cần lọc những dòng mình cần xuất file, nhưng khi lọc thì file xuất ra không đủ.
1696996740734-png.295589

- Mong A.C có thể sửa lỗi này giúp e, e cảm ơn
 

File đính kèm

  • 1696996740734.png
    1696996740734.png
    161.1 KB · Đọc: 138
Upvote 0
- Khi làm file thì nhiều lúc cũng cần lọc những dòng mình cần xuất file, nhưng khi lọc thì file xuất ra không đủ.
Đây là lỗi do tôi chưa sửa 1 dòng code sai trong việc đếm dòng.
Bạn tải lại file đính kèm và test xem còn sai cái gì nữa không nhé.
 

File đính kèm

  • MergeDataExcel2Word.zip
    200.9 KB · Đọc: 22
Upvote 0
Rất cảm ơn bác ongke0711
Em có chỉnh lại file của bac 1 chút để phù hợp nhu cầu sử dụng. Nhưng bị báo lỗi run time error 91, bác em giúp e với ạ.
 

File đính kèm

  • MailMerge_vba - v2.xlsm
    78.4 KB · Đọc: 4
Upvote 0
Upvote 0
Cảm ơn bác rất nhiều. E đã xử lý được. chia sẻ file lên đây cho bác nào cần.
E đã chỉnh sửa 1 số để phù hợp nhu cầu sử dụng như sau:
- Tự động chọn hàng và cột của dữ liệu
- Chuyển nhập dữ liệu từ hàng thành cột
- Tự động tạo 1 thư mục với tên trong dữ liệu excel và lưu tất cả các file vào 1 thư mục đó
- Chuyển lưu tên lên trước để dễ quản lý file
Lưu ý: E có để số thứ tự nhập vào file word từ 01-50. Bác nào sử dụng nhập mục cần thay thế trong word theo cấu trúc [1]-[50].
 

File đính kèm

  • 4.png
    4.png
    24.6 KB · Đọc: 35
  • 3.png
    3.png
    19.2 KB · Đọc: 35
  • 2.png
    2.png
    118.9 KB · Đọc: 35
  • 1.png
    1.png
    82.5 KB · Đọc: 35
  • Merge Data Excel.xlsb
    80.7 KB · Đọc: 29
  • 5.png
    5.png
    13 KB · Đọc: 35
Upvote 0
E đã chỉnh sửa 1 số để phù hợp nhu cầu sử dụng như sau:
- Tự động chọn hàng và cột của dữ liệu
- Chuyển nhập dữ liệu từ hàng thành cột
- Tự động tạo 1 thư mục với tên trong dữ liệu excel và lưu tất cả các file vào 1 thư mục đó
Nếu không lầm là bạn đang sử dụng cái phiên bản đời đầu của tôi thì phải, đã qua bao cuộc bể dâu chỉnh sửa, cập nhật code rồi đó bạn... :). Nhưng đúng là. các tính năng trên của bạn là file tôi không có.
 
Upvote 0
Bác ongke0711 cho e hỏi chức năng (Trộn bảng biểu Excel vào Word Table, giữ nguyên định dạng thiết kế trong Excel) sử dụng thế nào với ạ
 
Upvote 0
Bác ongke0711 cho e hỏi chức năng (Trộn bảng biểu Excel vào Word Table, giữ nguyên định dạng thiết kế trong Excel) sử dụng thế nào với ạ
Ý đó là bạn định dạng sẵn bảng biểu trong file Excel theo đúng yêu cầu rồi, thì khi trộn sang Word, table trong Word vẫn giữ nguyên cái định dạng đó, khỏi mất công định dạng lại.
Còn code thì trong file có sẵn luôn rồi đó bạn.

Screen Shot 2023-11-06 at 23.12.52.png
 
Upvote 0
Cùng 1 bảng excel, khi e copy thủ công bằng tay thì không bị lỗi gì (Ví dụ như font chữ Time new roman như bảng dưới thì không sao).
Khi e sử dụng hàm thì bị lỗi hiển thị, font chữ chuyển sang Arial)
 

File đính kèm

  • 1.png
    1.png
    53.4 KB · Đọc: 11
Upvote 0
Web KT

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

Back
Top Bottom