Soạn thảo văn bản Word từ Excel

Liên hệ QC

TrungChinhs

Thành viên tích cực
Tham gia
18/2/08
Bài viết
1,475
Được thích
2,468
Nghề nghiệp
Công chức
Trong khi soạn thảo văn bản trên Word nhiều khi ta mơ ước nó liên kết được với dữ liệu có sẵn từ Excel. Mặc dù trên Word có sẵn chức năng này nhưng không phải ai cũng biết; mà có biết thì cũng ngại sử dụng vì nó tương đối phức tạp và chạy rất ì ạch...

Từ những kiến thức học được trên GPE tôi làm một file Excel để hỗ trợ soạn thảo văn bản soạn thảo trên Word. Qua sử dụng thấy rất hiệu quả nên Post lên chia xẻ với các bạn coi như là một món quà mừng sinh nhật GPE lần thứ 7.

Hướng dẫn sử dụng:
1. Tải về một thư mục nào đó (tùy ý).

2. Trong thư mục này có File Word mẫu ví dụ là "To trinh thu hoi dat" (mọi chỉnh sửa đều phải thực hiện trên file mẫu này).

3. Trong thư mục này có File DaTa Exel - Word File này là dùng để soạn thảo các nội dung cần chèn vào File Word mẫu để tạo nên file văn bản mà bạn mong muốn.

4. File văn bản sẽ được tự động tạo ra trong thư mục chữa file mẫu. File mẫu là tên file nằm ở dòng đầu tiên của cột C (trong ví dụ có 2 File, muốn tạo file theo mẫu nào thì bạn copy dòng đó dán lên trên). Tên file tạo ra là tên ở dòng đầu tiên của cột.

5. Khi muốn tạo 1 file văn bản nào thì bạn đặt con trỏ vào cột chứa nội dung của văn bản đó và nhấn Ctrl + W

6. Khi muốn muốn tạo nhiều văn bản (theo số cột có dữ liệu) thì bạn đặt con trỏ vào cột C và nhấn Ctrl + W

Cái này thích hợp với việc soạn thảo văn bản theo đề cương, theo mẫu và sản xuất hàng loạt như soạn thảo hợp đồng, biên bản nghiệm thu, báo cáo tuần, tháng...

Bạn quan sát kỹ File Word mẫu và dữ liệu các cột bên Exel để vận dụng vào tình huống cụ thể của bạn.

P/s Trường hợp không muốn lấy số lẻ sau dấu phảy (vd muốn 20 thay vì 20,0) hoặc không muốn dấu phân cách (vd 1000 thay vì 1.000) thì các bạn nhập thêm dấu gạch dưới trước dữ liệu để biến thành dạng Text (Vd _20 hoặc _1000)

Lúc đầu thì thấy hơi rắc rối nhưng bạn cứ thử xem. Khi đã biết cách làm thì bạn sẽ thấy nó lợi hại như thế nào ?


Chúc các bạn thành công và đạt hiệu quả cao trong công việc.
 

File đính kèm

  • Word - Excel _4713.rar
    26.8 KB · Đọc: 2,066
Lần chỉnh sửa cuối:
Bác trungchinhs hướng dấn cho cháu hiểu đoạn code scl=1 (Sao scl= không phải là 2, 3, hay 4?)
và đoạn code
' If Selection.Column > 3 Then
' Scl = Selection.Column - 3
' Ecl = Scl
' End If
For j = Scl To Ecl
Số >3 có nghĩa gì hả bác

Tôi đang dùng ipat, không xem được code nên không nhớ rõ nhưng nhìn vào tên biến thì đoán là scl = 1 có nghĩa là biến cột bắt đầu từ 1.

Số 3 ở đây có nhĩa là cột thứ 3 tức cột c
 
