• 締切済み

[VBA]自身のプレゼンテーションを取得したい

Excelやワードには自身のオブジェクトを指定するThisWorkbookやThisDocumentがあります。 パワーポイント(Powerpoint2016)にはThisPresentationがありません。プレゼンテーション名で指定すればことたりますが、ファイル名が改変された場合は対応できません…。 Webで検索したら、VBProject名で検索し自身のオブジェクトを代入すればよいという解決方法はありましたが、これだとマクロ設定を変更する必要があり(VBAプロジェクト オブジェクト モデルへのアクセスを信頼するをチェック)他の方法を探しています。 何かよい手だてはないでしょうか? よろしくお願いします。

みんなの回答

  • masnoske
  • ベストアンサー率35% (67/190)
回答No.2

これではどうでしょうか。 Sub test() Dim obj As Presentation Set obj = ActivePresentation Debug.Print obj.Name Set obj = Nothing End Sub

  • masnoske
  • ベストアンサー率35% (67/190)
回答No.1

Meキーワードは使えないのでしょうか。

関連するQ&A

  • Excel VBA で自分自身が格納されているフォルダを取得する方法

    簡単な質問でスイマセン Excel VBA で今自分自身がいるフォルダの情報を取得する方法、知っている方意らしたら教えて下さい。 ※ワードなら thisDocument アクセスなら currentDb があります。これと同様の情報をもつエクセルのオブジェクトを探しています。

  • PowerPointでVBAを使いたい。

    ExcelVBAでやっている事を、PowerPointでもやりたいのですが。 具体的には  「ExcelBookを開いた時に自動的にシートのフッターに所有者名を設定する。」 これと同じ事をPowerPointでやりたいのですが。 Excelの場合には標準モジュールに書いたSubをExcelObjectであるThisWorkbookの OpenイベントからCallする事で実現しました。 そこで、次の事を教えて下さい。 (1)PowerPointのObjectはどうやって設定するのでしょうか。デフォルトではObjectがありません。 (2)そのObjectの名前は何でしょうか。 (3)PowerPointのObjectのイベント一覧がどこかにありませんか。 以上ですが、ご存知の方がいらっしゃいましたらご教示、よろしくお願いします。

  • 自身が記述された標準モジュールを常に参照する方法

    標準モジュール名を指定せず、自身が記述された標準モジュールを常に参照する方法 例えば A = W_Book.VBProject.VBComponents("Module56").CodeModule.ProcBodyLine("Workbook_SheetSelectionChange", 0) というコードを"Module56"内に記述した場合Module56という標準モジュール名を例えばModule44と変更してしまうと動かなくなってしまうと思います。 これを、常にThisWorkbookのように、このコードが記述されたモジュールを参照するように変更はできますでしょうか?もしご存知でしたらご回答頂けますと幸いです。どうぞよろしくお願いいたします。

  • プレゼンテーションが作成できません

    PowerPoint2002でウィザードでプレゼンテーションパックの機能を使って保存しようとすると「キャビネットファイルが作成できませんでした。」というメッセージが出てどうしても保存するとこができません。 WindowsXPでLHAユーティリティ32という圧縮ファイルもインストールしてあります。UNLHA32.DLLというライブラリもインストールしました。 検索をしても有効な方法が見つかりませんでしたので、皆様アドヴァイスよろしくお願いいたします。

  • VBScriptで自身のファイル名を取得する方法

    VBScriptでは、GetAbsolutePathName()のように、ファイル名を代入しないと自身のファイル名が分からないと思うのですが、ファイル名が分からないときに自身のファイル名を取得する方法はないでしょうか。よろしくお願いします。

  • マクロが有効なプレゼンテーションを既定の設定に

    お世話になります。PowerPoint2010 になってからマクロの利用法が全くわからなくなりました。2003と大違いですね。2003のようにプレゼンテーションを新規に開いてスライドを作成したとき保存してあるマクロをいつでも使える状態にしたいのです。うまく表現できませんが以下の通りです。 開発タブからVBAでマクロを記述することはできるのですが、「マクロが有効なプレゼンテーション」に名前を付けて保存するときどこを指定するのでしょうか。いまは任意に保存場所を指定して保存しているのですが、その名前の付いたpptmファイルを開いたときだけプレゼンテーションにマクロの表示が出ますが、新規にプレゼンテーション1が開かれたときにはマクロ表示に何も存在しません。 登録したすべてのマクロをいつでも利用できる状態で、スライドの作成中あるいはできあがったスライドでマクロを実行する方法を教えて下さい。 環境はWindows7とOffice2010です。よろしくお願いします。

  • Excel VBAでオブジェクト名を変更する方法

    Excelでシートを新規追加するマクロを作っています。この時、下記のようなコードでシート名を変更するのですが、同時にオブジェクト名も変更する事は可能でしょうか? Sheets.Add ActiveSheet.Name = "テスト" なぜオブジェクト名も変更したいのかと言いますと、動的にイベントプロシージャを作成する際、下記のようなコードを記述してるのですが、シート名とオブジェクト名が一致してないとエラーが出てしまうんです。 Dim cdMoj as CodeModule Dim Ln as Long Set cdMoj = ThisWorkBook.VBProject.VBComponents(ActiveSheet.Name).CodeModule Ln = cdMoj.CreateEventProc("Click", "Command1") cdMoj.InsertLines Ln + 1, "MsgBox ""VBAで追加したマクロです。""" なにか良い方法がありましたらご教授下さい。どうぞ宜しくお願いします。

  • Excel VBA

    外部からモジュールを読み込めるようにしました。 ーーーーーーーーーーーーーーーーーーーーー Sub moduleImport_All() 'インポートしたいファイルのあるフォルダを指定 Dim sImportPath As String sImportPath = "C:\VBA\module\" 'FileSystemObjectの作成 Dim oFso As Object Set oFso = CreateObject("Scripting.FileSystemObject") 'フォルダオブジェクトを取得 Dim oDir As Object Set oDir = oFso.GetFolder(sImportPath) 'ファイル名を順次取得 Dim fFile As Object For Each fFile In oDir.Files 'ファイルの拡張子を取得 Dim sExt As String sExt = oFso.GetExtensionName(fFile.Name) '拡張子からモジュールだけを取得、インポート Select Case LCase(sExt) Case "bas", "cls", "frm" '指定のモジュールをインポート ThisWorkbook.VBProject.VBComponents.Import sImportPath & fFile.Name End Select Next MsgBox "完了" End Sub ーーーーーーーーーーーーーーーーーーーーー しかし、上書きがなされない為、1,2,3とモジュールが増えてしまいます。 読込みたいフォルダ内のファイルと同じ名前であれば全て上書きするにはどのように修正したらよいでしょうか?

  • VBA withブロックで自分自身を指定する

    エクセルVBAのwithブロックの中で、自分自身のオブジェクトを指定する方法はあるでしょうか? 具体的には、 Dim sh As Worksheet Set sh = Worksheets(1) With sh Call XXX(sh) End With のcall XXX(sh)の「sh」の部分で、 withブロックの中に自分自身のオブジェクトを再度表記すると見栄えもメンテナンス性もよくないので「.this」というような感じの表記ができないかと思っています。

  • VBAで、ExcelとPowerPointの連携

    EXCEL VBAにて、PowerPointのObjectを作って、エクセルからプレゼンテーションの作成をしています。 一旦、パワーポイントのウィンドウが選択された後、Excelのウィンドウを選択する方法がわかりません。 エクセルのデータを読み込んで、パワーポイントに貼り付ける分には、別にエクセルのウィンドウを選択する必要はないので、大きな問題ではありませんが、それでも、エクセルにて、msgboxを実行しようとすると、Excelウィンドウが選択されていないために、フラッシュして、ユーザーに「エクセルを選択しろ」と警告してきます。 この不都合を解消したいのです。 以下のサンプルにて、本当は、(1) の位置にmsgboxを入れたいのですが、上記のことがあるので、(2)の位置にmsgboxを入れて対応しています。 (1)の位置でも、msgboxが素直に表に出てくるように「VBAコードにて、Excelウィンドウを選択する」 方法をよろしくお願い致します。 Sub test1() Dim ppApp As New PowerPoint.Application Dim PPfile As PowerPoint.Presentation With ppApp .Visible = msoTrue .Windows.Application.Left = 600 .Windows.Application.Top = 0 .Windows.Application.Width = 350 .Windows.Application.Height = 350 Set PPfile = .Presentations.Add With PPfile n = .Slides.Count With .Slides.Add(n + 1, ppLayoutTitleOnly) .Select End With End With End With PPfile.SaveAs Filename:=ThisWorkbook.Path & "\" & "mySample.ppt" PPfile.Save PPfile.Close ppApp.Quit ' MsgBox "プレゼンテーション作成終了” '------(1) Set ppApp = Nothing Set PPfile = Nothing MsgBox "プレゼンテーション作成終了” '------(2) End Sub

専門家に質問してみよう