| Microsoft Access Club >SampleFile >インデックス >このページ >次頁 < 前項 | |
|
Excelファイルの作成今回、DDEを用いて、AccessのテーブルデータをExcelのワークブックに書き込みます。 サンプルファイルを実行する前に、Cドライブにエクセルファイル Good.xls を作成します。このExcelファイルにはデータは不要です。
留意点現在では、DDEを用いずOLEを使用した方が、アプリの組み方でいろんな選択肢を用いることができます。
DDEの流れDDE接続チャンネルを確立すると、後はExcelファイルを開くだけです。なお、DDEの流れは、
この流れで進みます。 DDEExecute メソッド Excelファイルを開くDDE接続を行うExcelファイルを事前に作成する必要があります。サンプルでは、CドライブにGood.xlsファイルを作成しています。 Functionプロシージャの作成Function DDEExcelWrite()
On Error GoTo エラー
Dim MyChan As Long
Dim MyChan2 As Long
Dim strExcelPath As String
Dim strFilePath As String
Dim intNo As Integer
Dim CN As New ADODB.Connection
Dim RS As New ADODB.Recordset
Set CN = CurrentProject.Connection
RS.Open "tbl_sample", CN, adOpenKeyset, adLockOptimistic
'Excelのフルパスを記述します。
strExcelPath = "C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE"
'Excelファイルの保存パスを記述します。
strFilePath = "C:\Good.xls"
Shell strExcelPath, 1
MyChan = DDEInitiate("Excel", "System")
'Excelファイルを開きます。
DDEExecute MyChan, "[open(""" & strFilePath & """)]"
'Sheet1とDDE接続を確立します。
MyChan2 = DDEInitiate("Excel", "Sheet1")
Do Until RS.EOF
intNo = intNo + 1
DDEPoke MyChan2, "R" & intNo & "C1", RS!ID
DDEPoke MyChan2, "R" & intNo & "C2", RS!取引先
DDEPoke MyChan2, "R" & intNo & "C3", RS!売上金額 & "円"
RS.MoveNext
Loop
RS.Close
Set RS = Nothing
CN.Close
Set CN = Nothing
DDETerminate MyChan
DDETerminate MyChan2
Exit Function
エラー:
MsgBox "予期せぬエラーが発生しました" & vbNewLine & _
Err.Number & " : " & Err.Description
End
End Function
解説
DDEPokeメソッドDDEPokeメソッドは、DDE接続の相手方(今回ではExcel側)にデータを書き込みます。 DDEPoke MyChan2, "R" & intNo & "C1", RS!ID
DDEPoke MyChan2, "R" & intNo & "C2", RS!取引先
DDEPoke MyChan2, "R" & intNo & "C3", RS!売上金額 & "円"
DDEPoke MyChan2, "R" & intNo & "C1", RS!ID
単純に文字列をA1セルに書き込む場合などは、
と、します。 サンプル例下図は、DDEPokeメソッドを用いて書き込んだ一例です。
CreatObject メソッド の利用(参考)CreatObjectメソッドを用いて上記のプロシージャを書き換えると、下記のようになります。 Function ExcelCreateObject()
On Error GoTo エラー
Dim intNo As Integer
Dim CN As New ADODB.Connection
Dim RS As New ADODB.Recordset
Set CN = CurrentProject.Connection
RS.Open "tbl_sample", CN, adOpenKeyset, adLockOptimistic
' オブジェクトへの参照を格納するためにオブジェクト変数を宣言します。
' Dim as Object で宣言すると、実行時バインディングが行われます。
Dim xl As Object
Set xl = CreateObject("Excel.Sheet")
' Application オブジェクトから Excel のワークシートを表示します。
xl.Application.Visible = True
Do Until RS.EOF
intNo = intNo + 1
xl.Application.Cells(intNo, 1).Value = RS!ID
xl.Application.Cells(intNo, 2).Value = RS!取引先
xl.Application.Cells(intNo, 3).Value = RS!売上金額 & "円"
RS.MoveNext
Loop
' ワークシートをファイル C:\Good.xls に保存します。
xl.SaveAs "C:\Good.xls"
' Application オブジェクトの Quit メソッドで Excel を終了します。
xl.Application.Quit
RS.Close
Set RS = Nothing
CN.Close
Set CN = Nothing
' オブジェクト変数を解放します。
Set xl = Nothing
Exit Function
エラー:
MsgBox Err.Description
Exit Function
End Function
関連ページ
|