使用excel 2010 vba创建一个包含多个word文件的文本的word文档

时间:2013-08-28 16:07:46

标签: excel vba excel-vba ms-word word-vba

这就是我想要做的事情:

  • 我有一张Excel工作表,用户可以在其中选择一些关键字。
  • 对于每个关键字,都有一个具有相同名称的单个Word文档,其中包含有关该关键字的一些文本。
  • 做出选择后,我希望用户点击一个命令按钮,然后创建一个新的Word文档。
  • 这个新的Word文档将包含从对应的Word文档中选择的关键字和文本。生成的Word文档的样式和格式化并不重要。将不同文本与不同文档分开的空白行就足够了。
  • 我想在Late Binding中执行此操作,因为我在VBA中添加引用时遇到问题(访问系统注册表时出错)

我应该如何开始以及在哪里寻找示例?我有中级Excel VBA经验,但完全不熟悉跨应用程序和Word属性。

1 个答案:

答案 0 :(得分:1)

正如KazJaw上面所说,作为中间VBA用户,您应该能够创建用户表单和相关代码,以便用户在您描述时选择Word文档。一旦你开始使用Word文档,就会有一些与Excel编码有所不同。

让我分享一下我对此的了解:

首先,确保已激活Word对象库:在“工具”菜单上,单击“引用”。在可用引用列表中,查找并选择相应的Microsoft Word对象库

据我了解,后期绑定只是指在分配值时声明对象类型。我不知道这是否会解决您的“错误访问系统注册表”问题。我通过首先将变量定义为通用对象来调用Word文档时使用了后期绑定:

Dim wdApp As Object
Dim wd As Object

然后定义我创建的对象:

On Error Resume Next

    Set wdApp = GetObject(, "Word.Application") 'establishing the word application

    If Err.Number <> 0 Then
         Set wdApp = CreateObject("Word.Application")
    End If

On Error GoTo 0

    Set wd = wdApp.Documents.Open("C:\YourFilePath") 'establishing a file to use

完成后,您可以使用可用的命令开始操作Word,您可以在Web上的其他位置找到所有这些命令,或者使用编译器的提示(首先输入Word.Application.ActiveDocument.}例如,您将看到可用于操作该文档的函数列表。以下是一些我使用之前定义的变量wd来引用特定文档:

                wd.Activate 'activate the word doc
                wd.PrintOut 'printout the word doc
                wd.FormFields("BundleNumber1").Result = sBundleNumber 'fill in a pre-established form field with data stored in the variable 'sBundleNumber'
                wd.Close 'close the word doc

如果您选择文档的整个内容,我认为这应该是相当紧张的(类似Word.Application.ActiveDocument.SelectAllEditableRanges,但如果您必须选择文档的子部分,您应该知道范围可以在Word中定义的方式与在Excel中定义的方式大致相同,但边缘不像Excel中的单元格那样整洁。我相信它们是由段落和中断定义的,但您必须研究如何完成此操作:我从来没有这样做过。

希望这对您创建代码有所帮助,然后社区可以对其进行争论(如有必要)。