如何将图表从Excel传输到Word
此函数创建word文档,保存并关闭它,但在尝试重新打开时失败。上面说远程通话不起作用。重新打开word文档的正确做法是什么?还是没有必要再次关闭和打开?word和excel之间的通信似乎有困难如何将图表从Excel传输到Word,excel,ms-word,vba,Excel,Ms Word,Vba,此函数创建word文档,保存并关闭它,但在尝试重新打开时失败。上面说远程通话不起作用。重新打开word文档的正确做法是什么?还是没有必要再次关闭和打开?word和excel之间的通信似乎有困难 Sub tester() Dim wordApp As Object Dim wordDoc As Object Dim appendDate As String Set wordApp = CreateObject("Word.Application") word
Sub tester()
Dim wordApp As Object
Dim wordDoc As Object
Dim appendDate As String
Set wordApp = CreateObject("Word.Application")
wordApp.Visible = True
appendDate = "Y"
fName = "robot"
If appendDate = "Y" Or appendDate = "y" Then
fName = ThisWorkbook.Path & "\" & fName & "-" & Format(Now(), "yyyymmdd-hhmm") & ".docx"
Else
fName = ThisWorkbook.Path & "\" & fName & ".docx"
End If
wordApp.Documents.Add.SaveAs2 fileName:=fName
wordApp.Documents.Close
wordApp.Application.Quit
Set wordDoc = wordApp.Documents.Open(fileName:=fPath, readOnly:=False)
ThisWorkbook.Sheets("Sheet1").ChartObjects(1).Activate
ActiveChart.ChartArea.Copy
wordDoc.Application.Selection.PasteSpecial Link:=False, DataType:=wdPasteOLEObject, Placement:=wdInLine
End Sub
我会这样做的
Option Explicit
Const wdFormatXMLDocument As Integer = 12
Sub tester()
Dim wordApp As Object, wordDoc As Object
Dim appendDate As String, FName As String
Set wordApp = CreateObject("Word.Application")
wordApp.Visible = True
appendDate = "Y"
FName = "robot"
If UCase(appendDate) = "Y" Then '<~~ Unsure of this as you are already setting the value of Y
FName = ThisWorkbook.Path & "\" & FName & "-" & Format(Now(), "yyyymmdd-hhmm") & ".docx"
Else
FName = ThisWorkbook.Path & "\" & FName & ".docx"
End If
Set wordDoc = wordApp.Documents.Add
ThisWorkbook.Sheets("Sheet1").ChartObjects(1).Activate
ActiveChart.ChartArea.Copy
wordApp.Selection.PasteSpecial Link:=False, DataType:=0, Placement:=0
wordDoc.SaveAs2 Filename:=FName, FileFormat:=wdFormatXMLDocument
wordDoc.Close (False)
wordApp.Quit
Set wordDoc = Nothing
Set wordApp = Nothing
End Sub
选项显式
常量wdFormatXMLDocument为整数=12
副测试员()
Dim wordApp作为对象,wordDoc作为对象
Dim APPENDATE作为字符串,FName作为字符串
设置wordApp=CreateObject(“Word.Application”)
可见=True
appendDate=“Y”
FName=“机器人”
如果UCase(appendDate)=“Y”,那么自从您退出Word.Application之后,就没有了wordApp
,因此文档.Open
没有可执行的环境
如果要在任何时候直接打开文件,而不首先启动应用程序,则可以使用GetObject
:
Set wordDoc=GetObject(FName)
如果以后需要在使用GetObject打开文件后对Word.Application进行寻址,请执行以下操作:
Set wordApp = wordDoc.Application
您是否需要在使用Set wordDoc
之前再次创建对象,因为您之前正在退出应用程序?在您的情况下,无需再次关闭和打开。只需操作对象,然后在结尾处将其关闭谢谢您提供的信息。我尝试了此操作,但在此行运行时出现错误“word app已停止工作:wordApp.Selection.PasteSpecial Link:=False,数据类型:=wdPasteOLEObject,位置:=wdInLine
Hmm。我正在windows 7上运行2010版。这是否意味着我需要在那里更改任何内容?不:)顺便说一句,我在Excel 2013/Win8.1中对其进行了测试。当我在一个小文本工作簿中运行它时,64位是有效的。不知道为什么它不能正确地扩展。也许太慢了。无论如何,这是我需要做的另一件事。但是,我如何将其粘贴为对象,而不是图像?(如有必要,可在word文档中编辑图表)