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,224
Được thích
2,940
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:
Ý 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.

Dạ. Cảm ơn a. Nếu bảng checklist của e dòng tiêu đề giữ nguyên chi thay đổi nội dung bên trong bảng để phù hợp với từng đối tượng đc nghiệm thu thì cách làm vẫn giống hay phải tạo từng table cho từng đối tượng ạ.
 
Upvote 0
Dạ. Cảm ơn a. Nếu bảng checklist của e dòng tiêu đề giữ nguyên chi thay đổi nội dung bên trong bảng để phù hợp với từng đối tượng đc nghiệm thu thì cách làm vẫn giống hay phải tạo từng table cho từng đối tượng ạ.
Nếu nội dung khác nhau có nghĩa là văn bản khác nhau thì bảng cũng phải là bảng khác, nếu 10 nội dung bạn phải tạo 10 bảng (mỗi bảng 1 tiêu đề riêng giống nhau). Trong công cụ support mail merge bên excel như bạn đã thấy có nút chèn nhiều bảng là cho mục đích này. Mai rảnh mình sẽ up video hướng dẫn chèn nhiều bảng. Nói chung với chức năng table link này, bên sheet chính mỗi dòng sẽ là 1 văn bản, cột có đường dẫn bảng sẽ dựa vào đường dẫn mà copy vào văn bản. Nhưng có lẽ mình sẽ chuyển qua bên bài addin kia để tránh làm loãng post này.
 
Upvote 0
Dạ. Cảm ơn a. Nếu bảng checklist của e dòng tiêu đề giữ nguyên chi thay đổi nội dung bên trong bảng để phù hợp với từng đối tượng đc nghiệm thu thì cách làm vẫn giống hay phải tạo từng table cho từng đối tượng ạ.
Mình đã đăng hướng dẫn bên link Word addin nhe.
 
Upvote 0
Chào bác chủ tus "Ongke0711".
Trước hết là chân thành cảm ơn file mẫu bác làm, em sử dụng cho công việc của minh rất hiệu quả. Tuy nhiên nhờ bác và các cao nhân khác giúp đỡ khắc phục sự cố này.
Cụ thể là, khi em copy file dữ liệu của mình (gồm file excel, file mẫu word cần xuất ra năm ở thư mục Văn bản trộn) qua 1 máy tính khác (cho người khác cùng sử dụng) thì khi xuất dữ liệu ra nó báo lỗi 6294 - như hình em gửi đính kèm.
Vậy nhờ các bác giúp đỡ khắc phục lỗi này với ạ, em chân thành cảm ơn.
Em có gửi đính kèm file dữ liệu và hình ảnh lỗi hiện thị
Mong sớm nhận được hồi âm ạ
 

File đính kèm

  • 439993245_1118392842577832_7999930319091401064_n.jpg
    439993245_1118392842577832_7999930319091401064_n.jpg
    70.5 KB · Đọc: 29
Upvote 0
Cụ thể là, khi em copy file dữ liệu của mình (gồm file excel, file mẫu word cần xuất ra năm ở thư mục Văn bản trộn) qua 1 máy tính khác (cho người khác cùng sử dụng) thì khi xuất dữ liệu ra nó báo lỗi 6294 - như hình em gửi đính kèm.
Bạn vào code, kiếm cái Sub SearchReplaceText() - thay thế đoạn code gần cuối sub bằng code bên dưới xem thử nhé:


