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,259
Được thích
2,996
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: 13
  • hotrogiaingan - khbl.xlsb
    107.9 KB · Đọc: 10
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

  • Hop dong.docx
    27.4 KB · Đọc: 8
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

  • Hỗ trợ.xlsx
    11.3 KB · Đọc: 2
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
Web KT

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

Back
Top Bottom