| 
    
     |  | おはようございます。 
 以下のことを実現したいのですが処理がうまくいかず、
 教えて頂きたく、投稿いたしました。
 
 (1)エクセルにあるグラフをパワーポイントに張り付けたい。
 →これは問題なく処理できる。
 (2)エクセルのシートには複数グラフがあり、1つのスライドに1つのグラフを張り付けて、全部貼り付けが完了するまで貼り付けを繰り返す。
 →2個目のグラフを2枚目のスライドに貼り付けの「領域を超えています」と処理が止まってします。
 (3)拡張メタでパワーポイントに貼り付けたグラフを切り取り、ビットマップで貼り付けを再度行いたい。
 →この部分は記述自体がよく理解できていません。
 
 (2)と(3)がうまく処理できないでいます。
 
 #################################################################
 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)   '(2)2個目のグラフ貼り付けはここで処理が止まる。
 '(3)拡張メタで貼り付けたグラフを切り取り
 .Cut
 '(3)ビットマップ形式で貼り付け
 .paste xbitmap
 .LockAspectRatio = msoTrue
 .Top = sngPosOffset
 .Left = sngPosOffset
 .Height = .Height * 0.5 ' // 50%縮小
 End With
 ' // PP 新規スライド挿入
 Set ppSld = ppPst.Slides.Add(Index:=1, Layout:=ppLayoutBlank)
 
 ' // 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
 
 よろしくお願いいたします。
 
 
 |  |