Upvote 0
Vậy khi nào bác trungchinhs có lên máy tính, cháu nhờ bác xem dùm cháu lập code như vậy có sai sót chỗ nào không nha bác. scl=1 và ecl=3 nghĩa là scl bắt từ tính từ cột A được xem là cột 1 và ecl=3 tức là cột C, vậy biến sẽ chạy từ cột A cho đến cột C hả gì bác? vậy cột D của cháu có dữ liệu mà nằm ngoài khoảng di chuyển của biến nay bị lỗi không bác.
 
Upvote 0
Vậy khi nào bác trungchinhs có lên máy tính, cháu nhờ bác xem dùm cháu lập code như vậy có sai sót chỗ nào không nha bác. scl=1 và ecl=3 nghĩa là scl bắt từ tính từ cột A được xem là cột 1 và ecl=3 tức là cột C, vậy biến sẽ chạy từ cột A cho đến cột C hả gì bác? vậy cột D của cháu có dữ liệu mà nằm ngoài khoảng di chuyển của biến nay bị lỗi không bác.
 
Upvote 0
Bác Trungchinhs sẵn dịp bác cho cháu hỏi về phiên bản 2015 của bác luôn nha, cháu đã xem qua nhưng có 1 vài chỗ cháu đọc hướng dẫn mà không hiểu.
1. Cháu đưa file word của cháu vào thư mục và đặt tên là file_goc, vậy cháu đưa 1 lúc nhiều file word khác nhau vào vậy đặt tên thế nào hả bác?
2. Cháu chọn ctrl shift w thì chương trình của bác tạo ra 2 file: 1 file tên là file_mau và 1 file word có dữ liệu chèn vào nếu vậy thì chỉ in được 1 file word thoi, cháu muốn in ra 1 lượt nhiều mẫu word khác nhau thì phải làm sao hả bác?
3. cách tạo key cháu chưa hiểu, cháu đặt key mới sau khi cháu đưa file word có phần mềm bôi chữ đỏ hay sao bác? và cách đặt Key có kí hiệu như thế nào hả bác? đặt trong [] và có dấu cách " _ " hay sao bác?
4.File word tạo ra nằm trong thư mục, bác có thể giúp cháu code cho file word đó hiển thị trên màn hình để xem và in không bác?
Cháu thấy Phiên bản 2015 của bác rất hay mà cháu chưa hiểu sâu mấy vấn đề trên dù có đọc kỹ hướng dẫn của bác.
Chân trọng cám ơn sự nhiệt tình của bác giúp đỡ cháu.
 
Upvote 0
Chào bác trungchinhs!
Cháu xem lại phiên bản 2015 thấy rất hay và dễ sử dụng, nhưng qua đó cháu thấy có thắc mắc như sau:
1. Khi cháu đưa 1 file word gốc vào đặt tên file là file_goc sao đó cháu bấm Ctrl shift w thì chương trình tạo 2 file là file_ mau va file có dữ liệu của mẫu đó,và trong sheet data sẽ sinh ra key mới trong cột key, xong sau đó cháu nhập vào dữ liệu mềm có thông tin khác vào xong cháu chon ctrl shift w thì dữ liệu tạo ra dữ liệu củ chứ không lấy dữ liệu mới mà cháu nhập vào, xin bác hướng dẫn giúp cháu hiểu.
2. Khi mình đưa nhiều mẫu word vào làm file gốc, dữ liệu mẫu ra thành nhiều cột, cháu thấy chương trình chỉ tạo và cập nhật key chỉ duy nhất 1 cột không cập nhật key cho nhiều cột dữ liệu khác nhau.
Xin bác giúp đỡ cháu hiểu rõ nhé bác. cám ơn bác nhiều.
 
Upvote 0
Bác Trungchinhs và anh chị và các bạn trên diễn đàn GPE xem dùm cháu viết code có bị lỗi gì không khi save lại file thì báo lỗi như sau:
The follwing features can not be save in marco free workbooks
.Vb project
The save a file with these features, clicks No, and then choose a marco-enable file type in the file type list
Ton continue saving as a marco free workbook click yes
Yes No help
Mong các bác, anh chị và các bạn trên GPE giúp đỡ.
Trân trọng cám ơn!
 
