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

Liên hệ QC

Người dùng đang xem chủ đề này

ongke0711

Thành viên gắn bó
Tham gia
7/9/06
Bài viết
2,324
Được thích
3,131
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.

>> Cập nhật ngày 14/07/2025: Lấy dữ liệu dạng cột (File đính kèm bên dưới)


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
 

File đính kèm

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

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
Ý 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: 32
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
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
ok em đã làm dc
 
Upvote 0
Đối với code dùng table thì không định dạng được bảng biểu Merge cột hoặc hàng. Có giải pháp nào không anh @ongke0711
1723109383365.png
Bài đã được tự động gộp:

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
Bạn dùng Sub sau, mình đã gộp lại 2 Sub creaFolder, makeFolderRecur thành 1 Sub makeFolderRecur đáp ứng chỉ tạo 1 thư mục duy nhất cho các dòng dữ liệu dựa theo tên cột đã chọn
Sub makeFolderRecur(Path As String, filePath As String)
Dim oFSO As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")

' Kiểm tra và tạo thư mục nếu không tồn tại
If Not oFSO.FolderExists(Path) Then
oFSO.CreateFolder Path
End If

' Đường dẫn đầy đủ đến file
Dim sFPath As String
sFPath = Path & "\" & filePath
End Sub
 
Upvote 0
Upvote 0
Upvote 0
Dạ không đúng anh!
Nó cũng kiểu sẽ thay thế giống table nhưng ngặt cái dùng table thì lại không thể định dạng như mong muốn được. Kiểu như copy Range to Word ý ạ
Table thì không merge cell được do vậy tôi mới gửi bạn cái ví dụ khác là tự thiết kế sẵn table trong Word với định đạng mong muốn rồi đổ dữ liệu vào thôi.
Nếu làm như kiểu copy range thì bạn đã biết hướng giải quyết rồi đó. Đổi table thành code copy range dán vào Word. Còn cách khác nữa thì tôi không biết rồi.
 
Lần chỉnh sửa cuối:
Upvote 0
Nhờ các anh hỗ trợ giúp em với ạ. Các dữ liệu dạng chữ, số thì trộn sang được. Nhưng thêm bảng vào ấn trộn dữ liệu thì bị đơ không chạy được nữa ạ
 

File đính kèm

Upvote 0
Cá nhân em thấy file này chạy khá ngon, nhanh, dễ tùy biến cho những người không thành thạo về code như em và đặc biệt có thể xuất ra nhiều hợp đồng cùng lúc. Nhân đây em có chỗ vướng mắc trên file hợp đồng muốn nhờ các bác gỡ rối với ạ. Em xin cảm ơn rất nhiều
 

File đính kèm

Upvote 0
Bạn đã làm chút nào đâu, bạn phải tự tạo dữ liệu của bạn trên Excel chứ. Mình không có thời gian giúp từ A đến Z được.
Trên bảng dữ liệu thì mình đã xác định được số tiền trả nợ mỗi kỳ rồi nhưng cái khó ở chỗ do thời gian vay thay đổi thì số kỳ trả nợ cũng sẽ thay đổi theo và làm thế nào để tùy biến phân ra thành số kỳ trả nợ
 
Upvote 0
Trên bảng dữ liệu thì mình đã xác định được số tiền trả nợ mỗi kỳ rồi nhưng cái khó ở chỗ do thời gian vay thay đổi thì số kỳ trả nợ cũng sẽ thay đổi theo và làm thế nào để tùy biến phân ra thành số kỳ trả nợ
Đây là nghiệp vụ chuyên môn của bạn, mình không làm công việc của bạn nên không hiểu để giúp được, phần đó bạn mở chuyên mục mới đưa lên xem có thành viên nào biết để hỗ trợ bạn tạo ra phần dữ liệu đó trước đã.
 
