トップ回答者
元の書式を保持してコピーしたい

質問
-
ExcelでVBAを利用してExcelで作成して表をパワーポイントへ貼り付けようとしています。
その際、パワーポイントへの貼り付け後も編集可能にするために、グラフィックオブジェクト形式で貼り付けたいのですが、
ActiveSheet.Range("A1:B3").Copy
ActiveWindow.Viewtype=1
ActiveWindow.View.PasteSpecial DataType:=0では、「貼り付け先のスタイルを使用」した形式になってしまいます。
Excelからのスタイルで貼り付けたいため、「元の書式を保持」の形にしたいのですが、方法がわかりません。また、OSがWindows vistaの場合、ActiveWindow.Viewtype=1を入れないとエラーになってしまいます。
ActiveWindow.ViewまわりはOSのバージョンによって挙動が変わるのでしょうか。Excel2010
PowerPoint2010
回答
-
gekkaさんご連絡ありがとうございます。
説明不足ですみません。
「パワーポイントでの編集」は、Excelが起動することは想定しておらず、パワーポイントで値が入力できる程度の
編集ができることを想定しています。
それで、「グラフィックオブジェクト形式」での貼りつけをおこないと思っていました。
VBAから対応する場合、OLE型式で貼り付ける方法がなさそうなので、
そちらの方向で調整してみます。- 回答としてマーク strawberry_66 2014年8月1日 1:42
すべての返信
-
こんな
'EXCEL VBAから実行 'Microsoft PowerPoint 14.0 Object Libraryを参照 Sub test() Dim sh As Worksheet Set sh = ActiveSheet sh.Range("A1:B3").Copy Dim pp As PowerPoint.Application Dim v As PowerPoint.View Dim sl As PowerPoint.Slide Set pp = GetObject(, "PowerPoint.Application") Set v = pp.ActiveWindow.View Set sl = v.Slide sl.Shapes.PasteSpecial DataType:=ppPasteOLEObject End Sub
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
- 編集済み gekkaMVP 2014年6月19日 16:01
-
こちらの環境ではMicrosoft PowerPoint 15.0 Object Libraryだったので、
そちらで確認したところ実行時にエラー(429:ActiveXコンポーネントはオブジェクトを作成できません)
のエラーが発声しています。
PowerPoint2010は14.0でPowerPoint2013は15のはずです。2013が存在しない環境で2013を実行しようとすればエラーになります。
#以前に2013をいれたかしてアンインストールに失敗したとか?VBAのコード入力が楽になるようにPowerPoint xx Object Libraryを参照としましたが、必要ないなら参照しないでも実行できます。この場合は Dim ○○ as PowerPoint.xxxxはDim ○○ as Variantかas Objectとする必要はあります。
また、OLEで形式での貼りつけの場合、貼りつけ後にパワーポイントでの編集は可能なのでしょうか。
EXCELもインストールされていればPowerPoint内でEXCELが起動してEXCELとして編集できます。
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
-
gekkaさんご連絡ありがとうございます。
説明不足ですみません。
「パワーポイントでの編集」は、Excelが起動することは想定しておらず、パワーポイントで値が入力できる程度の
編集ができることを想定しています。
それで、「グラフィックオブジェクト形式」での貼りつけをおこないと思っていました。
VBAから対応する場合、OLE型式で貼り付ける方法がなさそうなので、
そちらの方向で調整してみます。- 回答としてマーク strawberry_66 2014年8月1日 1:42