访问另一个Word文档TextBox

时间:2015-06-23 17:16:19

标签: vba ms-word word-vba

在我的单词" sheet"中,我有一个 CommandButton ,当点击它时会触发一段代码,这部分代码主要是关于打开第二个word文档并插入一些从当前信息( Document1 )到第二个信息( Document2 TextBox

我的字符串变量包含一个word文档中的文本(e.i。 Document1 )。我正在打开第二份文件(e.i。 Document2 )。然后,我需要从 Document2 到达特定的 TextBox ,并在其中插入我已经拥有的 String 变量之一的值。 / p>

话虽这么说,我无法访问第二个文档( Document2 ),因为我总是得到" 4160错误"文件名不正确的结果。

因此,如何访问我的第二个文档( Document2 TextBox 并在其中插入我已有的特定值?

我的代码如下(简化为一个变量,因为它与其他变量相同):

Private Sub btn1_Click()
    Dim strFile As String
    Dim WordApp As New Word.Application
    Dim WordDoc As Word.Document
    Dim name As String

    strFile = "C:\Users\WhateverUser\Desktop\WhateverFolder\Document2.docx"

    name= txtBoxName.Text
    'This comes from the first document (Document1) which is correct.

    ' Opening another Word document (Document2)
    Set WordDoc = WordApp.Documents.Open(strFile)
    WordApp.Visible = True

    'Here is the problem
    'Trying to access the Document2 TextBox (txtBoxNameDoc2) with various ways but I always get the Incorrect File Name Error

    'First I tried
    Documents("Document2.docx").Bookmarks("txtBoxNameDoc2").Range.Text = name
    'Then I tried

    Documents("Document2.docx").txtBoxNameDoc2.Text = name
    'And after those, I went looking on internet and tried what I could find but none did work.

End Sub

1 个答案:

答案 0 :(得分:2)

我可以推测上面提供的编码中的一些错误,但如果此行无效则返回错误:

Set WordDoc = WordApp.Documents.Open(strFile)
WordApp.Visible = True

你应该能做到:

WordDoc.Bookmarks(txtBoxNameDoc2).Range.Text = name

这是因为您已经打开了" Document2.docx" 此外,您已将其专门分配给WordDoc对象变量。因为您已完成此操作,所以您无需像在原始代码中那样从Documents集合中明确引用它。

NB:这假设txtBoxNameDoc2是标识WordDoc文档中书签的有效字符串。如果它应被解释为文字字符串(即,它是书签的实际名称,那么您需要使用引号来限定它,例如:

WordDoc.Bookmarks("txtBoxNameDoc2").Range.Text = name

如果这继续引发错误,则指定的书签不存在。

可以为TextBox对象分配书签。书签不会自动"存在于文档中,因此首先必须确保存在这样的书签。您可以查看这些内容并通过功能区分配它们(如果它们不存在)。

书签除非您创建,否则不存在。您已经假设对象的名称也可以引用书签,而可以,首先您需要创建书签并分配它您想要引用它的名称。