Vba 将现有WORD文档中的数据复制到根据模板创建的新WORD文档(以代码形式)
第一次发帖时,虽然我可能在爬之前就想跑,但我的情况如下(使用Word 2013)Vba 将现有WORD文档中的数据复制到根据模板创建的新WORD文档(以代码形式),vba,ms-word,office-2013,Vba,Ms Word,Office 2013,第一次发帖时,虽然我可能在爬之前就想跑,但我的情况如下(使用Word 2013) 我已经创建了一个Userform,其中分支a要求提供所需的所有数据 填充在我们的应用程序中使用的文档(固定格式且不能更改) 组织,例如一个特殊的例子 文档现在保存为“.docx”文件,不再包含宏(vba 代码)。到目前为止还不错 分支B旨在允许加载在中创建的现有文档 分支机构A(如上所述)。此现有文档中的数据现在应为 复制到双击时创建的新文档中嵌入的Userform- 单击模板,允许更新各种字段,同时避免 需要重
- 我已经创建了一个Userform,其中分支a要求提供所需的所有数据 填充在我们的应用程序中使用的文档(固定格式且不能更改) 组织,例如一个特殊的例子
- 文档现在保存为“.docx”文件,不再包含宏(vba
代码)。到目前为止还不错 - 分支B旨在允许加载在中创建的现有文档 分支机构A(如上所述)。此现有文档中的数据现在应为 复制到双击时创建的新文档中嵌入的Userform- 单击模板,允许更新各种字段,同时避免 需要重新输入未更改的详细信息(随后保存 作为“.docx”)
- 我可以通过双击模板和 然后通过命令按钮,执行代码以打开预先存在的文档
这个文档的实例
代码正在“文档生成器”下执行
我想在(DOC Generator)中提取/复制到userform的数据是
此文档
已填写
当我在userform中编辑完信息后,我将
保存此文档
(文档1),就像我在创建
全新的文件
我遇到的困难是,如何引用现有文档中的ActiveX控件以将其复制到userform
像这样的东西
txt_Author = ThisDocument.lbl_AssessingOfficer.Caption, where
- txt_Author是userform中的一个文本框
-此文档.lbl\u AssessingOfficer.Caption
旨在指现有文档(已填充)中保存数据的标签
除了当我测试这个时,ThisDocument
或ActiveDocument
都会拾取
此文档中的数据
(文档1)
如何引用本文档(已填写)下的标签(数据)
提前感谢您的帮助和耐心。如果我能如此大胆,如果
可能在回答时,如果您能解释代码引用是如何工作的,这将对我(可能还有后续的其他人)非常有帮助。每个Word文档都有一个
ThisDocument
对象。
如果您编写的VBA代码使用ThisDocument
,则该对象始终指向与代码位于同一文件中的ThisDocument
对象<另一方面,code>ActiveDocument始终指向Word中处于活动状态的文档,即此时在Word窗口中可见的文档。如果可能的话,尽量避免使用ActiveDocument
,因为它可以指向与您所想不同的文档
为了访问代码所在对象以外的文档
对象,您不能使用此文档
,因此您可以创建对其他文档的引用:
Option Explicit
Sub FindOtherDocument()
Dim oOtherDocument As Document
Set oOtherDocument = Application.Documents("Filled.docx")
Call MsgBox("This is the name of the file which oOtherDocument points to: " & oOtherDocument.FullName)
End Sub
注意:
Application.Documents()
用于访问已打开的文档。如果文档已关闭,则需要使用Application.Documents.open()
打开它,或者使用Application.Documents.Add()
创建一个新文档,两者都返回document
对象。考虑到奥利的声誉,您可能会想到,奥利的回答是正确的。但我
仍然被卡住,每次我试图从之前填写的文档复制一个值时,我都会收到
“运行时错误'438'对象不支持此属性或方法”
事实证明,将文件类型更改为启用宏的文档(编辑文件扩展名)是关键。如果您已经阅读了上面的内容,那么在使用userform界面创建文档之后,我已经将数据复制并保存到了“.docx”中(这会删除VBA代码…我不希望包含此内容)
但是,这个文件扩展名似乎也阻止了与原始userform(编辑我编写的现有函数)关联的VBA代码在“填充”文档中执行任何操作
所以,再次感谢奥利,还有其他人,请注意这一点 奥利,谢谢你。还是卡住了。模块1中包含“公共文档作为文档”的代码。我得到“错误434”。当我试图复制数据时。代码类似于:DestinationName=oOtherDocument.Lbl_DestinationName12Pg1.Caption,其中DestinationName是用户表单中的文本框,而oOtherDocument.Lbl_DestinationName12Pg1.Caption应该引用位于“Filled.docx”标签中的文本(最初从DestinationName接收文本)。因此,值转换为DestinationName(userform=手动输入)=>Lbl\u DestinationName12Pg1.Caption=>模板中的新文档。我的错误?奥利,谢谢你。还是卡住了。模块1中包含“公共文档作为文档”的代码。我得到“运行时错误'438'对象不支持此属性或方法”,代码为:DestinationName=oOtherDocument.Lbl_DestinationName12Pg1.Caption DestinationName是userform+oOtherDocument.Lbl_DestinationName12Pg1中的文本框。Caption应该引用位于“Filled.docx”标签中的文本(最初从DestinationName接收到文本)。因此,值转换为DestinationName(userform=手动输入)=>Lbl\U DestinationName12Pg1.Caption=>模板中的新文档。我的错误?