Microsoft Access Club >SampleFile >インデックス >このページ >次頁 < 前項  サイト内検索


セル 位置指定で Excelへデータ出力する方法:SampleFile204



テーブルやクエリデータをExcelへ出力する方法は、下記のページでご紹介していますが、今回は、特定のシートの特定のセルに対して出力する方法をご紹介します。

テーブルの作成

テーブルを下記のように作成します。

ID 配送日 担当者 請求先 料金1 料金2
1 2002/04/01 鈴木 株式会社A ¥1,500 ¥1,500
2 2002/05/19 佐藤 株式会社B ¥300 ¥1,200
3 2002/07/10 田中 株式会社C ¥1,200 ¥3,000
4 2002/08/20 中田 株式会社D ¥100 ¥2,000
5 2002/09/10 中村 株式会社E ¥300 ¥1,500
6 2002/11/11 新庄 株式会社F ¥1,200 ¥2,500
7 2002/12/11 村中 株式会社G ¥1,200 ¥4,000
8 2003/04/14 立花 株式会社H ¥3,000 ¥300

FunctionプロシージャToExcelの作成

このプロシージャは、Excelの特定セルにデータを出力する関数です。

Function ToExcel(StrDataName As String) 'データ元を引数としています。

On Error GoTo エラー

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim objEXE As Object
    Dim strmsg As String
    Dim intmsg As Integer
    Dim varinput1, varinput2, varinput3 As Variant
    
    strmsg = "Ms Excelへデータを出力しますか ?"
    intmsg = msgbox(strmsg, 17, "管理者")

    If intmsg = 1 Then

        Set db = CurrentDb
        
        '出力元のテーブルまたはクエリ名です。
        Set rs = db.OpenRecordset(StrDataName)

        '出力先のMs Excelを利用できるように設定します。
        Set objEXE = Excel.Application

        'Sub_PassGetは、サブルーチン関数です。
        varinput1 = InputBox("Excelファイルのパスを記述して下さい", ,  _
						Sub_PassGet & "sample.xls")
        If IsNull(varinput1) Then End
        objEXE.Workbooks.Open (varinput1)  'Excelファイルのパスを指定します。
        
        '既定のシート名をSheet1としています。
        varinput2 = InputBox("Excelファイルのシート名を記述します。", , "Sheet1")
        If IsNull(varinput2) Then End
        objEXE.Worksheets(varinput2).Select 'Sheet名を指定します。

	'例.セルB5を基点としてデータを出力します。
        objEXE.Cells(5, 2).CopyFromRecordset rs 
        objEXE.Quit

        Set rs = Nothing
        Set db = Nothing
        
    Else
    
        msgbox "処理を中止しました", 1, "管理者"
        
    End If
    
    Exit Function
    
エラー:

    msgbox "Error番号:" & err.Number & vbNewLine & _
            "Error内容:" & err.Description, 16, "管理者"
    End

End Function

FunctionプロシージャSub_PassGetの作成

このプロシージャは、Accessファイルのパスを返す関数です。

Function Sub_PassGet()

    Dim strx As String
    Dim stry As String

    strx = CurrentDb.Name  '現在のAccessファイルの所在パス
    
    'InStrRevは、文字列の中から指定された文字列を最後の文字位置から検索を開始し、
    '最初に見つかった文字位置(先頭からその位置までの文字数)を返します。
    stry = InStrRev(strx, "\")

    'Left関数は、文字列の左端から指定した文字数分の文字列します。
    Sub_PassGet = Left(strx, stry)

End Function

留意事項

一般的に、AccessからExcelを操作(シートやセルの指定)する場合は、下記のように参照設定ダイアログで設定を有効にする必要があります。

  1. Access2002の場合は、Microsoft Excel 10.0 Object Library を有効にします。
  2. Access2003の場合は、Microsoft Excel 11.0 Object Library を有効にします。
定義付け

Setステートメントを用いて

Set objEXE = Excel.Application

をプロシージャ内に記述すると、変数objEXE が利用できるようになります。

Excelの特定セルにデータを出力する簡易な関数

上記のToExcel関数は、データ元を引数として、エクセルファイルのパスやシート名をInputBoxを用いてユーザーに入力させる仕組みを用いていますので、やや複雑になっています。簡易にすると下記のようになります。


'***************************************************
'Excelの特定のセルにデータを出力する簡易な関数です。
'***************************************************


Function ToExcel簡易()

On Error GoTo エラー

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim objEXE As Object
    Dim strmsg As String
    Dim intmsg As Integer
    
    strmsg = "Ms Excelへデータを出力しますか ?"
    intmsg = msgbox(strmsg, 17, "管理者")

    If intmsg = 1 Then

        Set db = CurrentDb
        
        '出力元のテーブルまたはクエリ名です。
        Set rs = db.OpenRecordset("tbl_sample")

        '出力先のMs Excelを利用できるように設定します。
        Set objEXE = Excel.Application
        
        'Excelファイルのパスを指定します。
        objEXE.Workbooks.Open ("C:\sample.xls")
        
         'Sheet名を指定します。
        objEXE.Worksheets("Sheet1").Select
        
        '例.セルB5を基点としてデータを出力します。
        objEXE.Cells(5, 2).CopyFromRecordset rs
        objEXE.Quit

        Set rs = Nothing
        Set db = Nothing
        
    Else
    
        msgbox "処理を中止しました", 1, "管理者"
        
    End If
    
    Exit Function
    
エラー:

    msgbox "Error番号:" & err.Number & vbNewLine & _
            "Error内容:" & err.Description, 16, "管理者"
    End

End Function
留意点

サンプルファイルでは、AutoExecマクロにこのプロシージャを配置しています。

Excelシートへのデータ出力

Excelへは下記のように出力されます。シート名はSheet1、出力セルはB4(5,2)を基点にしています。

関連ページ

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

 


セル 位置指定で Excelへデータ出力する方法:SampleFile204


 

-Microsoft Access Club-