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


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



Excelデータを出力するには、Excelファイルのパスをプロシージャに記述する必要があります。
ここでは、ファイルを開くダイアログを表示させてExcelファイルを指定する技を紹介します。

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

  1. VBE(Visual Basic Editor)ウィンドウを開き、メニューバーのツールから参照設定ダイアログを開きます。
  2. Microsoft Office*.* Object Library が無効(チェックなし)であれば、有効にします。
  3. Excelへ出力を行うサンプルテーブル(tbl_sample)を作成します。
  4. 出力を実行するフォームを作成し、コマンドボタン(Cmdコマンド)を配置します。
  5. TransferSpreadsheetメソッドを利用してExcelファイルへデータを出力します。
  6. Excelファイルの指定は、FunctionプロシージャFileSelectを作成し、Officeライブリーを用いてファイルを開くダイアログを呼び出し行います。

参照設定ダイアログを開く

参照設定ダイアログを開きます。

  1. VBE(Visual Basic Editor)ウィンドウを開きます。
  2. メニューバーのツールから参照設定をクリックします。
  3. Microsoft Office*.* Object Library(以下、Excelライブラリー)が有効であることを確認します。

  1. 無効になっているなら有効にします。
  2. なお、この機能はAccess2002以降で利用することができます。
今回のおすすめポイント

Officeライブラリー

Microsoft Office*.* Object Library(以下、Officeライブラリー)の*.*には、お使いのOfficeバージョンによって異なります。OfficeXPでは10.0、Office2003Pでは11.0です。Accessのインストール時には無効になっていますので、必ず手動で有効にしなければいけません。
このライブラリーの有効設定は、PCに依存するのではなくAccessファイルに設定が保存されますので、他のPCで該当ファイルを開いても有効になります。但し、そのPC自体にOfficeライブラリーがなければ動作しません。

Functionプロシージャ FileSelectの作成

Functionプロシージャ FileSelect を作成します。

Function FileSelect()

On Error GoTo ErrorHandler

    Dim Returnvalue As Variant
    Dim strmsg As String
    Returnvalue = SysCmd(acSysCmdAccessVer) ' --- A
    strmsg = "Access2002、2003でないため、この機能を利用できません。"
    
    If Returnvalue = "10.0" Or Returnvalue = "11.0" Then ' --- B
        
        Dim inttype As Integer
        Dim varSelectedFile As Variant
        inttype = msofiledialogfilepicker ' --- C

        With Application.FileDialog(inttype) ' --- D
        
            .Title = "Excelファイルの選択" ' --- E
            .Filters.Add "Excelファイル", "*.xls" ' --- F
            .Filters.Add "すべてのファイル", "*.*"
            .AllowMultiSelect = False ' --- G
            .InitialFileName = CurrentProject.Path ' --- H
        
            If .Show = -1 Then ' --- I
                For Each varSelectedFile In .SelectedItems
                    FileSelect = varSelectedFile
                Next
            End If
        
        End With
        
        If FileSelect = "" Then
            MsgBox "必要事項が空白のため、処理を中止します。"
            End
        End If
        
    Else

(以下、省略)
解説
  1. SysCmd関数でAccessのバージョンを調べます。
  2. Access2003は11.0、Access2002は10.0、Access2000は9.0,Access97は8.0を返します。
  3. ファイルを選択する場合は msofiledialogfilepicker 、フォルダーを選択する場合は msofiledialogfolderpicker を記述します。
  4. ファイル参照用の設定値をセットします。
  5. ダイアログのタイトル名を記述します。記述しなければ既定のタイトル名が使用されます。
  6. 選択するファイルの種類を定義します。今回は、Excelファイルへデータを出力するので、Excelファイルと全てを記述しています。
  7. 複数ファイル選択を可能にする場合はTrue、不可の場合はFalseを記述します。今回は不可にしています。
  8. 最初に開くホルダーをAccessファイルのフォルダーとします。
  9. ファイルが選択されれば -1 を返します。
今回のおすすめポイント

msofiledialogfilepickerとmsofiledialogfolderpicker

Officeライブラリーを用いたファイルを開くダイアログ表示の利点は、FileDialogの種類を選択するだけで「ファイルを開くダイアログを表示」と「出力フォルダーを開くダイアログを表示」を簡単に切り替えられるところです。

msofiledialogfilepicker  : ファイルを開くダイアログを表示
msofiledialogfolderpicker : 出力フォルダーを開くダイアログを表示

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 = FileSelect  ' --- 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
    Exit Sub

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

動作確認

  1. デザインビューからフォームビューに切り替えます。

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

  1. 確認ダイアログが開きますので、[OK]ボタンをクリックします。

  1. テーブルデータの出力を行います。

関連ページ

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

 


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


 

-Microsoft Access Club-

注目のモンスター専用サーバーからお買い得プランまで幅広くそろえています。cPanel、PLESK、WEBMINまでお任せ下さい。
注目のモンスター専用サーバーからお買い得プランまで幅広い。
cPanel、PLESK、WEBMINまでお任せ下さい。