プロが教えるわが家の防犯対策術!

グラフ作成後データが変更にされるケースがあるので、Powerpointにリンク貼り付けをしていますが、グラフ数が多いので作業短縮のためマクロ化を進めています。
Q&Aを参考に、PowerPointの起動・スライド追加まではできたのですが、PowerPointの読み取りマクロで得られたリンク貼り付けと思われる実行文で「実行エラー Selection.ShapeRange : 無効な要求です。適切な項目が選択されていません。」というエラーが発生し、お手上げの状態です。解決方法をご教授願います。

Set ppApp = CreateObject("PowerPoint.Application")
:
:
For Each Sh In ActiveWorkbook.Worksheets
For i = 1 To Sh.ChartObjects.Count
     '//対象グラフをコピー
    Sh.ChartObjects(i).Copy
    ' // PP 新規スライド挿入
    Set ppSld = ppPst.Slides.Add(Index:=i, _
    Layout:=ppLayoutBlank)
    ' // PP 貼り付け 
         ↓ここでエラー発生
    With ppApp.ActiveWindow.Selection.ShapeRange(i)
   .Height = 409.5
   .Width = 649.25
    End With
Next i
Next Sh

A 回答 (3件)

[回答番号:No.1] の DOUGLAS_ です。



>リンク貼り付け・・・
>読み取りマクロで・・・
でしたね。
 [回答番号:No.1]は取り下げます。

 私もいろいろと WEB検索 してみて
ppApp.ActiveWindow.View.PasteSpecial DataType:=ppPasteOLEObject, Link:=msoTrue
あたりでいけるかとも思ったのですが、どうも「クリップボード 経由の Excel グラフ」に見合う「DataType」がなさそうですし、大体、VBA の実行中には、PowerPoint 自体で、[形式を選択して貼り付け] - [リンク貼り付け] が グレイアウト して選択できない状態のようですので、ひょっとしたら、VBA で「リンク貼り付け」すること自体無理なのかも知れません。

 ちなみに、ppApp の方を AppActivate して
Application.SendKeys "%ES%L{ENTER}"
とでもしようかと思いましたが、これでも [リンク貼り付け(L)] が グレイアウト してます。
    • good
    • 0
この回答へのお礼

DOUGLAS_さん
回答の返信が遅くなっていすみません。

ご指摘の内容をこちらでのも確認できました。おっしゃるように[リンク貼り付け] が無理なのかもしれません。

冷静になって考えると、PowerPointにグラフを貼付けた後に変更が反映される「リンク貼り付け」にこだわっていましたが、マクロで操作が自動化されるので、グラフ変更の度にグラフ貼付けをし直せばいいことで、それは何ら問題にはなりません。

折角の回答ですが、グラフを図形として貼り付ける様に変更することにしました。 

ありがとうございました。また、お騒がせしました。

お礼日時:2009/12/10 11:23

Selectしないでオブジェクトを操作したいとき、


パワーポイントでこの2つのどちらかを
自分に都合のよい使い方で使ってみて
動作の違いを比べてみてください。
(数字の1のところは必要に応じて変数や
オブジェクト名などで指定しておきます。)

With ActiveWindow.Presentation.Slides(1).Shapes.Range
With ActiveWindow.Presentation.Slides(1).Shapes(1)
    • good
    • 0
この回答へのお礼

指摘の命令文を実行してみましたが、両方とも「オブジェクトはプロパティ・メソットをサポートしていません」というエラーとなってしまいます。

回答くださった、もう一方の DOUGLAS_さん が指摘されているとおり、リンク貼り付けはサポートされたいないと判断し、別な方法で問題を回避しました。

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

お礼日時:2009/12/10 11:38

With ppApp.ActiveWindow.Selection.ShapeRange(i)


の最後の「(i)」は「(1)」ではありませんか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!