| Microsoft Access Club >SampleFile >インデックス >このページ >次頁 < 前項 | |
|
テーブルの作成テーブルを下記のように作成します。
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を操作(シートやセルの指定)する場合は、下記のように参照設定ダイアログで設定を有効にする必要があります。
定義付け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)を基点にしています。
関連ページ
|