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,124
Được thích
2,761
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:
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

  • GIAINHANNO.docx
    36.1 KB · Đọc: 6
  • hotrogiaingan - khbl.xlsb
    107.9 KB · Đọc: 4
Upvote 0
Web KT

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

Back
Top Bottom