JavaScript:
nextRecord:
        Next j
        
        'Save File
        Dim subFolderPath As String
        Select Case Me.cboFormat.Value
            Case "PDF"
                If Me.chkMakeSubFolder Then     'Tuy chon tao subFolder
                    subFolderPath = Me.txtFolderLuu & "\" & arrData(i, Me.cboTenCot.Column(1))
                    sFilePath = sFileName & "_" & arrData(i, Me.cboTenCot.Column(1)) & ".pdf"
                    Call makeFolderRecur(subFolderPath, sFilePath)
                    WordDoc.SaveAs2 sFPath, 17
                Else    'Khong tao folder
                    sFullPathFile = Me.txtFolderLuu & "\" & sFileName & "_" & arrData(i, Me.cboTenCot.Column(1)) & ".pdf"
                    If fileExists(sFullPathFile) Then
                        seqNum = seqNum + 1
                        sFullPathFile = Me.txtFolderLuu & "\" & sFileName & "_" & arrData(i, Me.cboTenCot.Column(1)) & "_" & seqNum & ".pdf"
                    End If
                    WordDoc.SaveAs2 sFullPathFile, 17 'wdFormatPDF
                End If
                
            Case Else   'Word
                'On Error Resume Next
                If Me.chkMakeSubFolder Then     'Tuy chon tao subFolder
                    subFolderPath = Me.txtFolderLuu & "\" & arrData(i, Me.cboTenCot.Column(1))
                    sFilePath = sFileName & "_" & arrData(i, Me.cboTenCot.Column(1)) & ".docx"
                    Call makeFolderRecur(subFolderPath, sFilePath)
                    WordDoc.SaveAs2 sFPath
                Else    'Khong tao folder
                    sFullPathFile = Me.txtFolderLuu & "\" & sFileName & "_" & arrData(i, Me.cboTenCot.Column(1)) & ".docx"
                    If fileExists(sFullPathFile) Then
                        seqNum = seqNum + 1
                        sFullPathFile = Me.txtFolderLuu & "\" & sFileName & "_" & arrData(i, Me.cboTenCot.Column(1)) & "_" & seqNum & ".docx"
                    End If
                    WordDoc.SaveAs2 sFullPathFile
                End If
        End Select
        WordDoc.Close SaveChanges:=False
    Next
    
EH_Exit:
 
Upvote 0
Hình như khi xuất dữ liệu ra file chỉ có thể xuất 1 dòng, hoặc 1 chuỗi dòng liên tiếp (bằng cách kéo, thả chuột) phải không bác? Em thử chọn từng dòng không liên tiếp nhau (bấm giữ Ctrl, đồng thời chọn dòng mong muốn xuất dữ liệu) thì nó không ra kết quả như mong muốn. Nhờ bác chủ tus kiểm tra có đúng thế ko ạ? Nếu đúng thì giúp em cách sửa với
 
Upvote 0
Hình như khi xuất dữ liệu ra file chỉ có thể xuất 1 dòng, hoặc 1 chuỗi dòng liên tiếp (bằng cách kéo, thả chuột) phải không bác? Em thử chọn từng dòng không liên tiếp nhau (bấm giữ Ctrl, đồng thời chọn dòng mong muốn xuất dữ liệu) thì nó không ra kết quả như mong muốn. Nhờ bác chủ tus kiểm tra có đúng thế ko ạ? Nếu đúng thì giúp em cách sửa với
Tôi đã kiểm tra lại việc chọn cách dòng và vẫn xuất được như bình thường nha bạn. Chú ý chọn dữ liệu cho tất cả các textbox trên Form.
 
