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

元の KB 番号: 888695

導入

この記事では、Microsoft Office Access 2003 または Microsoft Office Access 2007 で Common Dialog 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 データベース] ウィンドウの [ オブジェクト ] で、[ フォーム ] をクリックします。

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

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

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

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

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

  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. [デバッグ] メニューの [北風のコンパイル] をクリックし、Visual Basic エディターを閉じます。

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

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

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

Microsoft Office Access 2007

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

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

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

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

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

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

  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. [デバッグ] メニューの [北風のコンパイル] をクリックし、Visual Basic エディターを閉じます。

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

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

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