ExcelVBAからPowerPointへデータ貼付時のPasteSpecialデータタイプについて
Excel上でコピーしたデータをPowerPointへ貼り付けるVBAというのを以前書いたのですが、その貼り付ける際の形式を選ぶ、データタイプについて調べてみました。
貼り付ける形式を選びたい
こちらの記事へ質問をいただきまして、
パワポの貼り付けオプションにある「元の書式を保持」した形でペーストしたい
とのことでした。前述した記事では、
エクセルのコピー対象.CopyPicture xlScreen, xlPicture '画像としてコピー パワポの指定スライド.Shapes.Paste '貼付
のように、コピーの時点で形式を指定していたため、貼付けでは特に何もしていなかったのですが、
エクセルのコピー対象.Copy 'コピー パワポの指定スライド.Shapes.PasteSpecial DataType:=0 'データタイプを指定して貼付
このように書けば、普通にコピーした後、DataType
の数字を変えて貼付けることで形式を選べるようです。(ゼロはデフォルト)
DataTypeで選べる形式
参考URLによると、
- 0 … ppPasteDefault – デフォルトの形式
- 1 … ppPasteBitmap – BMP画像
- 2 … ppPasteEnhancedMetafile – 拡張メタファイル
- 3 … ppPasteMetafilePicture – メタファイル
- 4 … ppPasteGIF – GIF画像
- 5 … ppPasteJPG – JPG画像
- 6 … ppPastePNG – PNG画像
- 7 … ppPasteText – テキスト
- 8 … ppPasteHTML – HTML
- 9 … ppPasteRTF – RTF(リッチテキストファイル)
- 10 … ppPasteOLEObject – OLEオブジェクト
- 11 … ppPasteShape – 図形として
各番号を指定することでこのように使えるようですが、クリップボードにコピーされた内容によってデフォルトの型が異なり、サポート外の形式(元が画像なのにテキストでペーストしようとするなど)の場合、エラーになるらしいです。
私が試した感じでは、ExcelでグラフをコピーしてPowerPointへ上記のコードで貼付けを行ったら7,8,9がエラーに、セルのみだと4,5,6,11がエラーになりました。(Office2013にて)
コピー元の内容によってその結果が異なるようですので、どの形式が希望に合うかテストしてから使うのが良さそうですね。
で、どれが「元の書式を保持」なの?
これが…結局わからなかったんです、ごめんなさい…。
どうも、PowerPoint上で手動で行う貼付けのオプションでは、上記のDataType
よりも多くの機能がありそうな感じなのですが…、頑張って探してみたんですがVBAで指定出来る貼付けの形式が、わたしの力ではこれ以上見つかりませんでした…。どなたかご存知の方は是非教えてください…!
マクロの記録使えばいいじゃーんって思ってたんですが…なくなっちゃったんですね…_(:3 」∠)_
と、いうわけで、とりあえず上記の種類ならば形式を選ぶことが出来そうです。わたしも勉強になりました!
追記
コメント欄にて解決策を教えていただきました!ここよりもうちょっと下にありますので、情報お探しの方は是非どうぞー!
ExcelVBAに興味をお持ちの方は、こちらの記事もどうぞ!
- これからExcelのマクロを始めたいという方に!簡単な練習問題作りました。
- 私がExcelVBAでよく使う便利なコード・スニペットまとめ
- プログラム初心者さんへ贈る、エラーが起きたら試してみて欲しいこと
- ExcelVBAのクラスモジュールって何?という人向けの使い方まとめ
書籍を執筆しています。
4件のコメント
私も”元の形式でコピー”する方法を探していて、外国でも話題になっていました。
結果として、Excel側からのコマンドでは無理でPowerPoint側の貼り付けを使うことでうまくいきました。
※詳細はウェブサイト参照。
ただし、PowerPoint側で実行され、直ちに貼り付けたシェイプを編集しようとするとうまくいきません。
私は3秒間のタイマーを貼り付け後に入れることによってこの問題を回避しました。
※コピペの部分のみ抜粋
たかぴーさん、コメント&情報ありがとうございます!
PowerPoint側のコマンドを使えばよかったのですね…!更に3秒待つなど回避策まで、とっても有り難いです!勉強になりました(*´∀`*)
こんにちは。
タイマーだとEXCEL側データが大きいと間に合わない場合がありました。
そこで、スライド数が増えるまで待つように変更したところうまくいきました。
これで快適にスライドの量産処理が出来るようになりましたw
うおおおおおお(*゚Д゚*) たかぴーさん更なる情報ありがとうございます!!素晴らしいですー!((└(:3」┌)┘))
コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)
YouTubeでQ&Aコンテンツを企画しています
運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。