Điều khiển Word từ Excel bằng VBA trong Microsoft Excel 2010
Nhiều lần, bạn phải sao chép dữ liệu từ tệp excel sang tài liệu word. Bạn có thể làm điều này với một macro rất dễ dàng. Macro sẽ mở một tài liệu từ mới / hiện có, sao chép nội dung, sau đó lưu và đóng tài liệu từ. Hãy xem cách này được thực hiện.
Mã mà bạn có thể sử dụng là – Option Explicit _Sub CreateNewWordDoc ()
Dim i As Integer Dim wrdApp As Object, wrdDoc As Object Set wrdApp = CreateObject (“Word.Application”)
wrdApp.Vible = True Set wrdDoc = wrdApp.Documents.Add With wrdDoc For i = 1 to 100 .Content.InsertAfter “Đây là dòng kiểm tra ví dụ #” & i .Content.InsertParagraphAfter Next i If Dir (“B: \ Test \ MyNewWordDoc.docx ”) <>“ ”Sau đó giết“ B: \ Test \ MyNewWordDoc.docx ”.SaveAs (“ B: \ Test \ MyNewWordDoc.docx ”)
Set wrdApp = CreateObject (“Word.Application”) _ Nếu Word đã chạy trong hệ thống của bạn, _CreateObject sẽ tạo một phiên bản Word mới. Vì vậy, dòng này gán biến đối tượng wrdApp cho Ứng dụng Word mà bạn có thể sử dụng sau này trong mã .
wrdApp.Vosystem = True Phiên bản Word mới được tạo sẽ không hiển thị khi nó được tạo. Để hiển thị nó, bạn cần đặt wrdApp.Vosystem = True để nó hiển thị.
Set wrdDoc = wrdApp.Documents.Add Chúng tôi đã tạo phiên bản mới của ứng dụng từ nhưng chúng tôi chưa mở tài liệu từ trống. Vì vậy, lệnh này sẽ mở một tài liệu từ mới. Đối tượng wrdDoc đã được gán cho tài liệu mới này để chúng tôi có thể sử dụng nó sau này trong mã.
Trong trường hợp bạn không muốn mở một sổ làm việc mới nhưng mở một sổ làm việc hiện có, thì bạn có thể thay thế dòng này bằng _Set wrdDoc = wrdApp.Documents.Open (“B: \ My Documents \ WordDocs \ Doc1.docx”) _ Dòng này mở ra một tài liệu word hiện có đã được lưu tại vị trí được chỉ định.
With wrdDoc… .End With Đây là vòng lặp “With” của chúng tôi sẽ hoạt động hoàn toàn với đối tượng wrdDoc. Khi bạn mở vòng lặp này, bạn không phải lặp lại văn bản “wrdDoc” trong vòng lặp này. Bạn có thể trực tiếp bắt đầu với dấu chấm (“.”)
trước bất kỳ đối tượng nào liên quan đến wrdDoc. Vòng lặp này kết thúc bằng câu lệnh End With. Khi câu lệnh End With đã được nhập, bạn không thể tham chiếu đến các đối tượng sau wrdDoc chỉ với “.”.
For i = 1 to 100 .Content.InsertAfter “Đây là dòng kiểm tra mẫu #” & i .Content.InsertParagraphAfter Next i Đây là vòng lặp “For”. Nó tăng từ 1 đến 100 và ở mỗi mức tăng, nó sẽ chèn một dòng với văn bản “Đây là dòng kiểm tra mẫu #” và sau đó thêm số tăng. Sau đó, nó chèn một dấu ngắt dòng / ngắt đoạn để gia số tiếp theo xuất hiện trên dòng tiếp theo, giống như một đoạn văn mới.
Vì vậy, quá trình này sẽ được lặp lại 100 lần, vì vòng lặp for trạng thái For i = 1 đến 100. Đây là đầu ra bạn sẽ nhận được –
If Dir (“B: \ Test \ MyNewWordDoc.Docx”) <> “” Sau đó giết “B: \ Test \ MyNewWordDoc.docx” _ _ .SaveAs (“B: \ Test \ MyNewWordDoc.docx”) _ _.Close Khi vòng lặp “For” hoàn tất, mã sẽ kiểm tra xem tệp MyNewWordDoc.docx có tồn tại hay không, nếu có, nó sẽ xóa nó và sau đó nó sẽ lưu tệp mới với cùng tên này và đóng tệp.
wrdApp.Quit Set wrdDoc = Nothing Set wrdApp = Nothing Ứng dụng word được đóng và sau đó 2 đối tượng đã được tạo sẽ được giải phóng hoặc đặt thành “Không có gì”, để giải phóng bộ nhớ bị chiếm bởi các đối tượng này. Đây là toàn bộ đoạn mã đảm nhiệm việc sao chép nội dung từ excel sang word.