Access 2003 または Access 2007 のデータベースでコモンダイアログ API を使用する方法

注意

Office 365 用リソース は、 エンタープライズ向け Microsoft 365 アプリに名前変更されています。 この変更の詳細については、 このブログの投稿を参照してください。

元の 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 データベース] ウィンドウの [オブジェクト] で、[フォーム] をクリックします。

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

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

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

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

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

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

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

  10. [イベント] タブをクリックし、 [クリック時] の一覧で [event Procedure] をクリックし、省略記号ボタンをクリックして、Microsoft Visual Basic Editor を起動します。

  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 Editor を閉じます。

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

  15. [ Command1] をクリックし、表示されるウィンドウでファイルをクリックします。

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

Microsoft Office Access 2007

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

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

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

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

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

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

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

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

  9. [イベント] タブをクリックし、 [クリック時] の一覧で [event Procedure] をクリックし、省略記号ボタン (...) をクリックして、Microsoft Visual Basic Editor を起動します。

  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 Editor を閉じます。

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

  14. [ Command1] をクリックし、表示されるウィンドウでファイルをクリックします。

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