Upvote 0
Chào bác chủ tus, lại là em đây. Hôm nay em có thắc mắc khác nhờ bác hỗ trợ với được không ạ.
Chả là em không biết (chưa biết) đăng bài mới ở đâu nên mượn tạm chủ đề này để hỏi bác.
Em có 1 file dữ liệu mẫu excel (như đính kèm). Giờ em muốn xuất dữ liệu trong file đó mỗi hàng thành 1 file excel riêng để phục vụ cho công việc. Nhờ bác hỗ trợ, cụ thể:
- Tại cột số hiệu trong file dữ liệu khi nhập liệu bắt buộc đủ 08 ký tự, nếu nhập ít hơn hoặc nhiều hơn 8 ký tự thì hiện thị cảnh báo lỗi (chưa đủ 8 ký tự/nhiều hơn 8 ký tự), để người nhập sửa lại
- Khi xuất file thì mỗi file excel khi xuất ra có 2 dòng gồm: 01 dòng tiêu đề và 01 dòng dữ liệu, có thể chọn tất cả các hàng hoặc chọn hàng tùy biến (bôi đen hàng cần chọn)
Trân trọng cảm ơn người giúp đỡ ạ
 

File đính kèm

Upvote 0
Mình insert ảnh thông qua field và includepicture nhưng ảnh khi merge sang outlook sẽ bị xoay ngang
còn ảnh insert thông qua InlineShapes (Insert -> picture) thì giữ đúng form ảnh.
Bạn có phương án gì để merge được từng ảnh cho các email không?
 
Upvote 0
em vừa phát hiện ra 1 lỗi đó là: ví dụ trong bảng tính có 1 cột bị khóa (không cho chỉnh sửa dữ liệu) thì code sẽ không chạy được
 
