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


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



Excelライブラリー、Officeライブラリーを用いてファイルを開くダイアログを表示するには、参照設定が必要です。 ここでは、WindowsAPIの機能を用いてAccessの全てのバージョンでファイルを開くダイアログを表示させる技を紹介します。

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

  1. WindowsAPI(Application Programing Interface)を利用するためには、まず標準モジュールに宣言を行わな う手続きが必要です。
  2. WindowsAPIは利用することに意義がありますので、これらコードを覚えられずとも、そっくりそのまま複写を行うえば事足ります。
  3. サンプルでは、テーブルデータをファイルを開くダイアログで選択したExcelファイルへデータを出力します。 Excelへ出力を行うサンプルテーブル(tbl_sample)を作成します。
  4. プロシージャを実行するフォームを作成し、コマンドボタン(Cmdコマンド)を配置します。
  5. TransferSpreadsheetメソッドを利用してExcelファイルへデータを出力します。
  6. Excelファイルの指定は、FunctionプロシージャGetFileを作成し、WindowsAPIを用いてファイルを開くダイアログを呼び出し行います。
今回のおすすめポイント

WindowsAPI

Windows APIを使用することは Windows のシステムに関連した関数を直接呼び出すことを意味します。Windowsでは各種のソフトウエアが共通して利用できる機能がまとめてMicrosoft社から提供されています。これらをまとめてWindowsAPIと呼びます。

標準モジュールにWindowsAPIコードの記述

WindowsAPIのコードを標準モジュールに記述する

  1. 新規に標準モジュールを作成します。
  2. 宣言セクション、及びFunction、Subプロシージャを作成します。
  3. 標準モジュールに記載するプロシージャの全コードは、サンプルファイル****をご覧下さい。 別添のWindowsAPIcode.htmlに掲載しています。
  4. Functionプロシージャ GetFileを作成します。
  5. 各種の設定を行うのは、このプロシージャだけです。
Function GetFile(strSearchPath) As String

    Dim accof As ACC_OpnFileNM
    
    accof.strDialogTitle = "ファイルを指定して下さい" ' --- A
    accof.strInitialDir = strSearchPath
    accof.strFilter = ACC_CreateFilterString("Excelファイル(*.xls)", _
				"*.xls", "すべてのファイル(*.*)", "*.*") ' --- B

    ACC_GetOpenFileName accof ' --- C
    GetFile = Trim(accof.strFullPathReturn) ' --- D
    
    If GetFile = "" Then ' --- E
        MsgBox "必要事項が空白のため、処理を中止します。"
        End
    End If
    
End Function
解説
  1. ダイアログのタイトル名を記述します。記述しなければ既定のタイトル名が使用されます。
  2. 選択するファイルの種類を定義します。今回は、Excelファイルへデータを出力するので、Excelファイルと全てを記述しています。
  3. ファイルを特定ダイアログボックスのルーチンを呼び出します。
  4. 選択したファイルのパスとファイル名を返します。
  5. ファイルを選択しなかった場合は、処理を中止します。

Excelへ出力するテーブルの作成

  1. Excelへ出力するテーブルを作成します。
  2. ID(オートナンバー型)、納品日(日付/時刻型)、取引先名(テキスト型)、請求額(通貨型)の4つのフィールドを作成します。

Excelへデータを出力するフォームの作成

  1. Excelへデータを出力するフォームを作成します。
  2. コマンドボタンを配置します。

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

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

Private Sub Cmdコマンド_Click()

    On Error GoTo エラー

    Dim varAccess As Variant ' --- A
    Dim varExcelPass As Variant
    Dim strmsg As String
    
    varAccess = "tbl_sample" ' --- B
    varExcelPass = GetFile("")  ' --- C
    strmsg = varAccess & " を、Excelファイルへ出力します。" & Chr(13) & _
             "出力先は" & varExcelPass & "、 シート名は" & varAccess & _
	     "です。" & Chr(13) & "よろしければ、OKをクリックして下さい。"
                
    If MsgBox(strmsg, vbOKCancel) = vbOK Then
        DoCmd.TransferSpreadsheet acExport, _
                    acSpreadsheetTypeExcel9, varAccess, varExcelPass, True ' --- D
        MsgBox "データ出力は、正常に完了しました。"
    End If
    
    Exit Sub
    
エラー:
    
    MsgBox "予期せぬエラーが発生しました。", vbCritical
    End

End Sub
解説
  1. 変数varAccess、varExcelPassをバリアント型と宣言しています。
  2. 出力の対象となるAccessテーブル、またはクエリー名を記述します。
  3. Functionプロシージャ GetFile を呼び出します。
  4. TransferSpreadsheetメソッドを用いて出力を行います。

動作確認

  1. フォームビューで開きます。

  1. コマンドボタンをクリックすると「ファイルを開くダイアログボックス」が開きます。
  2. Excelファイルを選択して[OK]ボタンをクリックします。

  1. 確認ダイアログが開きますので[OK]ボタンをクリックします。
  2. テーブルレコードのExcelへの出力を確認します。


関連ページ

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

 


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


 

-Microsoft Access Club-

cPanel と PLESKをインストールした専用・共有レンタルサーバーを銀行振込でご提供中。契約書は一切不要です。
cPanel や PLESKをインストールした専用・共有レンタルサーバー
まずは1ヶ月から...。
日本国内の銀行振込がOK、契約書は不要です。