Notice: 関数 _load_textdomain_just_in_time が誤って呼び出されました。cocoon ドメインの翻訳の読み込みが早すぎました。これは通常、プラグインまたはテーマの一部のコードが早すぎるタイミングで実行されていることを示しています。翻訳は init アクション以降で読み込む必要があります。 詳しくは WordPress のデバッグをご覧ください。 (このメッセージはバージョン 6.7.0 で追加されました) in /home/xs182025/consulting-campus.site/public_html/wp-includes/functions.php on line 6114
Excel VBAでPowerPointを操作する【新規・開く・保存】 | CONSULTING CAMPUS

Excel VBAでPowerPointを操作する【新規・開く・保存】

create-and-open-and-save-ppt-with-excel-vba VBA
この記事は約9分で読めます。
スポンサーリンク

本記事では、エクセル(Excel)のVBAを使用して、パワポファイルを操作する方法をご紹介します。新規作成・既存ファイルを開く・保存するという基本的な操作と、よくあるエラーに関するトラブルシューティングについて解説していきます。

スポンサーリンク

結論

  • 事前準備 (Excel VBAでPowerPointを扱えるようにする準備)
    VBAエディタで[ツール]→[参照設定]から[Microsoft PowerPoint XXX(バージョン) Object Library]を参照に追加してください。
  • PowerPointを新規作成
    Sub CreateNewPowerPoint()
        Dim ppApp As Object, ppPres As Object
        ' PowerPointアプリケーションのインスタンスを作成
        Set ppApp = CreateObject("PowerPoint.Application")
        ' 新しいプレゼンテーションを作成
        Set ppPres = ppApp.Presentations.Add
        ' 使用後のオブジェクトを解放
        Set ppPres = Nothing
        Set ppApp = Nothing
    End Sub
  • PowerPointを開く (現在開いているファイル)
    Sub OpenExistingPowerPoint()
        Dim ppApp As Object, ppPres As Object
        ' 既に開かれているPowerPointアプリケーションにアクセス
        Set ppApp = GetObject(, "PowerPoint.Application")
        ' 現在アクティブなプレゼンテーションを取得
        Set ppPres = ppApp.ActivePresentation
        ' 使用後のオブジェクトを解放
        Set ppPres = Nothing
        Set ppApp = Nothing
    End Sub
  • PowerPointを開く (与えられたパスに存在するファイル)
    [PowerPointファイルへのパス]にはご自身でファイルパスを入力してください。
    Sub OpenPowerPointAtPath()
        Dim ppApp As Object, ppPres As Object
        Dim filePath As String
        ' ここにファイルパスを指定
        filePath = "[PowerPointファイルへのパス]"
        ' PowerPointアプリケーションのインスタンスを作成
        Set ppApp = CreateObject("PowerPoint.Application")
        ' 指定されたパスのファイルを開く
        Set ppPres = ppApp.Presentations.Open(filePath)
        ' 使用後のオブジェクトを解放
        Set ppPres = Nothing
        Set ppApp = Nothing
    End Sub
  • PowerPointを保存する
    Sub SaveCurrentPowerPoint()
        Dim ppApp As Object, ppPres As Object
        Set ppApp = GetObject(, "PowerPoint.Application")
        Set ppPres = ppApp.ActivePresentation
        ' プレゼンテーションを現在の場所に保存
        ppPres.Save
        ' プレゼンテーションを特定の場所に保存
        ' ppPres.SaveAs "PowerPointファイルへのパス"
        ' 使用後のオブジェクトを解放
        Set ppPres = Nothing
        Set ppApp = Nothing
    End Sub

解説

本セクションでは、下記の項目について丁寧に解説しています。(クリックで該当部分にジャンプします。)

事前準備 (Excel VBAでPowerPointを扱えるようにする準備)

ここでは、Excel VBAでPowerPoint関連の動作を扱うため、PowerPointオブジェクトライブラリーへの参照設定を追加しています。なお、今回の動作では参照設定を追加しなくてもエラーは起きませんが、その他の動作でエラーが起きないように設定しておくべきです。

  1. Excel上でAlt + F11キーでビジュアルエディタを開き、同画面上の[ツール][参照設定]を開きます。
  2. そして、表示された画面を下にスクロールしていき、[Microsoft PowerPoint XX Object Library]を選択し、チェックボックスがマークされている状態に設定してください。

これにより、PowerPoint VBAで使用するオブジェクトにExcel VBAからアクセスできるようになります。

PowerPointを新規作成

Excel VBAを使用して新規にPowerPointプレゼンテーションを作成するには、以下のVBAコードを使用します。これによりスライドやその他のオブジェクトを一切含まない空のプレゼンテーションが作成されます。

なお、こちらのコードは下記の流れで実装されています。

  • 変数の宣言
  • PowerPointアプリケーションインスタンスの作成
  • 新しいプレゼンテーションの作成
  • オブジェクトの開放
