FileDialogオブジェクトによるファイルオープン・保存

前のページに引き続き、 ファイルダイアログオブジェクトについて具体的な使用例をそれぞれ挙げていきます。

スポンサーリンク

使用例

エクセルファイルを開く(msoFileDialogOpen)

ファイルダイアログオブジェクトでファイルを開く例です。この例では、複数ファイルの選択を可能にし、ファイルフィルタと初期表示フォルダの設定を行っています。ファイルを選択して OK ボタンを押すと、選択したファイルを開いた後、ファイルパスの一覧をメッセージボックスに表示します。

この例ではエクセル以外のファイルも開くことはできますが、拡張子にかかわらずすべてエクセルで開いてしまいます。

ファイルダイアログオブジェクトの使用方法やプロパティとメソッドについては前ページ(以下のリンク先)を参照してください。

 
ファイルダイアログオブジェクトの使用方法
ファイルダイアログオブジェクトのプロパティ・メソッド解説

Sub sample_ef014_03()
    Dim strFiles    As String
    Dim i           As Integer

    With Application.FileDialog(msoFileDialogOpen)
        'ファイルの複数選択を可能にする
        .AllowMultiSelect = True
        'ファイルフィルタのクリア
        .Filters.Clear
        'ファイルフィルタの追加
        .Filters.Add "エクセルブック", "*.xls*"
        '初期表示フォルダの設定
        .InitialFileName = "C:¥Users¥Guest¥test¥"

        If .Show = -1 Then  'ファイルダイアログ表示
            ' [ OK ] ボタンが押された場合
            'ファイルオープン実行
            .Execute

            For i = 1 To .SelectedItems.Count
                strFiles = strFiles & vbLf & .SelectedItems(i)
            Next i

            MsgBox "以下のファイルを開きました。" & _
                    vbLf & strFiles, vbInformation
        Else
            ' [ キャンセル ] ボタンが押された場合
            MsgBox "ファイルのオープンがキャンセルされました。", vbExclamation
        End If
    End With

End Sub

 MsgBox関数 For…Next Withステートメント

下図はテスト用の初期表示フォルダの状態です。フォルダ内にはエクセルファイル以外にもテキストファイルやワードファイルがあります。

サンプルフォルダとその中身
初期表示フォルダとその中身

上記サンプルマクロを実行すると、ファイル選択画面が表示されます。最初のファイルフィルタにエクセルの拡張子(.xls)を設定したため、初期表示画面にはエクセルブックのみ表示されます。

ファイルダイアログの初期表示画面
ファイルダイアログの初期表示画面

ファイルを複数選択してみます。複数のファイルを選択するには Shift または Ctrl キーを押した状態でファイルをクリックします。この例では Shit キーを押した状態でファイルをクリックしています。ファイルを選択したら、OK ボタンを押下します。

複数のファイルを選択
複数のファイルを選択

選択した2つのファイルを開いた後、ファイルのパスが正しく表示されました。

 [ OK ] ボタン押下
[ OK ] ボタン押下

なお、ファイル選択画面で キャンセル ボタンを押下すると、下記メッセージが表示されます。

 [ キャンセル ] ボタン押下
[ キャンセル ] ボタン押下

エクセルファイルを保存する(msoFileDialogSaveAs)

ファイルダイアログオブジェクトでエクセルファイルを保存する例です。ファイル保存のため、AllowMultiSelect プロパティや Filters プロパティの設定は不要です。保存先ファイルを指定して OK ボタンを押すと、ファイルを保存した後、そのファイルパスをメッセージボックスに表示します。

『ファイルを保存する』はアクティブワークブックが保存の対象となります。Excute メソッドを実行する前までに、保存対象のワークブックをアクティブにしておいてください。

ファイルダイアログオブジェクトの使用方法やプロパティとメソッドについては前ページ(以下のリンク先)を参照してください。

 
ファイルダイアログオブジェクトの使用方法
ファイルダイアログオブジェクトのプロパティ・メソッド解説

Sub sample_ef014_04()

    With Application.FileDialog(msoFileDialogSaveAs)
        '初期表示フォルダの設定
        .InitialFileName = "C:¥Users¥Guest¥test¥"

        If .Show = -1 Then
            ' [ OK ] ボタンが押された場合
            'ファイルの保存実行
            .Execute

            MsgBox "以下のファイルに保存されました。" & _
                    vbLf & .SelectedItems(1), vbInformation
        Else
            ' [ キャンセル ] ボタンが押された場合
            MsgBox "ファイルの保存がキャンセルされました。", vbExclamation
        End If
    End With

End Sub

 MsgBox関数 Withステートメント

上記サンプルマクロを実行すると、ファイル保存画面が表示されます。このメソッドはエクセルファイルを保存することを想定としているため、初期表示画面にはエクセルブックのみ表示されます。

ファイルダイアログの初期表示画面
ファイルダイアログの初期表示画面

保存するファイル名を入力し、ファイルの種類を選択します。

保存するファイル名とファイルの種類を指定
保存するファイル名とファイルの種類を指定

OK ボタンを押下するとエクセルファイルが保存されます。

 [ OK ] ボタン押下
[ OK ] ボタン押下

フォルダを確認すると、ファイルが保存されていることがわかります。

指定したファイル名で保存された様子
指定したファイル名で保存された様子

なお、ファイル保存画面で キャンセル ボタンを押下すると、下記メッセージが表示されます。

 [ キャンセル ] ボタン押下
[ キャンセル ] ボタン押下
タイトルとURLをコピーしました