2016-04-12 4 views
0

この関数は、単語docを作成して保存して閉じますが、再オープンしようとすると失敗します。これは、リモート呼び出しでこれが動作しないと言います。どのような単語の文書を再オープンするための適切な練習ですか?それとも、もう一度閉じる必要はありませんか?言葉と才能とのコミュニケーションが難しいようです。Excelから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 
+0

はあなたが 'セットwordDoc'を使用する前に、もう一度オブジェクトを作成する必要はないのですか? – Dan

+0

あなたの場合は、もう一度閉じる必要はありません。単にオブジェクトを操作し、最後に閉じてください –

答えて

0

これがそうDocuments.Openは何を持っている、あなたはWord.Applicationを終了しているので、私はそれ

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 

スクリーンショット

enter image description here

+0

ありがとうございます。 "wordApp.Selection.PasteSpecial Link:= False、DataType:= wdPasteOLEObject、Placement:= wdInLine' – teepee

+0

私はちょうどそれをテストし、それはちょうどいい動作します。 –

+0

Hmm。私はWindows 7でバージョン2010を実行しています。それは何かを変更する必要があるのでしょうか? – teepee

0

だろう、その後wordAppこれ以上はありませんかではありません実行する環境。

は、まずあなたがGetObject使用できるアプリケーション起動せずに、直接、任意の時点でファイルを開きたい場合:Wordを対処する必要がある場合は

セットwordDoc = GetObject関数(します。FName)

を。ファイルを開くためのGetObjectを使用した後、後時点でのアプリケーション、:あなたは右の前にアプリケーションを終了しているので

Set wordApp = wordDoc.Application 
関連する問題