Sibainu Relax Room

柴犬と過ごす

PowerPoint でダイヤログを開く

EXCEL と ACCESS にはファイルダイヤログがありますが、PowerPoint にはありませんので、 EXCEL のファイルダイヤログを使います。

ユーザーフォームに書くコード

とりあえず CODE の全体は次のようになります。
ボタン「ダイヤログ」のクリックすると MsgBox を実行するために getFileName を実行して戻り値を取得しようとします。
値を取得したらメッセージを表示します。

copy

Option Explicit

'// 64bit版
#If VBA7 And Win64 Then
    Private Declare PtrSafe Function SetForegroundWindow Lib "user32" _
        (ByVal hwnd As LongPtr) As Long
'// 32bit版
#Else
    Private Declare Function SetForegroundWindow Lib "user32" _
        (ByVal hwnd As Long) As Long
#End If

Private xlApp               As Object

'-----------------------------------------
'フォームを開くときに実行するコード
Private Sub UserForm_Initialize()

    If Not xlApp Is Nothing Then
        Set xlApp = Nothing
    End If

    Set xlApp = CreateObject("Excel.application")

End Sub

'-----------------------------------------
'ボタン「閉じる」のクリック
Private Sub bu閉じる_Click()

    Unload Me

End Sub

'-----------------------------------------
'フォームが閉じるときに実行されるコード
Private Sub UserForm_Terminate()

    Set xlApp = Nothing

End Sub

'-----------------------------------------
'ボタン「ダイヤログ」のクリック
Private Sub buダイヤログ_Click()

    MsgBox getFileName("Accessを選択")

End Sub

'-----------------------------------------
'エクセルのダイヤログを開き選択したファイルのパスを返します。
Private Function getFileName(ByVal myTitle As String) As String
    Const msoFileDialogFilePicker = 3
    Dim ThisPath            As String
    Dim BUF                 As String

    '開いている PowerPoint のパス
    ThisPath = ActivePresentation.Path

    BUF = ""

    'エクセルのダイヤログを開きます。
    With xlApp

        'これをしないとExcelはPowerPointに隠れたままです。
        Call SetForegroundWindow(.hwnd)

        With .FileDialog(msoFileDialogFilePicker)

            .InitialFileName = ThisPath & "\"
            .AllowMultiSelect = False
            .Title = myTitle
            .Filters.Add "ACCESS", "*.accdb"
            .Filters.Add "すべてのファイル", "*.*"
            .FilterIndex = 1
            .ButtonName = "開く"

            If .Show = True Then
                BUF = .SelectedItems(1)
            End If

        End With

        'エクセルを閉じる
        .Quit

    End With

    getFileName = BUF
    
End Function

コードの実行

フォームを開き、ボタン「ダイヤログ」をクリックします。

EXCEL のダイヤログ

EXCEL のダイヤログが開いてます。選択してボタン「開く」をクリックします。

戻り値を表示

選択した ACCESS ファイルのフルパスがPowerPoint のメッセージで表示されました。