Excelの2つのファイル(東西、南北)から、PowerPointの1つのファイル(「一覧」)へ画像を貼り付ける作業がよくあるのですが、手順を簡素化するアイディアは有りませんでしょうか?
貼り付ける目的は、画像が重たい(Excel30000行分x10系列)ので、軽くするため&東西と南北を並べて一覧にするためで、
グラフをPowerPointに「形式を選択して貼り付け>拡張メタファイル」し、
→それをすぐ切り取って、PowerPointに「形式を選択して貼り付け>png」します
が(1回目の変換ではpngが選べない)、この手順は業務命令で指示されているので、変えられません。(私自身は二度変換する意味自体を良くわかっていませんが、それはこの質問と直接関わりありません)
これをグラフ40枚分行うのですが、自動化するか(マクロの組み方は私は知りません)、pngへ一括変換・一発変換する方法はありませんか?(現状、1枚当たりに相当な時間がかかっています。)
XPでExcel2003で、PowerPointも2003だと思います。
No.2ベストアンサー
- 回答日時:
補足ありがとうございました。
具体的に書いていただき、回答するに励みになりました。
どうも PP のグラフィックは美しくありません。Excel や Word と比較してそう思います。
経験からアドバイスすると Excel のグラフを最もきれいに、かつ軽量にPP に貼り付けるには、
1. Excel で次の VBA を実行し、グラフをピクチャー(ここでは拡張
メタファイル)としてコピーする
ActiveChart.CopyPicture xlScreen, xlPicture
2. PowerPoint にそのままで貼り付け
という手順が良いと思います。PP 側で「形式を選んで・・・」で拡張メタファイルにしても画質が明らかに落ちてます。
# Excel2003、2007 ではわかりませんが。
下記は、アクティブブック内にある全てのグラフを PP に貼り付けます。
もともとのデータが大きいみたいですから、ある程度時間はかかるでしょう。とりあえず、お試しを。
' // 標準モジュール
Sub XLグラフをPPに貼り付け()
' // グラフウインドウとなっているものは対象外です。
Dim ppApp As Object ' PowerPoint.Application
Dim ppPst As Object ' PowerPoint.Presentation
Dim ppSld As Object ' PowerPoint.Slide
Dim Sh As Worksheet
Dim Obj As Object
Dim iCount As Integer
Dim sngPosOffset As Single
Dim i As Long
' // PowerPoint(以下PP) 定数
Const ppLayoutBlank = 12
Const ppPasteEnhancedMetafile = 2
' // PP 起動
On Error Resume Next
Set ppApp = CreateObject("PowerPoint.Application")
If ppApp Is Nothing Then Err.Raise 1000, , "PowerPoint cannot be started."
On Error GoTo Err_
' // PP を表示する
ppApp.Visible = True
' // PP 新規プレゼンテーション作成
Set ppPst = ppApp.Presentations.Add(WithWindow:=True)
' // PP 新規スライド挿入
Set ppSld = ppPst.Slides.Add(Index:=1, _
Layout:=ppLayoutBlank)
' // XL 処理グラフ数カウンタ
iCount = 0
' // PP グラフ貼り付け位置初期値
sngPosOffset = 0
' // XL グラフの貼り付け開始
For Each Sh In ActiveWorkbook.Worksheets
For i = 1 To Sh.ChartObjects.Count
' // XL グラフを Picture 形式でコピー
Sh.ChartObjects(i).CopyPicture xlScreen, xlPicture
' // PP 貼り付け
ppSld.Shapes.Paste
' // PP グラフ位置・サイズ補正
With ppSld.Shapes(i)
.LockAspectRatio = msoTrue
.Top = sngPosOffset
.Left = sngPosOffset
.Height = .Height * 0.5 ' // 50%縮小
End With
' // PP 次の貼り付け位置オフセット
sngPosOffset = sngPosOffset + 20
' // XL 処理グラフ数カウンタ
iCount = iCount + 1
Next i
Next Sh
If iCount = 0 Then ppApp.Quit
MsgBox CStr(iCount) & "枚のグラフを処理しました", vbInformation
Bye_:
On Error GoTo 0
Set ppApp = Nothing: Set ppPst = Nothing
Set ppSld = Nothing: Set Sh = Nothing
Exit Sub
Err_:
MsgBox Err.Description, vbCritical
Resume Bye_
End Sub
No.3
- 回答日時:
追伸
どうしても PNG でなければダメなようなら、その旨補足して下さい。
別の方法で回答します。
この回答への補足
本題からそれ過ぎるのも良くないので、この質問ページは今夜24時以降に締め切る予定です、と前置きします。
>> PP のグラフィックは美しくありません。
全く同感です(それほどモノを知っているわけではありませんが)。でもPNGってこんなものかな、と思っていたのですが、むしろPPの性質に依るところが大きいのですね。メタファイルについても不満を持っていました。特に、グラフ内のテキストボックスが大きさ・位置関係が変わってしまうのを意のままに制御できず、もどかしいです。しかし、メタファイル形式はメタファイル形式で利点もあるようだから、おっしゃるように適切に使いわけることが肝要みたいですね。長く答えていただいたおかげで関心を持つきっかけになりました。
VBAについて、もマクロについて、も勤め先の他人まかせにしていて、学ぼうという姿勢に欠けていました。実は私はMSDOSは3年、日本語BASICは5年勉強して、プログラミングも多数したことがあり、TurboPASCALは3日間、JAVAは3週間独学したことがあります。しかし、BASICの頃の思いこみが強過ぎて、行番号のない言語、特にJAVAの「オブジェクト指向」や「クラス」という概念が頭に入ってきませんでした。
#2で書いていただいたプログラム(これも「マクロ」と呼べば良いのでしょうか?)は、言語こそ知りませんが、初めて「理解できる」VBAでした。とてもきれいなプログラムを書く人ですね。ありがとうございます。
(お礼へ続く)
(補足の続き)
これを読み解くと、VBAを自分でも書いてみようかな、という自信がわいてきました。なるほど、「こんなことできたらいいな」は「自分で書いてみる」という前向き姿勢が大切なのですね。「Excelは不便だなぁ。こんなことできないかなぁ。なんだできないのか」と思うことが実はあったのですが、逆にExcelは「やってみたいこと」をたいてい実現できる、自由度の高いアプリなのかも知れない、と思い直しました。
VBAが用意され、Office内や、社外品とも互換性が高いこと自体、Microsoftは私の思っていた以上に「やる」企業なのかも知れません。WikipediaのVBA項目に
「Visual Basic for Applications を使用することで、ExcelやAccessなどを使用した定型業務を自動化することができる。また、ユーザー独自のフォームを作成することができ、様々なプラグインを組み込むことでアプリケーションの機能をカスタマイズすることなども可能である。」
と書いてありましたが、まさにその通りですね。
#2で書いていただいたプログラムを、私自身で解釈し改良できるように勉強して、使ってみよう、と思いました。これもチンプンカンプンでなく「私にもできそう」というヒントを与えてくださったKenKenSPさんのおかげです。ありがとうございました。
もしよろしければ、
・VBAは(他の言語と比べて)とっつき易いか。極端な話、中学校でも教えられるくらいユニバーサルか。
・VBAを学び始めた時は、どんなものを参考に(2000円くらいの本?)し、どんなプログラムから始めたか
などを続報で教えてください。
No.1
- 回答日時:
> この手順は業務命令で指示されているので、変えられません。
変えられないものに対して新たな方法を回答したとしても解決に
ならないというか..その辺はどうなんです?
回答としては、VBA を使えば省力化は可能です。
> 画像が重たい(Excel30000行分x10系列)ので、軽くする
> ため&東西と南北を並べて一覧にするためで
Excel30000行分x10系列とは?
東西と南北とは?
あなたの業務を知らない人がほとんどなのですから、現状がよく
わかるように具体的に説明して下さい。
VBA を使えば Excel ファイル内にある全ての グラフ・写真を
PNG ファイルで直接書き出すことも、それを PowerPoint に
自動で貼り付けていくことも可能です。
が、現状がわからないことにはどうしようもない。
> 二度変換する意味
標準機能で Excel では グラフ-->PNG 変換ができないからだと
思いますが、本当の意図は不明です、、というか謎ですね。
そもそも「軽く」という点を一番重視するのであれば、グラフなら
拡張メタファイル(以下 EMF)で貼り付けたままにすべきです。
# ラスタ画像とベクタ画像の違いを調べて下さい
EMF で貼り付けたグラフを わざわざ PNG で貼り付け直すという
ことはファイルサイズを不必要に巨大化させ、画質も劣化するの
ですが。。。
ペイントなどからコピペで貼り付けた写真などなら効果はあると
思います。これは、Bitmap で貼り付いているものを PNG に変換
することでファイルサイズが小さくなる可能性があるからです。
この回答への補足
あまり長くならないように、とはしょりましたが、はしょり方がわかりにくかったようですね。ま、このご回答で知りたいことの多くは見えてきました。
東西とか南北とかいうのはあくまでも例えですが、
東の部屋について気温、湿度、二酸化炭素濃度、・・・など10系列のデータをとっており、それがエクセル3万行分くらいのデータ量なので、グラフを描画させると、時間がかかる、ということを表現したかったのです。しかもグラフが東の部屋だけで10枚あります。
西の部屋、北の部屋、南の部屋についても同様のデータを取りグラフを作っていますが、東西南北を全て一つのファイルに納めると大きいので、「東西」「南北」という2つのファイルに分けているだけのことです。
この2つのエクセルファイルは開く・閉じるだけでもかなり重たいので、グラフだけをパッと見られるように「一覧」というパワーポイントファイルを作っているわけですが、
1つ1つのグラフを、コピって貼ってまた切り取って変換して貼って、という作業が時間がかかるので、
「業務指示からは逸脱しない」範囲で、多少比較的早く、グラフを移す方法はないか、を聞きたかったのです。
私のイメージでは、エクセル上で、グラフ10~20枚をPNGに一気に変換できればなぁ、と淡く期待していたのですが。もちろん、現状たったの1枚のグラフでもめちゃくちゃ時間がかかっているので(散布図で10色の線が入り乱れている)、20枚一気に、なんてスーパーマンみたいなことはありえない(メモリ的にも)、てことはわかっています。
自動で解決する方法があることはわかりましたし、
わざわざPNGにするのはデメリットがある、ということも上司に言ってみようかと思います。役に立ちました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) PowerPoint VBA で画像の鮮明度を変更する方法がわかりません 2 2023/03/24 13:34
- Visual Basic(VBA) VBAでPowerPointからExcelにレイアウト通りに出力する 4 2023/07/05 12:22
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- PowerPoint(パワーポイント) ExcelのグラフをPowerPointに貼り付けした際にデータテーブルの小数点以下を削除したいです 2 2023/02/28 19:46
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) Excelに文字データのみを貼り付けたい 8 2023/05/03 15:38
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- その他(Microsoft Office) Microsoft365で写真をアルバム管理・共有する方法。 1 2023/04/30 08:40
- Excel(エクセル) Excelの複数ファイルの複数行を別ファイル1つのシートにVBA、マクロで集約する方法 5 2022/09/13 06:30
- Visual Basic(VBA) Outlook VBAについて 1 2023/07/10 12:41
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
スマホに会話を聞かれているな!?と思ったことありますか?
スマートフォンで検索はしてないのに、友達と話していた製品の広告が直後に出てきたりすることってありませんか? こんな感じでスマホに会話を聞かれているかも!?と思ったエピソードってありますか?
-
2024年に成し遂げたこと
今年も残すところわずか。 皆さんが今年達成したことを教えていただきたいです。 どんな小さなものでも構いません。
-
【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
「出身中学と出身高校が混ざったような校舎にいる夢を見る」「まぶたがピクピクしてるので鏡で確認しようとしたらピクピクが止まってしまう」など、 これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
-
【選手権お題その2】この漫画の2コマ目を考えてください
サッカーのワンシーンを切り取った1コマ目。果たして2コマ目にはどんな展開になるのか教えてください。
-
拡張メタファイルにて貼り付け
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでグラフタイトルが折...
-
エクセルにおける、グラフの指...
-
たくさん作った同じ設定のグラ...
-
Word
-
エクセルのグラフの一部拡大
-
Wordでレポートを作っています...
-
EXCEL・複数ある円グラフの円の...
-
エクセル(Excel)の目盛りの一...
-
excel2010 グラフエリアの外の...
-
エクセルグラフの一括設定。
-
Excelで作ったグラフをIllustra...
-
エクセルでグラフが真っ黒に。
-
エクセルでグラフをコピーする...
-
エクセル・マクロでグラフを最...
-
パワーポイントに貼り付けたエ...
-
pc版apexをしているとpcが落ちる
-
エクセルのグラフが作成した通...
-
エクセルで作成したグラフをパ...
-
EXCEL
-
EXCELでの棒グラフの太さについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでグラフタイトルが折...
-
エクセルにおける、グラフの指...
-
たくさん作った同じ設定のグラ...
-
EXCEL・複数ある円グラフの円の...
-
エクセルのグラフの一部拡大
-
パワーポイントに貼り付けたエ...
-
エクセルグラフの一括設定。
-
~エクセル~円グラフのみを抽...
-
イラレのグラフがグループ解除...
-
エクセルグラフの数値軸(Y)の...
-
エクセル(Excel)の目盛りの一...
-
エクセル:ぴったり重なった後...
-
EXCEL
-
EXCELでの棒グラフの太さについて
-
エクセルで作業ごとの時間をグ...
-
EXCELで海の潮見表(タイドグラ...
-
excel2010 グラフエリアの外の...
-
エクセルのグラフタイトルを中...
-
Excel:とびとびの日付のデータ...
-
エクセルのグラフが作成した通...
おすすめ情報