如何将图表从Excel传输到Word

如何将图表从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

此函数创建word文档,保存并关闭它,但在尝试重新打开时失败。上面说远程通话不起作用。重新打开word文档的正确做法是什么?还是没有必要再次关闭和打开?word和excel之间的通信似乎有困难

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文档中编辑图表)