Tài liệu Word từ Macro Excel (Microsoft Excel)
Eric có một cơ sở dữ liệu Excel về thông tin công ty. Anh ấy muốn sử dụng macro Excel để sao chép địa chỉ và thông tin từ cơ sở dữ liệu sang các tài liệu Word khác nhau. Eric rất tò mò về cách anh ta có thể tạo macro Excel mở một tài liệu Word cụ thể mà thông tin sẽ được dán vào.
Một cách để hoàn thành nhiệm vụ này là không sử dụng Excel. Thay vào đó, hãy sử dụng tính năng phối thư của Word để lấy thông tin từ cơ sở dữ liệu Excel.
Cách tiếp cận này hoạt động tốt nhất nếu bạn đang tạo tài liệu từ thông tin được xác định rõ. Tuy nhiên, nếu bạn cần mở một loạt tài liệu và sao chép dữ liệu từ cơ sở dữ liệu Excel vào tài liệu, thì phối thư sẽ không thực hiện được thủ thuật.
Word có một tên đặc biệt để sử dụng macro làm việc với các ứng dụng Office khác nhau: Office Automation. Tạo macro Office Automation phức tạp hơn một chút so với việc tạo macro chỉ hoạt động trong một ứng dụng cụ thể, chẳng hạn như Excel. Một trong những điều bạn có thể muốn làm là tải xuống tệp Trợ giúp miễn phí bao gồm nhiều thông tin về các ứng dụng Tự động hóa Office. Bạn có thể tải xuống tệp tại trang sau của Microsoft:
http://support.microsoft.com/kb/302460
Quy trình cơ bản để mở tài liệu Word từ bên trong macro Excel là tạo một đối tượng tham chiếu đến ứng dụng Word, sau đó sử dụng đối tượng đó để mở tài liệu. Đoạn mã sau minh họa khái niệm này:
Sub OpenWord() Dim wdApp As Object Dim wdDoc As Object Set wdApp = CreateObject("Word.application") Set wdDoc = wdApp.Documents.Open _ (FileName:="C:\Path\myTestDoc.doc") ' put your code here for working with Word ' This is Word VBA code, not Excel code wdDoc.Close savechanges:=False Set wdDoc = Nothing wdApp.Quit Set wdApp = Nothing End Sub
Bạn sẽ cần thay đổi đường dẫn và tên tài liệu của tài liệu mà bạn muốn mở, nhưng đoạn mã này thể hiện rất tốt những gì cần phải làm để mở tài liệu. Khi được viết, tài liệu Word (thực sự là toàn bộ ứng dụng Word) sẽ không hiển thị trên màn hình. Nếu bạn muốn hiển thị ứng dụng, bạn nên sử dụng dòng mã này ở gần đầu macro:
wdApp.Visible = True
Một cách tiếp cận khác để làm việc với tệp Word từ bên trong macro Excel của bạn là sử dụng DDE và chức năng SendKeys để sao chép thông tin.
Hãy xem xét lệnh DDE sau:
ChannelNumber=Application.DDEInitiate{ _ app:="WinWord", topic:=FullPath
Phương thức DDEInitiate sử dụng hai thuộc tính: ứng dụng và chủ đề. Thuộc tính ứng dụng cho biết ứng dụng bạn đang mở qua DDE. Ví dụ điển hình có thể là “calc” cho máy tính hoặc “WinWord” (trong trường hợp này)
cho ứng dụng Word. Thuộc tính chủ đề cho biết đường dẫn đầy đủ đến tệp tài liệu bạn đang mở. Trong trường hợp này, đường dẫn đầy đủ được chứa trong biến FullPath.
Sử dụng phương pháp này, bạn có thể mở một tài liệu và sau đó sử dụng SendKeys để sao chép thông tin vào tài liệu đó:
Sub PasteExcel2Word() Dim channelNumber As String 'Application Handle Dim FullPath As String FullPath = 'C:\MyFolder\MyFile.Doc' 'Replace above with a file or loop of files Selection.Copy 'Assumes you hilighted what you want copied channelNumber = Application.DDEInitiate( _ app:="WinWord", topic:=FullPath SendKeys "^v", False Application.DDETerminate channelNumber End Sub
Phương thức Copy được sử dụng để sao chép thông tin vào Clipboard, sau đó SendKeys sử dụng ^ v (Ctrl + V) để dán thông tin vào Word được mở bằng DDEInitiate.
_Lưu ý: _
Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.
ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.
Mẹo này (2423) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003.