VBA:AccessのFileDialogを使用して[名前を付けて保存]ダイアログボックスを表示するサンプルプログラム

Access VBA:AccessのFileDialogを使用して[名前を付けて保存]ダイアログボックスを表示するサンプルプログラム

Accessの「FileDialog」オブジェクトを使用して[名前を付けて保存]ダイアログボックスを表示するVBAのサンプルプログラムを覚書。

AccessのVBAでFileDialogオブジェクトを使用する際には、オブジェクトライブラリの参照設定が必要となります。

スポンサーリンク

FileDialogオブジェクトを使用した[名前を付けて保存]ダイアログボックスを表示するサンプルプログラムの動作前提条件

後述するAccessのVBAのサンプルプログラムの動作確認は、Access 2013で行っています。

また、FileDialogオブジェクトを使用する際には必ず[参照設定]で以下のオブジェクトライブラリの参照を有効にしておく必要があります。

参照を有効化するオブジェクトライブラリ

Microsoft Office 15.0 Object Library

※15.0というバージョンは、Accessのバージョンによって異なります。

オブジェクトライブラリの参照手順

以下に「Microsoft Office 15.0 Object Library」の参照手順を記載します。

  1. Accessのリボンツールバーの[作成]タブをクリックする。
  2. [作成]タブの右端にある[Visual Basic]をクリックする。
  3. [Microsoft Visual Basic for Applications]画面(VBAエディタ)が開くので[ツール]メニューの[参照設定]をクリックする。
  4. [参照可能なライブラリ ファイル]の一覧(五十音順に並んでいます)から「Microsoft Office 15.0 Object Library」のチェックをオンにして[OK]をクリックする。

Microsoft Office 15.0 Object Library

[名前を付けて保存]ダイアログボックスを表示するサンプルプログラム

FileDialogオブジェクトを使用して[名前を付けて保存]ダイアログボックスを出す場合、wizhookオブジェクトを使用した場合の用に自由度はないみたい。

指定できるプロパティとしては、ダイアログボックスのタイトル、[保存]ボタンの文字列の変更、デフォルトのパス(ファイル名)くらい。

保存するファイルの種類を指定(限定)したりすることもできないので、細かな設定が必要な場合は以下の記事を参考にしてwizhookオブジェクトを使用した方が良い。

Access VBA:WizHookオブジェクトを使用して[ファイルを開く]、[名前を付けて保存]ダイアログボックスを表示するサンプルプログラム
AccessのVBAで"WizHook"オブジェクトを使用して、ダイアログボックスを表示する方法について覚書。
Access VBA:WizHookオブジェクトを使用して[ファイルを開く]、[名前を付けて保存]を表示する際に初期フォルダを指定するサンプルプログラム
AccessのVBAでWizHookオブジェクトを使用してもしくは、ダイアログボックスを表示する際に選択される初期フォルダを任意のフォルダに指定する方法についての覚書です。

そもそもFileDialogオブジェクトのヘルプを見ると、

「定数 msoFileDialogOpen および定数 msoFileDialogSaveAs は Access ではサポートされていません。」

と明示的に記載されているので、まぁ、仕方ないけれど。

以下[名前を付けて保存]ダイアログボックスを表示するサンプルプログラム

Sub SaveAsFileDialogSample01()
Dim dlg As Object, boolResult As Boolean
Dim strFiles As String, i As Long
'オブジェクト変数にFileDialogオブジェクトを代入
Set dlg = Application.FileDialog(msoFileDialogSaveAs)
'FileDialogオブジェクトの各種プロパティを設定
With dlg
    .Title = "別名保存"
    .ButtonName = "保存実行" 'デフォルトは[保存(&S)]
    .InitialFileName = "c:¥temp¥"
End With
'[名前を付けて保存]ダイアログボックスを表示する
boolResult = dlg.Show
    If boolResult Then
        For i = 1 To dlg.SelectedItems.Count
            strFiles = strFiles & dlg.SelectedItems(i) + vbCrLf
        Next i
        MsgBox "[名前を付けて保存]で指定されたファイル名は、" + vbCrLf + strFiles & "です。"
    Else
        '[キャンセル]ボタンが押された場合の処理
        MsgBox "[キャンセル]ボタンが押されました。"
    End If
End Sub

保存する際のファイルの種類(拡張子)くらいは指定したいので、やるならやっぱりwizhookオブジェクトを使う感じかなー。

コメント

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