Access 2003 または Access 2007 のデータベースで Common Dialog API を使用する方法

元の KB 番号:   888695

導入

この記事では、Microsoft Office Access 2003 または Microsoft Office Access 2007 で共通ダイアログ API を使用して、共通ダイアログ ボックス機能を置き換える方法について説明します。 この機能は、Microsoft Office 2000 Developer Edition または Microsoft Office XP Developer Edition にのみ含まれています。

Microsoft は、例示のみを目的としてプログラミング例を提供しており、明示または黙示にかかわらず、いかなる責任も負わないものとします。 これには、市販性または特定の目的との適合性についての黙示の保証も含まれますが、これに限定はされません。 この記事は、説明されているプログラミング言語、手順を作成およびデバッグするために使用されているツールに読者が精通していることを前提にしています。 マイクロソフト サポート窓口では、特定のプロシージャの機能説明に関するご質問に対して支援いたしますが、本例を特定の目的を満たすために機能を追加したり、プロシージャを構築することは行いません。

共通ダイアログ機能を置き換える手順

Microsoft Office Access 2003

  1. Access で、Northwind.mdb という名前のサンプル データベースを開きます。

    注意

    Access 2003 用の Northwind.mdb データベースは、通常、フォルダーにあります C:\Program Files\Microsoft Office\OFFICE11\Samples

  2. [Northwind Database] ウィンドウの [ オブジェクト ] で、[ フォーム ] をクリックします。

  3. [データベース] ウィンドウ のツール バーで、[新規] をクリックします。

  4. [ 新しいフォーム ] ダイアログ ボックスで、[ デザイン ビュー] をクリックし、[OK] をクリック します

  5. Form1 にテキスト ボックスを追加し、テキスト ボックスを右クリックして、[ プロパティ] をクリックします。

  6. [ すべて ] タブをクリックし、[ 名前]、[typeText1] の順にクリックし、[ プロパティ ] ダイアログ ボックスを閉じます。

  7. Text1 テキスト ボックスに関連付けられているラベル コントロールを右クリックし、[プロパティ] をクリックして、[すべて] タブをクリックします。

  8. [ キャプション] をクリックし、「Text1」と入力して、[ プロパティ ] ダイアログ ボックスを閉じます。

  9. Form1 にコマンド ボタンを追加し、コマンド ボタンを右クリックし、[プロパティ] をクリックし、[名前] をクリックして「Command1」と入力し、[キャプション] をクリックして、「Command1」と入力します。

  10. [イベント] タブをクリックし、[クリック時] ボックスの一覧で [イベント プロシージャ] をクリックし、省略記号ボタンをクリックして Microsoft Visual Basic エディターを起動します。

  11. Command1_Click プロシージャのコードを次のように変更します。

    Private Sub Command1_Click()
     Me!Text1 = LaunchCD(Me)
    End Sub
    
  12. [ 挿入 ] メニューの [ モジュール] をクリックし、次のコードを Module1 に挿入します。

    Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
    "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
    
    Private Type OPENFILENAME
     lStructSize As Long
     hwndOwner As Long
     hInstance As Long
     lpstrFilter As String
     lpstrCustomFilter As String
     nMaxCustFilter As Long
     nFilterIndex As Long
     lpstrFile As String
     nMaxFile As Long
     lpstrFileTitle As String
     nMaxFileTitle As Long
     lpstrInitialDir As String
     lpstrTitle As String
     flags As Long
     nFileOffset As Integer
     nFileExtension As Integer
     lpstrDefExt As String
     lCustData As Long
     lpfnHook As Long
     lpTemplateName As String
    End Type
    
    Function LaunchCD(strform As Form) As String
     Dim OpenFile As OPENFILENAME
     Dim lReturn As Long
     Dim sFilter As String
     OpenFile.lStructSize = Len(OpenFile)
     OpenFile.hwndOwner = strform.hwnd
     sFilter = "All Files (*.*)" & Chr(0) & "*.*" & Chr(0) & _
      "JPEG Files (*.JPG)" & Chr(0) & "*.JPG" & Chr(0)
     OpenFile.lpstrFilter = sFilter
     OpenFile.nFilterIndex = 1
     OpenFile.lpstrFile = String(257, 0)
     OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
     OpenFile.lpstrFileTitle = OpenFile.lpstrFile
     OpenFile.nMaxFileTitle = OpenFile.nMaxFile
     OpenFile.lpstrInitialDir = "C:\"
     OpenFile.lpstrTitle = "Select a file using the Common Dialog DLL"
     OpenFile.flags = 0
     lReturn = GetOpenFileName(OpenFile)
        If lReturn = 0 Then
            MsgBox "A file was not selected!", vbInformation, _ 
              "Select a file using the Common Dialog DLL"
         Else
            LaunchCD = Trim(Left(OpenFile.lpstrFile, InStr(1, OpenFile.lpstrFile, vbNullChar) - 1))
         End If
    End Function
    
  13. [デバッグ] メニューの [コンパイル] Northwind をクリックし、Visual Basic エディターを閉じます。

  14. [ 表示 ] メニューの [ フォーム ビュー] をクリックします。

  15. [ Command1] をクリックし、開いたウィンドウでファイルをクリックします。

    ファイルのパスが Text1 テキスト ボックスに表示されます。

