[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『グラフをパワポに貼り付けマクロ』(かぼ)
どなたかお知恵を貸してください。
エクセルの複数シートにそれぞれ「グラフ1」「グラフ2」等の名称のグラフが連番で複数存在しており、
そのグラフを全てマクロでタイトルスライド+グラフの数のページ数のパワポファイル(テンプレート)に自動貼り付けがしたいです。
自力で下記まで作成してみましたが、「実行」等で一気に動かすとパワポのランダムの1スライドに同じグラフが何重にも重なってしまうだけで希望通りに動きません。
ただし、ステップ実行か下記にコメントとして記載した箇所にブレークポイントを設置してF5で進めると希望通りに動きます。
ステップ実行等せず、「実行」で一気に動くようにすることは可能でしょうか。
Sub グラフ貼り付け()
Dim filepath As String Dim pptApp As Object 'PPTアプリ Dim pptPre As Object 'PPTプレゼンテーション Dim pptSld As Object 'PPTスライド Dim Ws As Worksheet Dim p As Long, s As Long, i As Long
'//ダイアログからパワーポイントファイルを選択する。 filepath = Application.GetOpenFilename("PowerPoint プレゼンテーション,*.pptx")
'//ファイル選択されている場合はファイルを開く。 If filepath <> "False" Then Set pptApp = CreateObject("PowerPoint.Application") Set pptPre = pptApp.Presentations.Open(Filename:=filepath) Else MsgBox "処理を中止します" Exit Sub End If
'//パワポの2ページ目が貼り付けのスタートとする p = 2
'//1シート目から2シート目まで繰り返し For s = 1 To 2
Set Ws = Sheets(s)
For i = 1 To Ws.ChartObjects.Count
Set pptSld = pptPre.Slides(p)
'//Selectしないとうまくスライドが選択されないことがある pptSld.Select
'//Selectしないとうまくコピーが出来ないことがある Ws.ChartObjects("グラフ " & i).Select Ws.ChartObjects("グラフ " & i).Copy
With pptSld
'//この下にブレークポイントで動く '● pptApp.CommandBars.ExecuteMso "PasteExcelChartSourceFormatting"
'//この下にブレークポイントで動く '● With pptSld.Shapes(pptSld.Shapes.Count) .LockAspectRatio = msoFalse .Top = 100 .Left = 20 .Width = 420 .Height = 270 End With
End With
p = p + 1
Next
Next
MsgBox "完了しました"
End Sub
よろしくお願いいたします。
< 使用 Excel:Excel2010、使用 OS:Windows8 >
大変参考になりました!
お蔭さまでスムーズに動くようになりました。
ありがとうございました。
(かぼ) 2016/05/23(月) 21:55
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.