Upvote 0
Chào bác trungchinhs!
Cháu xem lại phiên bản 2015 thấy rất hay và dễ sử dụng, nhưng qua đó cháu thấy có thắc mắc như sau:
1. Khi cháu đưa 1 file word gốc vào đặt tên file là file_goc sao đó cháu bấm Ctrl shift w thì chương trình tạo 2 file là file_ mau va file có dữ liệu của mẫu đó,và trong sheet data sẽ sinh ra key mới trong cột key, xong sau đó cháu nhập vào dữ liệu mềm có thông tin khác vào xong cháu chon ctrl shift w thì dữ liệu tạo ra dữ liệu củ chứ không lấy dữ liệu mới mà cháu nhập vào, xin bác hướng dẫn giúp cháu hiểu.
2. Khi mình đưa nhiều mẫu word vào làm file gốc, dữ liệu mẫu ra thành nhiều cột, cháu thấy chương trình chỉ tạo và cập nhật key chỉ duy nhất 1 cột không cập nhật key cho nhiều cột dữ liệu khác nhau.
Xin bác giúp đỡ cháu hiểu rõ nhé bác. cám ơn bác nhiều.

Những thắc mắc của bạn đã có trong hướng dẫn sử dụng. Hãy đọc kỹ và làm theo.

1. Muốn tạo báo cáo theo dữ liệu cột nào thì trong Data bạn phải đặt tên File tại cột đó (ô màu xám) và bên trang chủ bạn phải chọn lại tên File trước khi nhân lệnh chạy chương trình.

2. Mỗi chương trình chỉ tạo được một mẫu và chỉ có một cột key duy nhất. Muốn có nhiều mẫu thì bạn phải tạo nhiều thư muc như đã hướng dẫn.
 
Lần chỉnh sửa cuối:
Upvote 0
Bác Trungchinhs và anh chị và các bạn trên diễn đàn GPE xem dùm cháu viết code có bị lỗi gì không khi save lại file thì báo lỗi như sau:
The follwing features can not be save in marco free workbooks
.Vb project
The save a file with these features, clicks No, and then choose a marco-enable file type in the file type list
Ton continue saving as a marco free workbook click yes
Yes No help
Mong các bác, anh chị và các bạn trên GPE giúp đỡ.
Trân trọng cám ơn!

Tiếng anh tôi không biết, Bạn không gửi File lên nên tôi cũng chẳng biết lỗi gì mà giúp ?
 
Upvote 0
Thanks bác TrungChinhs, cá nhân em thấy file cũ là quá tuyệt với nhu cầu của em rồi, nhưng có 1 vài thắc mắc hơi dài dòng nên em giải thích trong file đính kèm cho dễ hình dung. mong bác xem giúp có ý kiến ah.

cảm ơn bác nhiều.
 

File đính kèm

  • Vi Du Excel.xlsx
    36.3 KB · Đọc: 38
Upvote 0
Chào bác trungchinhs!
Bác cho cháu hỏi chỗ đoan code của phiên bản củ của bác như sau:
Sheets("DaTa_In").[d5].Resize(10000, 250).ClearContents
Phần chữ cháu tô màu đỏ, bác hướng dẫn giúp cháu hiểu chữ "_In" là code viết tắt hay là Data_In là tên của 1 sheet hả bác?
và bác cho cháu hỏi nếu là tên sheet thì cháu phải tạo thêm 1 sheet data_In như đoạn code sau hả bác?
Sheets("DaTa_In").Range(cls(1, j + 1).Address(0, 0)) = "=IF(TYPE(FIXED(DaTa!RC,1))=16,DaTa!RC,FIXED(DaTa!RC,1))"
.Selection.Find.Execute cls, , , , , , , , , Sheets("DaTa_In").Range(cls(1, j + 1).Address(0, 0)), 2