Upvote 0
(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
Video hướng dẫn không xem được anh ạ!
 
Upvote 0
Có cách nào để tạo bảng bị merge nhiều cột không bạn ơi !
 
Upvote 0
Cám ơn Anh (ongke0711) đã chia sẻ. Khi mình tạo thêm nhiều cột thì không chọn được vùng dữ liệu từ sau cột Y, Z... mong Anh fix giúp để có thể chọn được nhiều cột dữ liệu hơn nữa trong quá trình trộn dữ liệu.
 

File đính kèm

  • them du lieu.png
    them du lieu.png
    158.2 KB · Đọc: 40
  • IN SO.xlsb
    IN SO.xlsb
    97.2 KB · Đọc: 8
Upvote 0
Cám ơn Anh (ongke0711) đã chia sẻ. Khi mình tạo thêm nhiều cột thì không chọn được vùng dữ liệu từ sau cột Y, Z... mong Anh fix giúp để có thể chọn được nhiều cột dữ liệu hơn nữa trong quá trình trộn dữ liệu.
Lỗi là do cái table range thay đổi nhưng chưa cập nhật lại. Tôi đã thêm code để người dùng cập nhật lại vùng dữ liệu (range) khi có thay đổi.
File đính kèm.
 

File đính kèm

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
Bạn này bị giống mình này, khi sử dụng filter, thì nếu quét 1 số hàng trong filter đó thì số dòng xuất file ra không đúng như mong muốn. Mong ad kiểm tra lại code phần này (sau khi filter). Xin cảm ơn
 
Upvote 0
Lỗi là do cái table range thay đổi nhưng chưa cập nhật lại. Tôi đã thêm code để người dùng cập nhật lại vùng dữ liệu (range) khi có thay đổi.
File đính kèm.
Cảm ơn tác giả đã chia sẻ file rất hay và hữu ích, giúp mọi người tối ưu hóa công việc của mình. Tác giả có thể tạo một add-in có chức năng tương tự được không? Xin cảm ơn.
 
Upvote 0
Lỗi là do cái table range thay đổi nhưng chưa cập nhật lại. Tôi đã thêm code để người dùng cập nhật lại vùng dữ liệu (range) khi có thay đổi.
Rất cảm ơn bác đã chia sẻ với mọi người. Áp dụng vào công việc của em thì cần định dạng tiêu đề theo hàng dọc cho dễ quản lý dữ liệu. Rất mong bác giúp đỡ.
 

File đính kèm

  • cot doc.PNG
    cot doc.PNG
    37.7 KB · Đọc: 21
Upvote 0
Rất cảm ơn bác đã chia sẻ với mọi người. Áp dụng vào công việc của em thì cần định dạng tiêu đề theo hàng dọc cho dễ quản lý dữ liệu. Rất mong bác giúp đỡ.
File của bạn dữ liệu cột theo hàng dọc, còn các dòng khác nhau thì xếp theo hàng ngang à? Nếu vậy thì chiếm rất nhiều cột rồi đó. Làm thì vẫn được thôi nhưng tổ chức CSDL vậy là không chuẩn và hợp lý rồi.
File như hình bạn dư sức chuyển cột thành hàng mà, dùng transpose.
 
Upvote 0
File của bạn dữ liệu cột theo hàng dọc, còn các dòng khác nhau thì xếp theo hàng ngang à? Nếu vậy thì chiếm rất nhiều cột rồi đó. Làm thì vẫn được thôi nhưng tổ chức CSDL vậy là không chuẩn và hợp lý rồi.
File như hình bạn dư sức chuyển cột thành hàng mà, dùng transpose.
cái dữ liệu nhập vào của em chỉ gộp từ 3 thông tin chính: công trình + chủ đầu tư (bên A) + nhà thầu (bên B) tất cả gộp vào thành từng kia tiêu đề. nên sẽ không phát sinh thêm cột nào nữa.
 
Upvote 0
cái dữ liệu nhập vào của em chỉ gộp từ 3 thông tin chính: công trình + chủ đầu tư (bên A) + nhà thầu (bên B) tất cả gộp vào thành từng kia tiêu đề. nên sẽ không phát sinh thêm cột nào nữa.
Ý tôi là nếu bạn xây dựng CSDL như hình thì nên đổi lại.
Còn thực tế CSDL của bạn như thế nào thì nên gửi cái file giả lập lên, dữ liệu thì cứ gõ lung tung abc là được rồi, chủ yếu xem cái cấu trúc bảng dữ liệu của bạn dùng cho Mail merge.

Screenshot 2025-07-11 at 20.56.46.png
 
Upvote 0
Ý tôi là nếu bạn xây dựng CSDL như hình thì nên đổi lại.
Còn thực tế CSDL của bạn như thế nào thì nên gửi cái file giả lập lên, dữ liệu thì cứ gõ lung tung abc là được rồi, chủ yếu xem cái cấu trúc bảng dữ liệu của bạn dùng cho Mail merge.

View attachment 308870
Bác xem qua file giúp em, thông tin sẽ tổng hợp từ 3 sheet: DA-CT , CDT , NhaThau. Xong sẽ xuất ra 1 sheet tổng hợp DATA. Nếu trộn dữ liệu theo cột dọc như trong sheet DATA luôn thì tốt vì nội dung từng tiêu đề sẽ quản lý dễ hơn so với để hàng ngang. Mong bác giúp đỡ.
 

File đính kèm

Upvote 0
Bác xem qua file giúp em, thông tin sẽ tổng hợp từ 3 sheet: DA-CT , CDT , NhaThau. Xong sẽ xuất ra 1 sheet tổng hợp DATA. Nếu trộn dữ liệu theo cột dọc như trong sheet DATA luôn thì tốt vì nội dung từng tiêu đề sẽ quản lý dễ hơn so với để hàng ngang. Mong bác giúp đỡ.
Bạn xem file đính kèm.
Đã điều chỉnh để lấy dữ liệu trộn dạng cột.

 

File đính kèm

Upvote 0

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

Back
Top Bottom