Excelで作成したグラフを拡張メタファイルの形式の画像ファイルとして保存する方法は無いでしょうか?

Excelで大量に作成したグラフをPowerPointに貼り付けていくマクロをVBAで書いているのですが、Excelから直接emfにする方法を見つけられずにいます。

尚、bmpやgifではなくemfにしたい理由は、PowerPointに貼り付けた後にサイズの変更をする可能性があるからです。

想定環境:
WindowsXP、Excel2003、PowerPoint2003

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2010/09/24 22:21:18
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Silvanus No.3

回答回数180ベストアンサー獲得回数71

ポイント100pt

Excel側で普通通り

ActiveChart.ChartArea.Copy

でコピーして、PP側で

Windows(1).View.PasteSpecial DataType:=ppPasteEnhancedMetafile, Link:=msoFalse, DisplayAsIcon:=msoFalse

の様な感じでペイストすれば出来ませんか?

そういう問題じゃないのかな…済みません、質問の意味を正しく理解していないかも…(汗)。

id:tobiaki

回答ありがとうございます。

この方法は、Excel側のVBAでPowerPointをコントロールするということになるのでしょうか?

私は下記のように、Excel側とPowerPoint側とで2つのマクロを書くことを考えていたので、その発想がありませんでした。

----------

Excel:

複数のグラフを一括でemfファイルとして保存。

PowerPoint:

emfファイルを取り込み。

----------

ExcelからPowerPointを操作することが可能なら、どのように書けばよいか分かるサイトなど教えていただけますとありがたいです。

2010/09/24 20:13:47

その他の回答3件)

id:RespondentsQuality No.1

回答回数47ベストアンサー獲得回数9

ポイント20pt

もしかしたら、「直接」と書いてあるので回答の趣旨とは違うかもしれませんが、一応解説しておきます。

手順1 以下のサイトの方法でエクセルのグラフを画像化します。(保存する画像形式は何でもよいです。)

http://allabout.co.jp/gm/gc/54267/

手順2 以下のサイトにあるソフトを使ってemfに変換します。

http://www.softinterface.com/Convert-Image%5CForeign%5CJapanese%...

id:tobiaki

回答ありがとうございます。

この方法は知りませんでした。参考になります。

ただ、この方法で一旦別形式の画像ファイルとして保存してからemfに変換すると、最初からemfした場合※と比べて、画質が落ちてしまいます。

emfにしたい主な理由が画質なので、今回はこの方法は使えません。

※グラフをExcelからPowerPointにコピペしたあと、PowerPointからemfにしたものと比較しました。

2010/09/24 19:52:16
id:deflation No.2

回答回数1036ベストアンサー獲得回数126

ポイント20pt

>Excelで作成したグラフを拡張メタファイルの形式の画像ファイルとして保存する方法


残念ながらありません。

id:tobiaki

回答ありがとうございます。

そうですか…。

「できない」と判断するための材料にしたいので、何か資料(マイクロソフトのドキュメントなど)があれば教えていただけませんでしょうか。

2010/09/24 20:05:39
id:Silvanus No.3

回答回数180ベストアンサー獲得回数71ここでベストアンサー

ポイント100pt

Excel側で普通通り

ActiveChart.ChartArea.Copy

でコピーして、PP側で

Windows(1).View.PasteSpecial DataType:=ppPasteEnhancedMetafile, Link:=msoFalse, DisplayAsIcon:=msoFalse

の様な感じでペイストすれば出来ませんか?

そういう問題じゃないのかな…済みません、質問の意味を正しく理解していないかも…(汗)。

id:tobiaki

回答ありがとうございます。

この方法は、Excel側のVBAでPowerPointをコントロールするということになるのでしょうか?

私は下記のように、Excel側とPowerPoint側とで2つのマクロを書くことを考えていたので、その発想がありませんでした。

----------

Excel:

複数のグラフを一括でemfファイルとして保存。

PowerPoint:

emfファイルを取り込み。

----------

ExcelからPowerPointを操作することが可能なら、どのように書けばよいか分かるサイトなど教えていただけますとありがたいです。

2010/09/24 20:13:47
id:RespondentsQuality No.4

回答回数47ベストアンサー獲得回数9

ポイント30pt

再度すいません。

ExcelからPowerPointを操作する方法を解説するサイトがありました。

http://oshiete.goo.ne.jp/qa/4636978.html

http://www.youtube.com/watch?v=SgRPf2535SM

他には、「vba powerpoint 操作」と検索するとさまざまなサイトが出てきますので参考にしてください。

http://www.google.co.jp/search?hl=ja&source=hp&biw=1024&bih=540&...

http://search.yahoo.co.jp/search?p=vba%E3%80%80powerpoint%E3%80%...

id:tobiaki

回答ありがとうございます。

教えていただいたサイトを見てExcelからPowerPointを操作する方法が分かりました。

ちょっと試してみたのですが、Silvanusさんに教えていただいたように、単純にコピペしようとすると、ペーストに失敗してうまく動きませんでした。

もう少し調べてみます。

2010/09/24 21:05:27
  • id:Silvanus
    こういう感じになります。Excel側のVBAで実行してみて下さい。
    Sub PasteXLSGraphToPPTAsEMF()
    Set oPPTApp = CreateObject("PowerPoint.Application")
    oPPTApp.Visible = msoTrue
    ActiveChart.ChartArea.Copy
    oPPTApp.ActivePresentation.Windows(1).View.PasteSpecial DataType:=ppPasteEnhancedMetafile, Link:=msoFalse, DisplayAsIcon:=msoFalse
    oPPTApp.ActivePresentation.Slides.AddSlide Index:=oPPTApp.ActivePresentation.Slides.Count + 1, pCustomLayout:=oPPTApp.ActivePresentation.SlideMaster.CustomLayouts(1)
    End Sub
    Excel側のActiveChartがPPTのスライド上にペイストされ、
    新しいスライドが1枚追加されます。
    PPTのVBAでマクロを組む実力をお持ちであれば、
    上記のマクロをご覧になっただけで続きは組めると思います。
    Excelのシート上にあるChartをFor Eachで回してCopyし、
    PPT側でPaste、スライド追加、アクティブなスライドの切り換え、元に戻って…、
    という風になります。
  • id:Silvanus
    ペイストに失敗しますか?こちらでは上手くいったのですが…はて?
    PPTの方が標準表示モードかつアクティブなペインがスライド本体に
    なっていないのではないでしょうか?
    スライド編集画面のスライド本体部分をクリックしておいて
    アクティブなペインを事前に切り換えていればエラーは出ないはずですけど。
    というか、その部分もマクロにきちんと入れおけば良い話ですよね…反省(涙)。
    oPPTApp.ActivePresentation.ActiveWindow.ViewType = ppViewSlide
    oPPTApp.ActivePresentation.ActiveWindow..ActivePane.ViewType = ppViewSlide
  • id:Silvanus
    あれれ、書き間違えてます(滝汗)。
    上記コメントのマクロ部分2行目は
    oPPTApp.ActivePresentation.ActiveWindow.Panes(2).Activate
    が正しいです。失礼しました…。
  • id:tobiaki
    >Silvanusさん
    最初にコメントいただいたコードで動きました。
    AddSlideの部分が動かなかったりはするのですが、本質的に必要なペースト部分は動きました。
    あとは自力で何とかなりそうです。

    丁寧に回答いただき大変助かりました。
    ありがとうございます。
  • id:Silvanus
    当方はMS-Office 2007なので、2003と何か違うかも…済みません。
    残りの部分、頑張って下さい!ではでは。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません