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,467
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:
hix, để dấu phẩy phía trước thì ko vấn đề gì rồi,vấn đề đặt ra ở đây là 1 chuỗi công thức kìa
 
Upvote 0
Ý của bạn là ô có dầu "=" vd =123456 ?
File ở bài 1 tôi test: bên Excel =123456 bên Word là 123456.
 
Upvote 0
Mã:
Sub Replace_Word_Excel()    Application.ScreenUpdating = False
    On Error Resume Next
    Sheets("DaTa_In").[d5].Resize(10000, 250).ClearContents
    With CreateObject("Word.Application")
        .Visible = True
        Scl = 1
        Ecl = [d5].Resize(, 200).SpecialCells(2).Cells.Count
        file = [c5]
        If Selection.Column > 3 Then
            Scl = Selection.Column - 3
            Ecl = Scl
        End If
        For j = Scl To Ecl
            Doc = .Documents.Open(ThisWorkbook.Path & "\" & file & ".doc")
            .Documents(ThisWorkbook.Path & "\" & file & ".doc").SaveAs Filename:=ThisWorkbook.Path & "\" & Cells(5, j + 3) & ".doc"
            For Each cls In Range([c10], [c65000].End(3))
                If cls(1, j + 1) > 1000000000 Then
                    .Selection.Find.Execute cls, , , , , , , , , Sheets("DaTa").Range(cls(1, j + 1).Address(0, 0)), 2
                ElseIf cls > 0 Then
                    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
                End If
            Next
            .Selection.Find.Execute "_", , , , , , , , , "", 2
            .Documents(ThisWorkbook.Path & "\" & Cells(5, j + 3) & ".doc").Close (True)
        Next
        .Quit
    End With
End Sub

Bác có thể giải thích em về CODE của Macro này không!? Em muốn ứng dụng vào file của em mà không hiểu hết được...

tks
 
Upvote 0
bạn ơi cho mình hỏi, code của bạn có thể xuất luôn dữ liệu từ excel sang excel không vậy
 
Upvote 0
Bài viết của bạn rất hữu ích, nhưng vì biểu mẫu mình cần thuộc loại khác nên bạn có thể hướng dẫn mình cách làm file excel và liên kết nó với word :(liên kết dữ liệu từng phần với bảng dữ liệu, đặt tên văn bản word theo nội dung nhập liệu tại cột...) nếu có hướng dẫn chi tiết cách làm cái bảng excel của bạn thì mình rất cảm ơn...bạn có thể gửi vào mail kidduatre123@gmail.com cho mình được không?
/-*+//-*+//-*+//-*+//-*+/-\\/.-\\/.-=.,,-=.,,-=.,,-=.,,
 
Upvote 0
Phím Ctr+W tôi nói tại bài 1 là phím nóng tôi tự gán để chạy code, bạn có thể thay đổi tùy ý (chẳng liên quan gì đến các phím nóng khác của Microsoff).

Còn việc muốn lưu file mới tạo vào thư mục nào thì bạn có thể sửa lại code để chỉ định. Trong ví dụ này tôi chọn lưu file mới tạo vào thư mục chứa file gốc bằng câu lệnh .SaveAs Filename:=ThisWorkbook.Path & "\"


 
Upvote 0
Phím Ctr+W tôi nói tại bài 1 là phím nóng tôi tự gán để chạy code, bạn có thể thay đổi tùy ý (chẳng liên quan gì đến các phím nóng khác của Microsoff).

Còn việc muốn lưu file mới tạo vào thư mục nào thì bạn có thể sửa lại code để chỉ định. Trong ví dụ này tôi chọn lưu file mới tạo vào thư mục chứa file gốc bằng câu lệnh .SaveAs Filename:=ThisWorkbook.Path & "\"


Cảm ơn bạn...ý mình khác cơ...mình đính kèm cái file ví dụ...bạn giúp mình tí nhé...mình rất cảm ơn!!!!
Nghĩa là thế này:
1. Mình có 1 bảng Excel chứa nội dung...
2. Mình có vài 3 -4 cái mẫu ( Báo cáo, Tờ trình...v..v...) cần xài chung cái nội dung đó. (Có cái mình muốn lưu dưới dạng Báo cáo, có cái mình muốn lưu dưới dạng Tờ Trình… hoặc có cái mình muốn lưu cả 2).
3. Vậy:
- Làm sao để lựa chọn lưu dưới dạng nào (Báo cáo/Tờ trình hay cả hai).
- Cái tên văn bản tạo thành có thêm phần mở rộng ( địa chỉ/ hoặc 1 cái cột nào đó do mình chỉ định).
Nếu được mong bạn chỉ giáo…hoặc làm giúp cho mình trên cái VD đó luôn.
Nếu bạn làm giúp trên cái ví dụ; thì khi mình thay đổi vị trí các cột từ A=> B=>C…v…v.. theo yêu cầu riêng của từng bảng thì cấu trúc câu lệnh bạn tạo có bị sai không? Hay nó tự động chuyển…Cảm ơn bạn nhiều…

Sao đang nghiên cứu liên kết dữ liệu excel và word thì bạn lại lan sang phím tắt "ctrl w" làm gì?
RỔ đây bạn https://www.google.com.vn/?gfe_rd=c...Hướng+dẫn+liên+kết+dữ+liệu+giữa+excel+và+word
bạn ơi Ctrl + W là phím tắt do chủ thớt tạo ra trên Bài 1 cho mọi người sử dụng...Và cái nội dung của nó là cái mình hướng tới hì mình là mình đang rất cần cái đó. hì hì /-*+///////)*&^)@#!^% (Tất nhiên mình ko biết tí gì về VBA và Lập trình cả bạn nhé...hì) Cái rổ bạn cho mình mình xem qua hết rồi...cái mình cần chỉ có ở chủ thớt này thôi vì chủ thớt viết code nên nó rất quý và hiếm...Biết là có nhiều cao thủ có thể viết được nhưng chưa thấy ai share và giúp như chủ thớt cả...
Còn mà phải đi tập huấn thêm về VBA chắc mình ko thể đi được...
*Cái mình muốn là thế này:
1. Mình có 1 bảng Excel chứa nội dung...
2. Mình có vài 3 -4 cái mẫu ( Báo cáo, Tờ trình...v..v...) cần xài chung cái nội dung đó.
3. Vậy làm sao để khi lựa chọn xuất ra file word theo cái mẫu nào ở mục (2) và cái tên file VB tạo ra được tự động đặt theo một cột nào đấy trong excel như cái VD trên mình gửi trên diễn đàn đó.
 

File đính kèm

  • VD nho ban lam giup.rar
    19.7 KB · Đọc: 10
  • VD nho ban lam giup (chinh thuc).rar
    20.2 KB · Đọc: 21
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Vấn đề này mình cũng đang quan tâm. Mình hay xài mail merge. Tuy nhiên nó hơi bất tiện và lâu hơn. Điểm khác ở đây là:
1. File chủ thớt tham chiếu theo hàng ngang.
2. Xài mailmerge lại làm theo hàng dọc
mình sẽ nghiên cứu để ứng dụng vào công việc và sẽ hỏi thêm chủ topic.
Thanks vì sáng kiến này rất bổ ích
 
Upvote 0
Bác có nick yahoo hay gmail cho cháu xin vì cháu đang tạo file giống như vậy mà không biết bị lỗi gì, chú cho nick để mà cháu liên hệ hỏi cách làm của bác.
Mong bác giúp đỡ
 
Upvote 0
Soạn thảo văn bản Word từ Excel Phiên bản mới.

Chương trình "Soạn thảo văn bản Word từ Excel" Phiên bản mới 2015 tôi đã viết lại và có hướng dẫn sử dụng tại Trang chủ của chương trình. Những vấn đề mà các bạn hỏi gần đây được sự giúp đỡ của quangHaindu tôi đã cố gắng tự động hóa trong Phiên bản 2015 nên thời gian vừa qua tôi đã không trả lời các bạn đối với phiên bản cũ.

Bạn nào quan tâm thì tải về và nghiên cứu kỹ ví dụ để ứng dụng vào công việc cụ thể của mình.

Có gì cần hỏi thêm thì gửi bài lên diễn đàn (không gửi tin nhắn hoặc Mail riêng).
 

File đính kèm

  • SOAN THAO EW.rar
    82.2 KB · Đọc: 315
Lần chỉnh sửa cuối:
Upvote 0
cháu nhờ bác Trungchinhs và các anh,chị trên GPE hướng dẫn về chuyên đề Soạn thảo EW

Cháu đọc và nghiên cứu file " SOAN THAO EW" phiên bản 2015 của bác, cháu có đôi chút vấn đề muốn nhờ bác hướng dẫn như sau:
-Cháu có thể đưa 1 file word mẫu của cháu vào file của chú và đặt tên là File_Goc được không vậy bác. và vì công việc cháu phải làm với rất nhiều file word tạo sẳn, cháu có thể ứng dụng được trên file của bác không?
-Trong file của bác có nhiều cột nhập dữ liệu vào, cháu có thể chỉ sử dụng 1 cột để nhập liệu vào không bác?
- và Trong cột Key trong sheet Data, cháu có thể thay đổi dữ liệu đó và thêm Row dữ liệu mới vào cho phù hợp với từng mẫu word không bác?
Cháu có mấy vấn đề rất mong bác và các anh chị, bạn trên GPE giúp đỡ
Chân Thành cảm on!
 
Upvote 0
Cháu đọc và nghiên cứu file " SOAN THAO EW" phiên bản 2015 của bác, cháu có đôi chút vấn đề muốn nhờ bác hướng dẫn như sau:
-Cháu có thể đưa 1 file word mẫu của cháu vào file của chú và đặt tên là File_Goc được không vậy bác. và vì công việc cháu phải làm với rất nhiều file word tạo sẳn, cháu có thể ứng dụng được trên file của bác không?
-Trong file của bác có nhiều cột nhập dữ liệu vào, cháu có thể chỉ sử dụng 1 cột để nhập liệu vào không bác?
- và Trong cột Key trong sheet Data, cháu có thể thay đổi dữ liệu đó và thêm Row dữ liệu mới vào cho phù hợp với từng mẫu word không bác?
Cháu có mấy vấn đề rất mong bác và các anh chị, bạn trên GPE giúp đỡ
Chân Thành cảm on!

Các vấn đề bạn hỏi tôi đã hướng dẫn rồi mà.
- Ý 1: đương nhiên phải làm như ý bạn, file word của tôi chỉ là ví dụ để mọi người xem cách làm cụ thể. Khi bạn đã hiểu thì xoá bỏ nó đi.
- Ý 2: bạn dùng bao nhiêu cột cũng được nhưng không được nhiều hơn 250 cột.
- Ý 3: cách tạo key tự động chính là phần vừa được nâng cấp. Phiên bản trước hoàn toàn làm thủ công như cách bạn hỏi. Vì vậy hãy chỉnh file goc như thế nào đó để máy tự động tạo key tới mức tối đa. Trường hợp đặc biệt thì mới làm thủ công.

lưu ý: việc tạo key bổ sung bằng thủ công chỉ thực hiện sau khi máy đã tạo xong key. Nếu tạo trước sẽ bị máy xoá.
 
Lần chỉnh sửa cuối:
Upvote 0
Thanks bác TrungChinh rất nhiều, nhưng bác có thể chia sẻ pass xem code được ko ạ? file e down về xem code marco bị hỏi pass ạ?
 
Upvote 0

File đính kèm

  • Excel_012015.rar
    56.6 KB · Đọc: 240
Upvote 0
Cháu chào bác Trungchinhs! chúc bác ngày đầu tuần thật vui vẻ, hạnh phúc thật nhiều may mắn và càng thành công trong công việc.
Cháu xem phiên bản 2015 mà chưa thật hiểu sâu về phiên bản này nên cháu quay về phiên bản lúc trước của bác.Cháu có vài chỗ không hiểu, mong Bác có thể giúp cháu hiểu được:
Một là ý nghĩa các code có kí hiệu như " Scl", "cls", " ecl" không bác?
Hai là với 1 phần đoạn code như sau:
If cls(1, J + 1) > 1000000000 Then
.Selection.Find.Execute cls, , , , , , , , , Sheets("Ho so tin dung").Range(cls(1, j + 1).Address(0, 0)), 2
' ElseIf cls > 0 Then
' Sheets("Ho so tin dung_In").Range(cls(1, J + 1).Address(0, 0)) = "=IF(TYPE(FIXED(Ho so tin dung!RC,1))=16,Ho so tin dung!RC,FIXED(Ho so tin dung!RC,1))"
' .Selection.Find.Execute cls, , , , , , , , , Sheets("Ho so tin dung_In").Range(cls(1, J + 1).Address(0, 0)), 2
' End If
Next
.Selection.Find.Execute "_", , , , , , , , , "", 2
' .Documents(ThisWorkbook.Path & "\" & Cells(5, j + 3) & ".doc").Close (True)
Next
' .Quit
với dữ liệu của cháu thì cháu chỉ thay đổi tên Sheet cho đúng với tên sheet của dữ liệu của cháu thôi, các code kia cháu không thay đổi, vậy có ảnh hưởng gì không bác?
Ba là: cháu tạo 1 userform trong đó có vài command button để thực hiện click vào sẽ mở ra file word báo cáo, cháu gắn code giống như của chú, và cháu tạo nút lệnh bên ngoài trên sheet, nút lệnh chạy marco mở form cháu đã tạo thì chương trình chạy tốt nhưng khi cháu Save lại ứng dụng để thoát ra ngoài thị bị báo lỗi không save được, hệ thống báo lỗi marco vb project gì đó cháu chọn Yes thì dữ liệu save mà khi cháu vào ứng dụng trở lại thì form cháu tạo bị mất, không biết trong lúc soạn thảo cháu có thiếu sót ở phần tạo code cho form hay modul hay chạy kèm theo 1 chương trình gì không. Cháu không biết tải file đành nói lý thuyết mong bác thông cảm.
Cháu chân thành cảm ơn bác trước
cháu kính chào!
 
Upvote 0
Cháu chào bác Trungchinhs! chúc bác ngày đầu tuần thật vui vẻ, hạnh phúc thật nhiều may mắn và càng thành công trong công việc.
Cháu xem phiên bản 2015 mà chưa thật hiểu sâu về phiên bản này nên cháu quay về phiên bản lúc trước của bác.Cháu có vài chỗ không hiểu, mong Bác có thể giúp cháu hiểu được:
Một là ý nghĩa các code có kí hiệu như "Scl", "cls", "ecl" không bác?
.......

"Scl", "cls", " ecl" là tên biến tôi tự đặt thôi bạn à

S là viết tắt của từ Start; cl là viết tắt của từ column; "Scl" là cột bắt đầu. Tương tự E là viết tắt của từ End; "ecl" là cột kết thúc. "cls" là viết tắt của từ Cells. Nhìn chung tên biến chỉ là cách viết của từng người.

Do phiên bản cũ có rất nhiều hạn chế nên tôi đã viết lại phiên bản 2015. Bạn xem code mới dễ hiểu hơn vì trong đó tôi có ghi chú cho từng dòng lệnh và sử dụng phiên bản mới tiện dụng hơn nhiều.

Lưu ý: Mặc định của trương trình này là khi thoát sẽ không lưu để tránh tác động của người dùng. Nếu muốn lưu lại thì bạn phải nhấn nút Save trước khi thoát.
 
Lần chỉnh sửa cuối:
Upvote 0
Cháu chào bác trungchinhs!
Cháu rất muốn học code phiên bản 2015 mới của bác nhưng do cháu đang làm dở dang phiên bản củ nên cố gắng đeo cho hiểu.Mong bác thông cảm.
Cháu có đoạn code này:
Range("C1").Select
ActiveCell.FormulaR1C1 = "=NOW()"
Application.ScreenUpdating = False
On Error Resume Next
Sheets("Ho so tin dung_In").[d5].Resize(10000, 250).ClearContents
With CreateObject("Word.Application")
.Visible = True
Scl = 1
Ecl = [D128]
File = [c128]
' If Selection.Column > 3 Then
' Scl = Selection.Column - 3
' Ecl = Scl
' End If
For j = Scl To Ecl
Doc = .Documents.Open(ThisWorkbook.Path & "\Hoso\" & File & ".doc")
.Documents(ThisWorkbook.Path & "\Hoso\" & File & ".doc").SaveAs Filename:=ThisWorkbook.Path & "\Nhatky\" & Cells(128, j + 3) & ".doc"
For Each cls In Range([c250], [c65000].End(3))
' If cls(1, J + 1) > 1000000000 Then
.Selection.Find.Execute cls, , , , , , , , , Sheets("Ho so tin dung").Range(cls(1, j + 1).Address(0, 0)), 2
' ElseIf cls > 0 Then
' Sheets("Ho so tin dung_In").Range(cls(1, J + 1).Address(0, 0)) = "=IF(TYPE(FIXED(Ho so tin dung!RC,1))=16,Ho so tin dung!RC,FIXED(Ho so tin dung!RC,1))"
' .Selection.Find.Execute cls, , , , , , , , , Sheets("Ho so tin dung_In").Range(cls(1, J + 1).Address(0, 0)), 2
' End If
Next
.Selection.Find.Execute "_", , , , , , , , , "", 2
' .Documents(ThisWorkbook.Path & "\" & Cells(5, j + 3) & ".doc").Close (True)
Next
' .Quit
End With
End Sub
Do cháu tải file lên định nhờ bác kiểm tra dùm nhưng cháu bấm phần tải file nhưng không có tín hiệu gì để cháu tải được nên đành sử dụng cách này, mong bác thông cảm.
Với dữ liệu trên sheet của cháu như sau: cháu kể ô từ cột B đến Cột D, cột A bỏ trống, cột C dòng 1 dữ liệu C1 là now(), với code như trên thì dữ liệu của cháu bắt đầu từ row số 5; row 3 và 4 thì bỏ trống, row 2 cột C và D lần lượt là Từ bị thay thế và Từ được thay thế.
Khi run cháu bị lỗi đoạn code scl = 1.
Mong bác giúp đỡ cháu, cháu không hiểu scl bắt đầu từ Cột A hay là cột nào hả Bác?
Trân trọng cảm ơn bác giúp đỡ.
 
Upvote 0
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
 
Upvote 0
Web KT
Back
Top Bottom