Sub CreateNewPowerPoint()
    Dim ppApp As Object, ppPres As Object
    ' PowerPointアプリケーションのインスタンスを作成
    Set ppApp = CreateObject("PowerPoint.Application")
    ' 新しいプレゼンテーションを作成
    Set ppPres = ppApp.Presentations.Add
    ' 使用後のオブジェクトを解放
    Set ppPres = Nothing
    Set ppApp = Nothing
End Sub

PowerPointを開く (現在開いているファイル)

Excel VBAを使用して現在開いているPowerPointファイルにアクセスするには、以下のVBAコードを使用します。ppPres現在開いているPowerPointファイルが代入されます。

なお、こちらのコードは下記の流れで実装されています。

  • 変数の宣言
  • PowerPointアプリケーションインスタンスの作成
  • 現在アクティブなプレゼンテーションの取得
  • オブジェクトの開放
Sub OpenExistingPowerPoint()
    Dim ppApp As Object, ppPres As Object
    ' 既に開かれているPowerPointアプリケーションにアクセス
    Set ppApp = GetObject(, "PowerPoint.Application")
    ' 現在アクティブなプレゼンテーションを取得
    Set ppPres = ppApp.ActivePresentation
    ' 使用後のオブジェクトを解放
    Set ppPres = Nothing
    Set ppApp = Nothing
End Sub

PowerPointを開く (与えられたパスに存在するファイル)

Excel VBAを使用して与えられたパスに存在するPowerPointファイルにアクセスするには、以下のVBAコードを使用します。ppPres与えられたパスに存在するPowerPointファイルが代入されます。

なお、こちらのコードは下記の流れで実装されています。

  • 変数の宣言
  • ファイルパスを変数に格納
  • PowerPointアプリケーションインスタンスの作成
  • 与えられたパスに存在するプレゼンテーションの取得
  • オブジェクトの開放
Sub OpenPowerPointAtPath()
    Dim ppApp As Object, ppPres As Object
    Dim filePath As String
    ' ここにファイルパスを指定
    filePath = "[PowerPointファイルへのパス]"
    ' PowerPointアプリケーションのインスタンスを作成
    Set ppApp = CreateObject("PowerPoint.Application")
    ' 指定されたパスのファイルを開く
    Set ppPres = ppApp.Presentations.Open(filePath)
    ' 使用後のオブジェクトを解放
    Set ppPres = Nothing
    Set ppApp = Nothing
End Sub

PowerPointを保存する

Excel VBAを使用してPowerPointを保存するには、以下のVBAコードを使用します。なお、別ファイルとして保存する場合はSaveAsメソッドを使用してください。

なお、こちらのコードは下記の流れで実装されています。

  • 変数の宣言
  • 現在アクティブなプレゼンテーションの取得
  • 現在のファイルを保存
  • オブジェクトの開放
Sub SaveCurrentPowerPoint()
    Dim ppApp As Object, ppPres As Object
    Set ppApp = GetObject(, "PowerPoint.Application")
    Set ppPres = ppApp.ActivePresentation
    ' プレゼンテーションを現在の場所に保存
    ppPres.Save
    ' プレゼンテーションを特定の場所に保存
    ' ppPres.SaveAs "PowerPointファイルへのパス"
    ' 使用後のオブジェクトを解放
    Set ppPres = Nothing
    Set ppApp = Nothing
End Sub

トラブルシューティング

コードをコピペしてもうまく行かない場合には、下記の状況に応じたトラブルシューティングを確認してください。クリックで対応策が表示されます。

コンパイル エラー: メソッドまたはデータメンバーが見つかりません。」というエラーが発生する

コードに問題がないのにこちらのメッセージが表示される場合、[ツール]→[参照設定]で[Microsoft PowerPoint XXX (バージョン) Object Library] が選択されているか確認してください。

正しくVBAコードを入力しているのに、PowerPointが開かない

PowerPointがインストールされているか、または別のプロセスがPowerPointを占有していないか確認してください。

おわりに

以上が、エクセル(Excel)のVBAを使用して、パワポファイルを操作する方法をご紹介します。新規作成・既存ファイルを開く・保存するという基本的な操作と、よくあるエラーに関するトラブルシューティングについての解説になります。

ご質問やご不明点がある場合はお気軽にコメントお待ちしております。

ご精読いただきありがとうございました。

コメント

  1. 藤枝 一典 より:

    ExcelのVBAでPowePointのプレゼンテーションを作成しています。
    マクロ自体はほぼ完成したのですが、最後のところでつまずいております。
    生成したPowePointのプレゼンテーションを保存する所はできましたが、
    そのプレゼンテーションをPowerPointの「最近使ったアイテム」に追加しようと試みております。単に

    Application.RecentFiles.Add Name:=PptFolder & AddFileName

    としますと、Excelの最近使ったアイテムに登録されてしまいます。また、

    PowerPoint.Application.RecentFiles.Add Name:=PptFolder & AddFileName

    とすると コンパイルエラー/メソッドまたはデータメンバーが見つかりません。

    また (PptApp はパワーポイントのオブジェクトです)

    PptApp.Application.RecentFiles.Add Name:=PptFolder & AddFileName

    としても同様のエラーとなります。

    どの様に書けば良いのか、お分かりならご教授ください。

タイトルとURLをコピーしました