在Excel中打开Word文件

在Excel中打开Word文件,excel,vba,ms-word,Excel,Vba,Ms Word,感谢你们中的一些人的帮助,我成功地在Excel中打开了Word文件 不幸的是,我还有一些小虫子在里面。当我的word文件打开时,调试器说脚本超出范围。 理论上,我理解它,因为我们正在跳转到VBA Excel不直接提供服务的文件,尽管有可能消除这个错误吗 我的代码如下所示: Sub RamsOpen3() Dim appWD As Word.Application Set appWD = New Word.Application Dim docWD As Word.Document

感谢你们中的一些人的帮助,我成功地在Excel中打开了Word文件

不幸的是,我还有一些小虫子在里面。当我的word文件打开时,调试器说脚本超出范围。 理论上,我理解它,因为我们正在跳转到VBA Excel不直接提供服务的文件,尽管有可能消除这个错误吗

我的代码如下所示:

 Sub RamsOpen3()
 Dim appWD As Word.Application
 Set appWD = New Word.Application
 Dim docWD As Word.Document
 Set docWD = appWD.Documents.Open(ActiveWorkbook.path & "\RAMS.docx.docm")
 appWD.Visible = True
 '
 ' Data is selected and copied into "Design"
 '
 'Copy all data from Design
 Sheets("Frontsheet").Select
 Range("D18").Copy
' Tell Word to create a new document

 appWD.Selection.Paste
' Save the new document with a sequential file name
 Sheets("Sheet1").Select
 appWD.ActiveDocument.SaveAs filename:=ThisWorkbook.path & "/" & "TEST" & Range("C8").Text
' Close this new word document
appWD.ActiveDocument.Close
' Close the Word application
 appWD.Quit
End Sub

如果使用“剪切粘贴”,则必须先激活工作簿

奖金说明:

  • 您在“另存为”行中缺少文件扩展名

  • 这只粘贴在文件的顶部,如果您想转到末尾,可以添加代码

Selection.EndKey单位:=wdStory

启动后

Sub RamsOpen3()
 Dim appWD As Word.Application
 Set appWD = New Word.Application
 Dim docWD As Word.Document
 Set docWD = appWD.Documents.Open(ActiveWorkbook.path & "\RAMS.docx.docm")
 appWD.Visible = True
 '
 ' Data is selected and copied into "Design"
 '
 'Copy all data from Design
 Sheets("Frontsheet").Select
 Range("D18").Copy
' Tell Word to create a new document

 appWD.activate 'Activate the workbook here.
 appWD.Selection.Paste
' Save the new document with a sequential file name
 Sheets("Sheet1").Select
 appWD.ActiveDocument.SaveAs filename:=ThisWorkbook.path & "/" & "TEST" & Range("C8").Text & ".docm" 'NOTE: YOU must add the extension
' Close this new word document
appWD.ActiveDocument.Close
' Close the Word application
 appWD.Quit
End Sub

单词document
appWD.ActiveDocument
不存在。您的注释承诺创建它,但没有代码这样做。它应该类似于
appWD,Documents.Add
,请注意Word和Excel都有
Selection
对象。你两个都不想用。因此,不要选择任何内容,也不要复制任何选择。相反,请将要复制的值指定给可以在应用程序之间传输的变量。粘贴到现有文档还是新文档中?您在第5行打开一个新文档。粘贴到哪里?如果在Excel VB编辑器中单步执行代码,则应该能够识别发生错误的特定行。也许你可以指出这一点。除非Word正在执行某些事件代码,否则您的所有代码实际上都在Excel中执行,即使它正在自动执行Word。根据@Variatus的评论,appWd.ActiveDocument应该是与docWd不同的文档,在这种情况下,您需要确保它在那里,或者它是同一个文档,在这种情况下,您应该使用docWd.SaveAs和docWd.Close,而不是现有的代码。如果不知道是哪行代码导致了错误,则很难提供任何建议。此外,在这个网站上,错误信息应该以纯文本的形式添加到问题中,而不是作为图像的一部分。这些通常很难阅读!另一个注意事项:如果您使用的是onedrive,那么activeworkbook.path可能会对URI路径感到有点可笑,因为URI路径不喜欢反斜杠,这意味着它可能找不到文件。我应该在哪里添加以下内容:Selection.EndKey Unit:=wdStory?看起来我解决了它。将一些文本粘贴到Word中的问题将涉及到下一个问题。您需要在激活之后和粘贴之前添加“Selection.EndKey”行-激活将activewindow设置为Word文档,因此您需要在移动光标或粘贴之前将其激活。最佳做法是避免使用activewindow、selection或Paste,但在开始使用时,它最接近于手动操作。例如:剪切、alt+tab、选择、粘贴