1

这就是我想要做的:

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

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

4

1 回答 1

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,所有这些命令您应该能够在网络上的其他地方找到,或者使用编译器的提示(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 中的单元格那样整齐。我相信它们是由段落和中断定义的,但你必须研究这是如何完成的:我从来没有这样做过。

希望这对您创建一个可以被社区争论(如果需要)的代码有所帮助。

于 2013-08-28T22:28:11.310 回答