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。