DDE(Dynamic Data Exchange)通信を使用し、Excelファイルを開き指定したシートの指定したセルからデータを取得します
■ 取得するExcelシート
B列に日付、C列に曜日が入力されたカレンダーシートです。 この日付と曜日を取得します。
■ 実行Accessフォーム
[Excelを開く]ボタンをクリックすると、DDE通信を開始し取得した日付と曜日をテキストボックスに表示します。
■ DDE通信の流れ
- Shell関数でExcelを起動
- DDEInitiate関数で、DDEサーバーとソフトとの間で送受信するチャンネルを開く
- DDEExecute関数で、指定したファイルを開く
- DDEInitiate関数で、指定したシートと通信を開始する
- DDERequest関数で、セルを指定しデータを取得する
- DDETerminate関数で、終了
■ Access VBA 実行コード例
Option Compare Database
Option Explicit
Private Sub コマンド0_Click()
Dim vret As Variant
Dim lch As Long
Dim v1 As Variant
Dim i As Long
Dim j As Long
'Excel実行
vret = Shell("C:\Program Files (x86)\Microsoft Office\Office14\excel.exe")
'DDE通信開始
lch = DDEInitiate("Excel", "system")
'開くExcelファイルを指定し、開くを実行
DDEExecute lch, "[open(""c:\dam11\calen.xlsx"")]"
'Sheet1と通信します
lch = DDEInitiate("Excel", "Sheet1")
Me!テキスト3 = ""
For i = 1 To 16
For j = 1 To 3
'i行・j列 からデータを取得
v1 = DDERequest(lch, "R" & i & "C" & j)
If v1 <> "" And Asc(v1) <> 13 Then
Me!テキスト3 = Me!テキスト3 & Mid(v1, 1, Len(v1) - 1)
End If
Next
If v1 <> "" And Asc(v1) <> 13 Then
Me!テキスト3 = Me!テキスト3 & vbCrLf
End If
Next
'DDE終了
DDETerminate (lch)
End Sub