nếu thiếu đoạn code trên có ảnh hưởng gì không bác? bác giúp cháu hiểu ý nghĩa đoạn code trên có ý nghĩa của nó nhé bác.
Trân trọng chào bác

 
Upvote 0
Chào bác trungchinhs!
Bác cho cháu hỏi chỗ đoan code của phiên bản củ của bác như sau:
Sheets("DaTa_In").[d5].Resize(10000, 250).ClearContents
Phần chữ cháu tô màu đỏ, bác hướng dẫn giúp cháu hiểu chữ "_In" là code viết tắt hay là Data_In là tên của 1 sheet hả bác?
và bác cho cháu hỏi nếu là tên sheet thì cháu phải tạo thêm 1 sheet data_In như đoạn code sau hả bác?
Sheets("DaTa_In").Range(cls(1, j + 1).Address(0, 0)) = "=IF(TYPE(FIXED(DaTa!RC,1))=16,DaTa!RC,FIXED(DaTa! RC,1))"
.Selection.Find.Execute cls, , , , , , , , , Sheets("DaTa_In").Range(cls(1, j + 1).Address(0, 0)), 2

nếu thiếu đoạn code trên có ảnh hưởng gì không bác? bác giúp cháu hiểu ý nghĩa đoạn code trên có ý nghĩa của nó nhé bác.
Trân trọng chào bác
 
Upvote 0
Chào bác trungchinhs!
Bác cho cháu hỏi chỗ đoan code của phiên bản củ của bác như sau:
Sheets("DaTa_In").[d5].Resize(10000, 250).ClearContents
Phần chữ cháu tô màu đỏ, bác hướng dẫn giúp cháu hiểu chữ "_In" là code viết tắt hay là Data_In là tên của 1 sheet hả bác?
và bác cho cháu hỏi nếu là tên sheet thì cháu phải tạo thêm 1 sheet data_In như đoạn code sau hả bác?
Sheets("DaTa_In").Range(cls(1, j + 1).Address(0, 0)) = "=IF(TYPE(FIXED(DaTa!RC,1))=16,DaTa!RC,FIXED(DaTa! RC,1))"
.Selection.Find.Execute cls, , , , , , , , , Sheets("DaTa_In").Range(cls(1, j + 1).Address(0, 0)), 2

nếu thiếu đoạn code trên có ảnh hưởng gì không bác? bác giúp cháu hiểu ý nghĩa đoạn code trên có ý nghĩa của nó nhé bác.
Trân trọng chào bác

@huyrua:
1. Data_In là tên của 1 sheet.
2. Không phải tạo thêm sheet data_In vì nó đã có sẵn trong chương trình (sheet data_In là sheet trung gian nên luôn để ở chế độ ẩn).
3. Nếu thiếu đoạn code trên thì đương nhiên là có ảnh hưởng (nếu nó không có tác dụng thì viết ra để làm gì).
4. Ý nghĩa của dòng lệnh trên là để tạo ra dấu chấm phân cách trong dãy số (vd: 123456789 sẽ được đổi thành 123.456.789)
5. Ý nghĩa của dòng lệnh dưới là tìm và sửa dữ liệu bên File Word bằng dữ liệu bên File Excel. Như vậy thực chất dữ liệu bên File Word
được lấy qua sheet trung gian là sheet data_In chứ không phải là từ sheet data.

Chính vì sự phức tạp này nên tôi mới phải nâng cấp thành phiên bản mới nhưng do cùng chủ đề nên tôi không tạo bài mới.

Tôi nghĩ bạn muốn tìm hiểu về VBA nên mới cố gắng giải thích còn để ứng dụng thì tôi nghĩ bạn nên nghiên phiên bản mới.
 
Upvote 0
Chào bác trungchinhs
Dạ cháu rất cám ơn về sự hướng dẫn nhiệt tình giải đáp chu đáo cháu hiểu, chúng cũng nghiên cứu về phiên bản mới 2015 nhưng do công việc của cháu có rất nhiều file Word phải đưa dữ liệu từ exel vào nên cháu mới nhờ bác hướng dẫn cháu hiểu về code của bác. Theo như ý của bác nói vậy thì để có được sheet data_In thì phải làm sao hả bác? và khi tạo ra là sheet data_In tự ẩn hả bác? mong bác giúp đỡ cho cháu. Ai cũng muốn mình càng tiến bộ nhưng vì bắt đắc dĩ lắm mới xem kỹ phiên bản củ. Có điều gì không phải mong bác thông cảm bỏ qua cho cháu.
Á bác hướng dẫn dùm cháu cách tải file từ máy lên kèm với nội dung để diễn tả, nhưng cháu click vào Tải file từ máy mà chẳng thấy tín hiệu gì cả.
Cháu rất cám ơn bác!
 