Microsoft Office Access 2007

  1. Access 2007 で、Northwind.accdb という名前のサンプル データベースを開きます。

  2. [ 作成 ] タブで、[ フォーム ] グループの [ フォーム ] をクリックします。

  3. [ 書式 ] タブで、[ 表示] の下の下矢印をクリックし、[ デザイン ビュー] をクリックします。

  4. Form1 にテキスト ボックスを追加し、テキスト ボックスを右クリックして、[ プロパティ] をクリックします。

  5. [ すべて ] タブをクリックし、[ 名前] をクリックして、「Text1」と入力します。

  6. Text1 テキスト ボックスに関連付けられているラベル コントロールを右クリックし、[プロパティ] をクリックして、[すべて] タブをクリックします。

  7. [ キャプション] をクリックし、「Text1」と入力します。

  8. Form1 にコマンド ボタンを追加し、コマンド ボタンを右クリックし、[プロパティ] をクリックし、[名前] をクリックして「Command1」と入力し、[キャプション] をクリックして、「Command1」と入力します。

  9. [イベント] タブをクリックし、[クリック時] ボックスの一覧で [イベント プロシージャ] をクリックし、省略記号ボタン (...) をクリックして Microsoft Visual Basic エディターを起動します。

  10. 次のコード例のように、Command1_Click プロシージャのコードを変更します。

    Private Sub Command1_Click()
     Me!Text1 = LaunchCD(Me)
    End Sub
    
  11. [ 挿入 ] メニューの [ モジュール] をクリックし、次のコード例のようなコードを Module1 に挿入します。

    Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
    "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
    
    Private Type OPENFILENAME
     lStructSize As Long
     hwndOwner As Long
     hInstance As Long
     lpstrFilter As String
     lpstrCustomFilter As String
     nMaxCustFilter As Long
     nFilterIndex As Long
     lpstrFile As String
     nMaxFile As Long
     lpstrFileTitle As String
     nMaxFileTitle As Long
     lpstrInitialDir As String
     lpstrTitle As String
     flags As Long
     nFileOffset As Integer
     nFileExtension As Integer
     lpstrDefExt As String
     lCustData As Long
     lpfnHook As Long
     lpTemplateName As String
    End Type
    
    Function LaunchCD(strform As Form) As String
     Dim OpenFile As OPENFILENAME
     Dim lReturn As Long
     Dim sFilter As String
     OpenFile.lStructSize = Len(OpenFile)
     OpenFile.hwndOwner = strform.hwnd
     sFilter = "All Files (*.*)" & Chr(0) & "*.*" & Chr(0) & _
      "JPEG Files (*.JPG)" & Chr(0) & "*.JPG" & Chr(0)
     OpenFile.lpstrFilter = sFilter
     OpenFile.nFilterIndex = 1
     OpenFile.lpstrFile = String(257, 0)
     OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
     OpenFile.lpstrFileTitle = OpenFile.lpstrFile
     OpenFile.nMaxFileTitle = OpenFile.nMaxFile
     OpenFile.lpstrInitialDir = "C:\"
     OpenFile.lpstrTitle = "Select a file using the Common Dialog DLL"
     OpenFile.flags = 0
     lReturn = GetOpenFileName(OpenFile)
        If lReturn = 0 Then
            MsgBox "A file was not selected!", vbInformation, _ 
              "Select a file using the Common Dialog DLL"
         Else
            LaunchCD = Trim(Left(OpenFile.lpstrFile, InStr(1, OpenFile.lpstrFile, vbNullChar) - 1)) 
         End If
    End Function
    
  12. [デバッグ] メニューの [コンパイル] Northwind をクリックし、Visual Basic エディターを閉じます。

  13. [ 書式 ] タブで、[ 表示] の下にある下向き矢印をクリックし、[ フォーム ビュー] をクリックします。

  14. [ Command1] をクリックし、開いたウィンドウでファイルをクリックします。

    ファイルのパスが [Text1 ] ボックスに表示されます。