Microsoft Access Club >SampleFile >インデックス >このページ >次頁 < 前項  サイト内検索


出力フォルダーを開く方法 - Officeライブラリー:SampleFile217



ファイルを開くダイアログを表示させたり、フォルダーを指定するためのダイアログを立ち上げたり、ファイル操作をAccessで行う際には、誰もが欲しがる機能です。 この機能は、WindowsAPIを用いるのがもっともポピュラーで、全てのAccessバージョンで利用することができます。

これ以外にも、Excelライブラリーの機能を借用して実現させたりする裏技もあります。そうこうしているうちに、OfficeXPが発売されるとOfficeライブラリー(バージョン10.0)に漸く組み込まれ、割と安心して利用できるようになりました。

今回、ご紹介する方法もこのOfficeライブラリーを用いる方法です。サンプルは、フォーム上のテキストボックス(非連結)にコマンドボタンを押してPC内部の フォルダー、ファイルを選択し、パスを代入する公正にしています。初期値は、出力フォルダーを開くダイアログが立ち上がります。

重要

Access2002以降のバージョン専用です。残念ながら、 Access2000、97、95では利用できませんのでご承知ください。

Access2000、97、95をお使いの方は、

  • Excelコンポーネントの利用
  • Windows API の利用

で実現できますので、下記の関連ページを参照して下さい。

下準備

以下の手順で、下準備を行います。

  1. Access2002(Access2003)を開き、VBE画面を呼び出します。
  2. VBE画面はデーベースウィンドウ上で右クリックし、Visual Basic Editorを選択することで呼び出すことができます。
  3. メニューバーのツールから参照設定を選択します。

  1. Microsoft Office 10.0 Object Libraryをチェックし有効にします。

  • Access2000ではMicrosoft Office 11.0 Object Libraryとなっています。

標準プロシージャOfficeFileDialogの作成

FunctionプロシージャOfficeFileDialogを以下のように記述します。 今回は、プロシージャの引数の違いによって

  1. 出力フォルダーを開くダイアログを呼び出す
  2. ファイルを開くダイアログを呼び出す

を即座に切り替えできる仕様としました。

Function OfficeFileDialog(intCK As Integer)

On Error GoTo ErrorHandler  'エラー処理ルーチンを実行します。

    Dim strmsg As String
    strmsg = "Access2002、2003でないため、この機能を利用できません。"
       
    If VersionCK = True Then
        
        Dim FD As FileDialog 'オブジェクトへ変数を代入。
        Dim inttype As Integer
        Dim varSelectedFile As Variant
        Dim strtitle As String
        Dim CK As Boolean
        
        'フォルダーを選択する場合は、msofiledialogfolderpicker
        'ファイルを選択する場合は、msofiledialogfilepicker
        If intCK = 1 Then
            inttype = msoFileDialogFolderPicker
            strtitle = "フォルダー選択"
            CK = False
        Else
            inttype = msofiledialogfilepicker
            strtitle = "ファイル選択"
            CK = True
        End If
        
        'ファイル参照用の設定値をセットします。
        Set FD = Application.FileDialog(inttype)
        
        'ダイアログタイトル名
        FD.Title = strtitle & " Microsoft Access Club"
        
        'フォルダー選択時は複数選択を不可(False)。ファイル選択時は可能(True)。
        FD.AllowMultiSelect = CK
        
        If FD.Show = -1 Then 'ファイルが選択されれば -1 を返す。
            For Each varSelectedFile In FD.SelectedItems
                OfficeFileDialog = varSelectedFile
            Next
        End If
        
        Set FD = Nothing '変数を開放します。
        
    Else
        MsgBox strmsg, vbOKOnly, "Microsoft Access Club"
    End If
    
Exit Function

ErrorHandler:

    MsgBox "予期せぬエラーが発生しました" & Chr(13) & _
            "エラーナンバー:" & Err.Number & Chr(13) & _
            "エラー内容:" & Err.Description, vbOKOnly
    End

End Function

標準プロシージャVersionCKの作成

Accessバージョンを事前チェックするために、FunctionプロシージャVersionCKを作成します。

'Access2002、2003であれば、VersionCKプロシージャはTrueを返します。
Function VersionCK() As Boolean

    Dim Returnvalue As Variant
    
    'acSysCmdAccessVerは定数です。
    Returnvalue = SysCmd(acSysCmdAccessVer)
    
    'Accessのバージョンを調べます。
    'Access2003は11.0、Access2002は10.0、Access2000は9.0
    'Access97は8.0,Access95は7.0を返します。
    
    If Returnvalue = "10.0" Or Returnvalue = "11.0" Then
        VersionCK = True
    Else
        VersionCK = False
    End If

End Function
解説

Accessバージョンを調べるSysCmd関数を組み込んで、関数の戻り値(Access2002なら10.0、Access2003なら11.0)によってプロシージャの進行を制御しています。

Returnvalue = SysCmd(acSysCmdAccessVer)
(中略)
If Returnvalue = "10.0" Then

フォームに組み込んだイベントプロシージャ

コマンドボタンのクリック時イベントには以下のプロシージャを記述します。

Private Sub Cmd_Click()

    'Functionプロシージャ FileSelect を呼び出し、
    'その値をテキストボックスに代入します。
    Me.txt_選択テキストボックス = OfficeFileDialog(1)

End Sub

フォームビューで開く

  1. フォームビューで開きます。
  1. コマンドボタンをクリックします。
  2. フォルダー選択のダイアログが開きます。

  1. 引数を 1 にしたので、出力ホルダーを開くダイアログが開きます。
  2. 引数に 1 以外の数字を入れると、ファイルを開くダイアログが開きます。
解説

引数の値によって処理を分岐させているのは、以下の構文です。

        'フォルダーを選択する場合は、msofiledialogfolderpicker
        'ファイルを選択する場合は、msofiledialogfilepicker
        
        If intCK = 1 Then
            inttype = msoFileDialogFolderPicker
            strtitle = "フォルダー選択"
            CK = False
        Else
            inttype = msofiledialogfilepicker
            strtitle = "ファイル選択"
            CK = True
        End If
ファイルの複数選択

ファイルの複数同時選択も可能なように、ファイル名の取得に For Each 〜 Next を用いた以下の構文です。

'複数ファイル選択を可能にする場合はTrue、不可の場合はFalse
FD.AllowMultiSelect = False

If FD.Show = -1 Then 'ファイルが選択されれば -1 を返す。
    For Each varSelectedFile In FD.SelectedItems
        FileSelect = varSelectedFile
    Next
End If
フォルダー選択

今回はフォルダー選択でしたが、ファイル選択にする場合は、以下のように

msofiledialogfolderpicker   →   msofiledialogfilepicker

入れ替えるだけです。よって、この処理を引数で分岐させました。

関連ページ

ここで用いたサンプルファイルは、Access2002バージョン以降の専用ファイルです。

ページの先頭へ 前ページへ戻る

 


出力フォルダーを開く方法 - Officeライブラリー:SampleFile217


 

-Microsoft Access Club-

cPanelとPLESKインストール済みのアダルトサイト対応レンタルサーバーをご提供しています。もちろん、海外大手のデータセンターにサーバー機器を収納します。
cPanelやPLESKをインストールしたレンタルサーバー。
アダルトサイトにも対応済み。
海外大手データセンターにサーバー機器を収納しています。