Upvote 0
Chào bác trungchinhs
..........
Á bác hướng dẫn dùm cháu cách tải file từ máy lên kèm với nội dung để diễn tả, nhưng cháu click vào Tải file từ máy mà chẳng thấy tín hiệu gì cả.
Cháu rất cám ơn bác!

Cái này bạn nên post hỏi Ban quản trị điễn đàn để admin có trách nhiệm trả lời,

Theo tôi , thì bạn thử chạy sạng phần mềm trình duyệt khác (IE, Firfox, Gchrome...) khác cái bạn đang dùng thử xem, chắc là do cookíes đã bị chặn....
 
Upvote 0
Chào bác trungchinhs!
Chúc bác ngày cuối tuần thật vui vẻ, hạnh phúc
Cháu đang làm công việc có nhiều mẫu word cháu cũng nghiên cứu về phiên bản 2015 của bác nhưng do phiên bản này chỉ tạo đươc 1 mẫu biểu duy nhất nên cháu đành nghiên cứu phiên bản củ của bác, nhưng do hiểu biết về VBA của cháu chưa sâu nên cháu có 2 file excel và word gửi kèm theo mong bác giúp cháu tạo code VBA đưa dữ liệu từ excel vào word theo phiên bản củ của bác lúc trước, bác giúp cháu tạo code khi bấm vào nút lệnh In mẫu thì sẽ mở form, bấm vào nút lệnh Hợp đồng thuê thì chương trình đưa dữ liệu từ excel vào word và show lên màn hình.
Mong bác giúp đỡ
Chân thành cảm ơn bác!
 

File đính kèm

  • Du lieu hop dong thue.rar
    8.6 KB · Đọc: 41
  • Hop dong thue.rar
    3 KB · Đọc: 34
Upvote 0
Thanks bác TrungChinhs, cá nhân em thấy file cũ là quá tuyệt với nhu cầu của em rồi, nhưng có 1 vài thắc mắc hơi dài dòng nên em giải thích trong file đính kèm cho dễ hình dung. mong bác xem giúp có ý kiến ah.

cảm ơn bác nhiều.
Bác xem giúp em với ah. Em chỉ mong bác gợi ý hướng xử lý thui cũng đc ạ!
 

File đính kèm

  • Vi Du Excel.xlsx
    36.3 KB · Đọc: 19
Upvote 0
Chào bác trungchinhs
Cháu có gửi 2 file nhờ bác viết dùm cháu code theo phiên bản củ của bác, cháu biết bác còn công việc của bác nhưng cháu sẽ đợi mong bác giúp đỡ cháu rất cám ơn
Có điều gì làm bác giận mong bác thông cảm và hiểu cho cháu
Trân trọng cảm ơn bác
 
Upvote 0
Mấy hôm nay gia đình đang có việc, các bạn chịu khó chờ vài hôm nha
 
Upvote 0
Dạ bác Trungchinhs cứ lo việc nhà cho xong, cháu sẽ đợi sữ giúp đỡ của bác
 
Upvote 0
Chào bác Trungchinhs!
Ngày cuối tuần vui vẻ chứ bác. Cháu đợi bác mấy hôm nay do bác có việc, cố gắng đợi bác để nhờ bác giúp cháu viết code chuyển dữ liệu nhập từ excel sang word, cháu đã có gửi 2 file exel và word đính kèm, mong bác giúp đỡ
Cháu cám ơn bác nhiều
 
Upvote 0
Web KT
Back
Top Bottom