Excel To Word Macro - Mẹo Excel

Mục lục

Cảm ơn Jake, người đã cung cấp câu hỏi Excel của tuần này:

Làm cách nào để viết macro lấy dữ liệu bảng tính Excel và tạo tệp Word cho mỗi hàng dữ liệu?

Jake - thật là một ý tưởng tuyệt vời! Tôi thường có kết quả bán hàng cho toàn bộ công ty và sẽ thật tuyệt nếu có thể gửi cho mỗi đại diện chỉ thông tin của họ trong Word. Bạn có thể làm điều này từ Word bằng cách sử dụng Mail Merge, nhưng điều khiển Word từ Excel là một triển vọng thú vị. Ví dụ dưới đây khá đơn giản, nhưng người ta có thể dựa trên khái niệm này để thực hiện các ứng dụng khá nâng cao.

Đầu tiên, chúng ta hãy xem một tập dữ liệu mẫu. Tôi đã tạo một sổ làm việc với hai trang tính - một có tên là Dữ liệu và một có tên là Mẫu. Trang tính Dữ liệu có nhiều hàng dữ liệu. Trang tính Mẫu có cấu trúc của Tài liệu Word mà tôi muốn tạo. Trong trường hợp này, tôi sẽ muốn sao chép tên từ cột A của cơ sở dữ liệu vào ô C4 trên mẫu. Các cột B: E của cơ sở dữ liệu sẽ nằm trong các ô C10: C13.

Đầu tiên, chúng ta hãy xem một tập dữ liệu mẫu. Tôi đã tạo một sổ làm việc với hai trang tính - một có tên là Dữ liệu và một có tên là Mẫu. Trang tính Dữ liệu có nhiều hàng dữ liệu. Trang tính Mẫu có cấu trúc của Tài liệu Word mà tôi muốn tạo. Trong trường hợp này, tôi sẽ muốn sao chép tên từ cột A của cơ sở dữ liệu vào ô C4 trên mẫu. Các cột B: E của cơ sở dữ liệu sẽ nằm trong các ô C10: C13.

Bảng dữ liệu
Trang tính mẫu

Khởi động VB Editor bằng alt-F11. Vì chúng tôi muốn đưa ra các lệnh Word ở đây, hãy đi tới Công cụ> Tham khảo. Cuộn xuống để tìm "Microsoft Word 8" và chọn hộp bên cạnh để chọn mục này.

Để điều khiển Word từ Excel, bạn cần xác định một biến để đại diện cho ứng dụng Word. Trong ví dụ dưới đây, tôi đã sử dụng appWD. Đối với bất kỳ lệnh nào trong Excel Macro mà bạn muốn áp dụng cho ứng dụng Word, bạn chỉ cần đặt trước lệnh đó bằng appWD. Trên thực tế, vì tôi chưa bao giờ viết một dòng mã Word Macro trước đây, nên tôi đã vào Word, ghi lại các thao tác, sau đó sao chép đoạn mã đó vào Excel, thêm tiền tố vào trước mỗi dòng.

Sub ControlWord() ' You must pick Microsoft Word 8.0 from Tools>References ' in the VB editor to execute Word commands. ' See VB Help topic "Controlling One Microsoft Office Application from Another" ' for more information. ' Originally published by www.MrExcel.com 2/28/1999 Dim appWD As Word.Application ' Create a new instance of Word & make it visible Set appWD = CreateObject("Word.Application.8") appWD.Visible = True Sheets("Data").Select 'Find the last row with data in the database FinalRow = Range("A9999").End(xlUp).Row For i = 2 To FinalRow Sheets("Data").Select ' Copy the name to cell C4 Range("A" & i).Copy Destination:=Sheets("Template").Range("C4") ' Copy data columns, transpose and paste in C10:C13 Range("B" & i & ":E" & i).Copy Sheets("Template").Select Range("C10").PasteSpecial Transpose:=True ' Copy the data for the new document to the clipboard Range("A1:F15").Copy ' Tell Word to create a new document appWD.Documents.Add ' Tell Word to paste the contents of the clipboard into the new document appWD.Selection.Paste ' Save the new document with a sequential file name appWD.ActiveDocument.SaveAs FileName:="File" & i ' Close this new word document appWD.ActiveDocument.Close Next i ' Close the Word application appWD.Quit End Sub

Sau khi chạy macro này, bạn sẽ có một tệp Word mới cho mỗi hàng dữ liệu trên bảng dữ liệu của mình.

Một lần nữa cảm ơn Jake vì câu hỏi tuyệt vời này. Có nhiều ứng dụng mà việc kiểm soát Word từ bên trong Excel có thể cung cấp một giải pháp mạnh mẽ.

thú vị bài viết...