2017-03-22 5 views
2

私はVBA初心者ですが、Excel 2010の新しいチャートを新しいWord 2010のドキュメントに書き出すことができるコードを一緒に書きました。私が持っている唯一の問題は、エクセルが更新されたときに変更されないように、エクスポートされたチャートをExcelからリンク解除することです。私はどこにでも見ましたが、何も動作していないようです。GIFとしてリンクまたは保存せずにExcelにグラフをコピー&ペーストする

法案に合っていると思われる唯一のコードは、グラフを貼り付けて貼り付ける前に画像として保存していますが、画像を保存する場所がないので機能しません - 組織のユーザーはアクセスできませんすべてのユーザーの詳細を知らなくても、私は仕事をするコードを書くことはできません。

私がこれまでに書いたコードは、仕事をしており、これをですが、リンク解除されていません。

Sub Copy_Paste_Report_1_Graph_to_new_word_document() 
' 
'Copy/Paste An Excel Chart Into a New Word Document 
'(VBE > Tools > References > Microsoft Word 12.0 Object Library) 

'Excel Objects 
Dim ChartObj As ChartObject 

'Word Objects 
Dim WordApp As Word.Application 
Dim myDoc As Word.Document 
Dim WordTable As Word.Table 

'Optimize Code 
    Application.ScreenUpdating = False 
    Application.EnableEvents = False 



'Copy Chart from Excel 
    Set ChartObj = Worksheets("External Dashboard").ChartObjects("Chart 1") 

'Create an Instance of MS Word 
    On Error Resume Next 

    'Is MS Word already opened? 
     Set WordApp = GetObject(class:="Word.Application") 

    'Clear the error between errors 
     Err.Clear 

    'If MS Word is not already open then open MS Word 
     If WordApp Is Nothing Then Set WordApp = CreateObject(class:="Word.Application") 

    'Handle if the Word Application is not found 
     If Err.Number = 429 Then 
     MsgBox "Microsoft Word could not be found, aborting." 
     GoTo EndRoutine 
     End If 

    On Error GoTo 0 

'Make MS Word Visible and Active 
    WordApp.Visible = True 
    WordApp.Activate 

'Create a New Document 
    Set myDoc = WordApp.Documents.Add 

'Copy Excel Chart 
    ChartObj.Copy 

'Paste Chart into MS Word 
    myDoc.Paragraphs(1).Range.PasteSpecial Link:=False _ 

EndRoutine: 
'Optimize Code 
    Application.ScreenUpdating = True 
    Application.EnableEvents = True 

'Clear The Clipboard 
    Application.CutCopyMode = False 
End Sub 

は、私はおそらく私が必要以上に含めましたが、私が言ったように、私はよ初心者です。

+0

'ChartObj.CopyPicture xlScreen、xlPicture'と' myDoc.Paragraphs(1)を試していないのはなぜ.Range.PasteSpecial'? – omegastripes

+0

完璧!ありがとうございました!素晴らしい仕事をした。 –

+0

解決策を回答として掲示してください。それが役に立ったら、それを受け入れるためにクリックしてください。 – omegastripes

答えて

0

使用.CopyPicture.PasteSpecial方法:

Sub Copy_Paste_Report_1_Graph_to_new_word_document() 

    Dim ChartObj As ChartObject 
    Dim WordApp As Word.Application 
    Dim myDoc As Word.Document 

    Set ChartObj = Worksheets("External Dashboard").ChartObjects("Chart 1") 
    Set WordApp = CreateObject(class:="Word.Application") 
    WordApp.Visible = True 
    WordApp.Activate 
    Set myDoc = WordApp.Documents.Add 
    ChartObj.CopyPicture xlScreen, xlPicture 
    myDoc.Paragraphs(1).Range.PasteSpecial 

End Sub 
関連する問題