2014-01-23 796 views
3

我还没有使用VB多年,所以请原谅我,如果这显而易见。我正在尝试编写一个单词vba宏用于模板,该模板将显示一个用户表单,然后根据用户表单导入fileA.docx,fileB.docx或fileC.docx的内容。 (之后,我将使用书签填写一些表单数据,我不知道这是否相关)。文件A,B和C将包含带有一些基本格式(例如列表)的文本,但没有什么特别。使用vba将word文档的内容复制到另一个word文档中

我在网上看到的解决方案可以将文件的内容复制到一个新文件中,但理想情况下我想将其中一个文件的全部内容导入到新的当前未命名的文件中,模板。我认为我遇到的问题是将选择切换到其中一个文件,然后返回到新的未命名文档,尽管我可以用手来确保我也正确复制。


更新:我让事情太难了,尽管这里的答案让我指出了正确的方向(谢谢!)。最后,我刚刚做了

ThisDocument.Activate 

Selection.InsertFile("fileA") 

这给了我想要的一切的原始转储。

回答

2

录制宏...

  1. 开始在源文件
  2. 按Ctrl-A选择一切
  3. 按CTRL-C将它复制到剪贴板
  4. 切换到目标文件
  5. 按ctrl-v粘贴到文档中
  6. 停止录制

或(假设字2007或更高版本)与源文档的目标文档中

  1. 开始从文件功能区单击插入>对象>文本关闭
  2. ...
  3. 导航到源文件
  4. 单击插入按钮
  5. 停止录制

我更喜欢第二个版本,所以我应该把它放在第一

+0

这能融入我的用户窗体VBA脚本?重点是我需要根据用户输入选择将哪个文件转储到当前文档中。我想避免复制userform代码来填充每个fileA,fileB等字段。 – user3229306

+0

是的。您记录为宏的任何内容都将以VBA结尾,因此可以将其粘贴到您的逻辑中并进行修改,以使用变量(而不是硬连线名称)。在VBA IDE中打开Normal> Modules> NewMacros,你会看到它。如果您在开始录制宏时命名宏,它会有所帮助。 – casgage

5

使用命令,如这些,你可以切换之间哪个文档您正在使用复制并粘贴元素:

ThisDocument.Activate 'Sets the main document active 
Documents("Name.doc").Activate 'Activates another document 

可以插入,复制并使用复制命令将文件粘贴到文档中和粘贴文档之外。

ThisDocument.Range.InsertAfter("String") 'Insert text 

Selection.WholeStory 'Select whole document 
Selection.Expand wdParagraph 'Expands your selection to current paragraph 
Selection.Copy 'Copy your selection 
Documents("name.doc").Activate 'Activate the other document 
Selection.EndKey wdStory 'Move to end of document 
Selection.PasteAndFormat wdPasteDefault 'Pastes in the content 

然后,您可以去格式化,或将它们复制并粘贴到原始格式中。

0

我在做同样的事情,试图选择其他文档,复制并粘贴。但它没有奏效(我收到一个错误,可能是因为其他应用程序正在使用剪贴板,但我不确定)。所以我做了一些搜索,并在Microsoft开发人员中心找到了完美的解决方案。

https://msdn.microsoft.com/en-us/vba/word-vba/articles/selection-insertfile-method-word

Selection.Collapse Direction:=wdCollapseEnd 
Selection.InsertFile FileName:="C:\TEST.DOC" 
相关问题