Microsoft Access Club >Access裏技Tips >このページ >次頁 < 前項 サイト内検索


ダイアログからファイルを選択する - Excel Library の利用 : Access裏技Tips



テーブルフィールドにファイルパスを記述するのは骨が折れます。 ここでは、Excelライブラリーを用いて、テーブルフィールドにファイルを選択し保存する技を紹介します。

Excel Library を用いてファイルを選択する

  1. VBE(Visual Basic Editor)ウィンドウを開き、メニューバーのツールから参照設定ダイアログを開きます。
  2. Microsoft Excel*.* Object Library が無効(チェックなし)であれば、有効にします。
  3. 画像パスを格納するテーブル(tbl_sample)を作成します。
  4. フィールドには、ID(オートナンバー型)、パス(テキスト型)を作成します。
  5. 画像表示を行うフォーム(frm_sample)を作成し、イメージオブジェクト(imgイメージ)、テキストボックス(txtパス)、コマンドボタン(Cmdコマンド)を配置します。
  6. FunctionプロシージャXLSFileOpenを作成し、Excelライブリーを用いてファイルを開くダイアログを呼び出します。

参照設定ダイアログを開く

  1. VBE(Visual Basic Editor)ウィンドウを開きます。
  2. メニューバーのツールから参照設定をクリックします。
  3. Microsoft Excel*.* Object Library(以下、Excelライブラリー)が有効であることを確認します。
  4. 無効になっていれば、これを有効にします。

今回のおすすめポイント

Excelライブラリー

Microsoft Excel*.* Object Libraryの*.*には、お使いのOfficeバージョンによって異なります。OfficeXPでは11.0です。
Access97〜Access2003まで、初期設定で無効になっていますので、必ず手動で有効にしなければいけません。
このライブラリーの有効設定は、PCに依存するのではなくAccessファイルに設定が保存されますので、他のPCで該当ファイルを開いても有効になります。但し、そのPC自体にExcelライブラリーがなければ動作しません。

Functionプロシージャ XLSFileOpenの作成

Functionプロシージャ XLSFileOpen を作成します。

Function XLSFileOpen()

On Error GoTo エラー

    Dim objXLS As New Excel.Application ' --- A
    Dim varGetFile As Variant
  
    varGetFile = objXLS.GetOpenFileName("画像 (*.jpg; *.gif), _
					*.jpg;*.gif", , "画像選択") ' --- B
    If varGetFile = False Then ' --- C
        MsgBox "必要事項が空白のため、処理を中止します。"
        End
    End If
  
    XLSFileOpen = varGetFile ' --- D
    Set objXLS = Nothing ' --- E
    
Exit Function

エラー:

    MsgBox "予期せぬエラーです。" & vbNewLine & Err.Number & vbNewLine & _
            Err.Description
    End
    
End Function
解説
  1. Excelのオブジェクト変数を宣言します。
  2. ファイルを開くダイアログを表示します。ExcelのGetOpenFileNameメソッドを実行します。
  3. ファイルを選択しなかった場合、Falseが返されます。
  4. 変数varGetFileをXLSFileOpenに代入します。 E…Excelのオブジェクト変数を開放します。
今回のおすすめポイント

GetOpenFileNameメソッド

ファイル名を取得するために、ファイルを開くダイアログボックスを表示します。指定したファイルは、実際には開かれませんので注意して下さい。ファイルの名前とパス名のみを返します。
サンプルでは、画像(.gifと.jpg)のみを選択するようにしていますが、この設定は変更できます。

画像表示フォームの作成

  1. tbl_sampleテーブルをレコードソースに持つ画像表示フォームを作成します。
  2. イメージオブジェクト、テキストボックス、コマンドボタンを作成します。

コマンドボタンのクリック時イベントプロシージャの作成

コマンドボタンのクリック時イベントプロシージャを作成します。

Private Sub cmdコマンド_Click()

On Error GoTo エラー
    
    Me.txtパス = XLSFileOpen ' --- A
    Me.imgイメージ.Picture = Me.txtパス ' --- B
        
    Exit Sub
    
エラー:

    MsgBox "予期せぬエラーです。" & vbNewLine & Err.Number & vbNewLine & _
            							Err.Description
    End

End Sub
解説
  1. Function関数 XLSFileOpen を代入します。 この操作で、選択したファイル名とパスをテーブルのレコードに保存していきます。
  2. イメージオブジェクトにテキストボックスtxtパスの値を代入します。

レコード移動時イベントプロシージャの作成

レコード移動時イベントプロシージャを作成します。

Private Sub Form_Current()

    On Error GoTo エラー

    If Not IsNull(Me.txtパス) Then
        Me.imgイメージ.Picture = Me.txtパス ' --- A
    Else
        Me.imgイメージ.Picture = ""  ' --- B
    End If

Exit Sub

エラー:

    Me.imgイメージ.Picture = ""
    Resume Next

End Sub
解説
  1. フォーム上にあるイメージオブジェクトのPictureプロパティに、テキストボックスtxtパスの値を代入します。 この操作で、画像がイメージに表示されるようになります。
  2. テキストボックスtxtパスの値がNull、つまり空白であればPictureプロパティに長さ0の文字列を返します。

動作確認

  1. デザインビューからフォームビューに切り替えます。

  1. コマンドボタンをクリックします。
  2. ファイルを開くダイアログボックスが開きます。

  1. ファイルを選択して[OK]ボタンをクリックします。
  2. 画像パスがテーブルデータとして保存され、イメージに画像が表示されます。


関連ページ

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

 


ダイアログからファイルを選択する - Excel Library の利用 : Access裏技Tips


 

-Microsoft Access Club-

動画配信(ダウンロード、ストリーミング)対応の専用レンタルサーバー。データセンター設置場所はアメリカ合衆国です。: 動画サーバードットコム
動画配信(ダウンロード、ストリーミング)対応の専用レンタルサーバー。
データセンター設置場所はアメリカ合衆国です。
100Mbps〜1Gbpsまで対応できます。