Upvote 0
Tôi đã kiểm tra lại việc chọn cách dòng và vẫn xuất được như bình thường nha bạn. Chú ý chọn dữ liệu cho tất cả các textbox trên Form.
A11.jpg
Em gửi bác xem tình trạng em đang gặp phải:
Mục đích: Chỉ muốn xuất dữ liệu của 2 dòng là số 9 và dòng số 13
Thực hiện: Tại ô [3] trên Hộp, bấm giữ Ctrl, sau đó chọn ô B9 và B13 (như hình)
Nhưng khi bấm Trộn dữ liệu thì xuất 37 file (tương ứng với dữ liệu tất cả 37 dòng trong sheet excel hiện tại).
Kết quả: 2 file xuất nội dung 2 dòng vẫn có bình thường, nhưng kèm theo đó là 35 file lỗi (không có nội dung gì cả, chỉ là file form mẫu nhưng trống các nội dung dữ liệu.
Nhờ bác xem em thao tác bị lỗi chỗ nào, và vì sao em làm lại bị như vậy. Cảm ơn bác!
 
Upvote 0
View attachment 301015
Em gửi bác xem tình trạng em đang gặp phải:
Mục đích: Chỉ muốn xuất dữ liệu của 2 dòng là số 9 và dòng số 13
Thực hiện: Tại ô [3] trên Hộp, bấm giữ Ctrl, sau đó chọn ô B9 và B13 (như hình)
Nhưng khi bấm Trộn dữ liệu thì xuất 37 file (tương ứng với dữ liệu tất cả 37 dòng trong sheet excel hiện tại).
Kết quả: 2 file xuất nội dung 2 dòng vẫn có bình thường, nhưng kèm theo đó là 35 file lỗi (không có nội dung gì cả, chỉ là file form mẫu nhưng trống các nội dung dữ liệu.
Nhờ bác xem em thao tác bị lỗi chỗ nào, và vì sao em làm lại bị như vậy. Cảm ơn bác!
Mục số 4: bạn chọn cột STT hoặc cột MST làm tên field xem như thế nào.
 
Upvote 0
Mục số 4: bạn chọn cột STT hoặc cột MST làm tên field xem như thế nào.
A13.jpg
Đã thử theo yêu cầu của bác (thử cả STT lẫn MST luôn), kết quả vẫn y vậy, vẫn chay full 37 dòng, 2 file của 2 dòng cần chọn vẫn ra đúng, nhưng kèm theo đó là 35 file ko có nội dung. Nhờ bác giúp!
 
Upvote 0
View attachment 301021
Đã thử theo yêu cầu của bác (thử cả STT lẫn MST luôn), kết quả vẫn y vậy, vẫn chay full 37 dòng, 2 file của 2 dòng cần chọn vẫn ra đúng, nhưng kèm theo đó là 35 file ko có nội dung. Nhờ bác giúp!
Tốt nhất là bạn gửi cái file bạn đang làm lên đây để kiểm tra trực tiếp chứ định bệnh kiểu nào khó quá. Bạn xoá tất cả các dữ liệu nhạy cảm, gõ đại nội dung gì đó được rồi.
 
Upvote 0
cho em hỏi, nếu sau khi trộn mà trong văn bản word có tìm thấy từ ABC thì sẽ xóa cả cái dòng đó đi thì làm thế nào ạ, e có đính kèm cái ảnh sau khi trộn, em muốn xóa tất cả các dòng trong ô mầu cam, vì nó có chứa từ ABC trong đấy
5AN6Psx.png
 
Upvote 0
cho em hỏi, nếu sau khi trộn mà trong văn bản word có tìm thấy từ ABC thì sẽ xóa cả cái dòng đó đi thì làm thế nào ạ, e có đính kèm cái ảnh sau khi trộn, em muốn xóa tất cả các dòng trong ô mầu cam, vì nó có chứa từ ABC trong đấy
View attachment 301585
Mình cũng đang quan tâm nhưng không biết cách làm
 
Upvote 0
cho em hỏi, nếu sau khi trộn mà trong văn bản word có tìm thấy từ ABC thì sẽ xóa cả cái dòng đó đi thì làm thế nào ạ, e có đính kèm cái ảnh sau khi trộn, em muốn xóa tất cả các dòng trong ô mầu cam, vì nó có chứa từ ABC trong đấy
Mấy chữ font màu đen là file Word mẫu, bạn soạn sẵn tùy theo nội dung mà bạn muốn trộn thôi. Chỗ nào không muốn chèn dữ liệu từ Excel thì đừng thêm merged Field vào vị trí đó.
 
Upvote 0
Mấy chữ font màu đen là file Word mẫu, bạn soạn sẵn tùy theo nội dung mà bạn muốn trộn thôi. Chỗ nào không muốn chèn dữ liệu từ Excel thì đừng thêm merged Field vào vị trí đó.
Em hiểu cách hoạt động ạ, nhưng ý em ở đây là nếu tìm kiếm và thay thế từ khoá nào đó thành một nội dung cụ thể, ví dụ thay tên trong mẫu biểu, mà tên mình thay là chữ "/xoá/" thì cả cái dòng trên word có chứa từ "/xoá/" sẽ bị xoá đi, cảm ơn anh.
 
Upvote 0
Em hiểu cách hoạt động ạ, nhưng ý em ở đây là nếu tìm kiếm và thay thế từ khoá nào đó thành một nội dung cụ thể, ví dụ thay tên trong mẫu biểu, mà tên mình thay là chữ "/xoá/" thì cả cái dòng trên word có chứa từ "/xoá/" sẽ bị xoá đi, cảm ơn anh.
Vậy thì không dùng công cụ Find and Replace của Word nữa. Trường hợp đặc biệt thì cách dùng cũng khác, thiết kế cho chuẩn rồi dùng. Bạn thay thế cho xong hết các nội dung nền rồi hãy chèn field cần trộn vào file.
 
Lần chỉnh sửa cuối:
Upvote 1
(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

Cái này khi em tích vào thư mục tạo folder từng dòng thì 2 nhiìu folder quá, vd: ông nguyễn văn A có 8 biểu mẫu ra cái folder thay vì 1 người 1 folder 8 biểu mẫu
 
Upvote 0
Web KT

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

Back
Top Bottom