Excel宏(Microsoft Excel)中的Word文档
Eric有一个包含公司信息的Excel数据库。他想使用Excel宏将地址和信息从数据库复制到不同的Word文档中。埃里克(Eric)好奇如何使Excel宏打开将要粘贴信息的特定Word文档。
一种完成此任务的方法是不使用Excel。而是使用Word的邮件合并功能从Excel数据库中提取信息。
如果要根据定义明确的信息创建文档,则此方法最有效。但是,如果您需要打开一系列文档并将数据从Excel数据库复制到文档中,则邮件合并将无法解决问题。
Word具有使用宏与不同的Office应用程序一起使用的特殊名称:Office Automation。创建Office Automation宏比创建仅在特定应用程序(例如Excel)中工作的宏要复杂一些。您可能想要做的一件事情是下载一个免费的帮助文件,其中包括有关Office Automation应用程序的大量信息。您可以从下面的Microsoft页面下载文件:
http://support.microsoft.com/kb/302460
从Excel宏中打开Word文档的基本过程是创建一个引用Word应用程序的对象,然后使用该对象打开文档。以下代码说明了此概念:
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
您需要更改要打开的文档的路径和文档名称,但是此代码很好地演示了打开文档需要执行的操作。按照书面说明,Word文档(实际上是整个Word应用程序)将在屏幕上不可见。如果您希望使应用程序可见,则应在宏的开头附近使用以下代码行:
wdApp.Visible = True
从Excel宏内部处理Word文件的另一种方法是使用DDE和SendKeys函数复制信息。
请考虑以下DDE命令:
ChannelNumber=Application.DDEInitiate{ _ app:="WinWord", topic:=FullPath
DDEInitiate方法使用两个属性:app和topic。 app属性指示您正在通过DDE打开的应用程序。典型示例可以是计算器的“ calc”或“ WinWord”(在这种情况下)
用于Word应用程序。 topic属性指示您要打开的文档文件的完整路径。在这种情况下,完整路径包含在FullPath变量中。
使用此方法,您可以打开一个文档,然后使用SendKeys将信息复制到该文档:
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
Copy方法用于将信息复制到剪贴板,然后SendKeys使用^ v(Ctrl + V)将信息粘贴到使用DDEInitiate打开的Word文档中。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(2423)适用于Microsoft Excel 97、2000、2002和2003。