none
元の書式を保持してコピーしたい RRS feed

  • 質問

  • 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

    2014年6月19日 8:58

回答

  • gekkaさんご連絡ありがとうございます。

    説明不足ですみません。
    「パワーポイントでの編集」は、Excelが起動することは想定しておらず、パワーポイントで値が入力できる程度の
    編集ができることを想定しています。
    それで、「グラフィックオブジェクト形式」での貼りつけをおこないと思っていました。
    VBAから対応する場合、OLE型式で貼り付ける方法がなさそうなので、
    そちらの方向で調整してみます。

    2014年7月9日 8:49

すべての返信

  • こんな

    '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
    2014年6月19日 16:00
  • gekkaさんご連絡ありがとうございます。

    こちらの環境ではMicrosoft PowerPoint 15.0 Object Libraryだったので、
    そちらで確認したところ実行時にエラー(429:ActiveXコンポーネントはオブジェクトを作成できません)
    のエラーが発声しています。
    また、OLEで形式での貼りつけの場合、貼りつけ後にパワーポイントでの編集は可能なのでしょうか。

    2014年6月27日 0:53
  • こちらの環境では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!)

    2014年6月27日 3:59
  • gekkaさんご連絡ありがとうございます。

    説明不足ですみません。
    「パワーポイントでの編集」は、Excelが起動することは想定しておらず、パワーポイントで値が入力できる程度の
    編集ができることを想定しています。
    それで、「グラフィックオブジェクト形式」での貼りつけをおこないと思っていました。
    VBAから対応する場合、OLE型式で貼り付ける方法がなさそうなので、
    そちらの方向で調整してみます。

    2014年7月9日 8:49