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
Access で、Northwind.mdb という名前のサンプル データベースを開きます。
注:
Access 2003 のNorthwind.mdb データベースは通常、フォルダーにあります
C:\Program Files\Microsoft Office\OFFICE11\Samples
。[Northwind データベース] ウィンドウの [ オブジェクト ] で、[ フォーム ] をクリックします。
[ データベース] ウィンドウ のツール バーで、[ 新規] をクリックします。
[ 新しいフォーム ] ダイアログ ボックスで、[ デザイン ビュー] をクリックし、[OK] をクリック します。
テキスト ボックスを Form1 に追加し、テキスト ボックスを右クリックし、[ プロパティ] をクリックします。
[ すべて ] タブをクリックし、[ 名前]、[typeText1] の順にクリックし、[ プロパティ ] ダイアログ ボックスを閉じます。
[テキスト 1] テキスト ボックスに関連付けられているラベル コントロールを右クリックし、[プロパティ] をクリックし、[すべて] タブをクリックします。
[ キャプション] をクリックし、「Text1」と入力し、[ プロパティ ] ダイアログ ボックスを閉じます。
コマンド ボタンを Form1 に追加し、コマンド ボタンを右クリックし、[ プロパティ] をクリックし、[ 名前] をクリックし、「Command1」と入力し、[ キャプション] をクリックして、「Command1」と入力します。
[イベント] タブをクリックし、[クリック時] の一覧で [イベント プロシージャ] をクリックし、省略記号ボタンをクリックして Microsoft Visual Basic エディターを開始します。
Command1_Click プロシージャのコードを次のように変更します。
Private Sub Command1_Click() Me!Text1 = LaunchCD(Me) End Sub
[ 挿入 ] メニューの [ モジュール] をクリックし、次のコードを 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
[デバッグ] メニューの [北風のコンパイル] をクリックし、Visual Basic エディターを閉じます。
[ 表示 ] メニューの [ フォーム ビュー] をクリックします。
[ Command1] をクリックし、開いたウィンドウ内のファイルをクリックします。
ファイルのパスが [テキスト 1 ] テキスト ボックスに表示されます。
Microsoft Office Access 2007
Access 2007 で、Northwind.accdb という名前のサンプル データベースを開きます。
[ 作成 ] タブで、[ フォーム ] グループの [ フォーム ] をクリックします。
[ 書式 ] タブで、[ 表示] の下にある下矢印をクリックし、[ デザイン ビュー] をクリックします。
テキスト ボックスを Form1 に追加し、テキスト ボックスを右クリックし、[ プロパティ] をクリックします。
[ すべて ] タブをクリックし、[ 名前] をクリックし、「Text1」と入力します。
[テキスト 1] テキスト ボックスに関連付けられているラベル コントロールを右クリックし、[プロパティ] をクリックし、[すべて] タブをクリックします。
[ キャプション] をクリックし、「Text1」と入力します。
コマンド ボタンを Form1 に追加し、コマンド ボタンを右クリックし、[ プロパティ] をクリックし、[ 名前] をクリックし、「Command1」と入力し、[ キャプション] をクリックして、「Command1」と入力します。
[イベント] タブをクリックし、クリック時の一覧で [イベント プロシージャ] をクリックし、省略記号ボタン (...) をクリックして Microsoft Visual Basic エディターを開始します。
次のコード例のように、Command1_Click プロシージャのコードを変更します。
Private Sub Command1_Click() Me!Text1 = LaunchCD(Me) End Sub
[ 挿入 ] メニューの [ モジュール] をクリックし、次のコード例のようなコードを 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
[デバッグ] メニューの [北風のコンパイル] をクリックし、Visual Basic エディターを閉じます。
[ 書式 ] タブで、[ 表示] の下にある下矢印をクリックし、[ フォーム ビュー] をクリックします。
[ Command1] をクリックし、開いたウィンドウ内のファイルをクリックします。
[ テキスト 1 ] ボックスにファイルのパスが表示されます。