Microsoft Access 掲示板

DDEExecuteを使ったExcel操作について

1 コメント
views
4 フォロー

誰も中身を知らないAccessのソフトウェアがあります。(Access95で開発されたもの)
このたび他言語に置き換えるために、Excelファイル操作のマクロを確認しています。
Excelファイル出力処理は、DDEという仕組みを使っております。

その中で、以下の処理があったのですが、何をしようとしているのか理解できませんでした。
(シート移動かなとも思ったのですが、Moveメソッドの使い方が異なるように思います)

DDEExecute ch, "[Workbook.Move(""" + sheet_name + """,""" + book_name + """," + sheet_cnt + ")]"

上記コマンドをAccess 2016にて動作させてみたのですが、
「他のアプリケーションで、指定した DDE 関数またはデータ取得を行うことができません。」というエラーとなります。
上記コマンドはExcelに何をさせようとしているか、教えていただけないでしょうか。

検証用に書いたコードは以下の通りです。
(こちらのサイトを参考にしました。)

Dim ch As Variant
   Dim s1 As Variant
   Dim c As Integer
   Dim data As Variant

   On Error GoTo err1

   ' Excelファイル「成績表」とDDE変換を開始する
   ch = DDEInitiate("Excel", "d:\test.xls")
   ' ワークシートの11行目1列にインプットボックスで入力した値を代入する
   data = InputBox("住所をを入力してください。")
   DDEPoke ch, "R11C1", data

   DDEExecute ch, "[Workbook.Move(""Sheet2"",""d:\test.xls""," + "2" + ")]"

   ' DDEチャンネルを閉じる
   DDETerminate (ch)
   Exit Sub

err1:
   If Err = 282 Then
       ' Excelを実行する
       s1 = Shell("C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE")
       ' ExcelとDDE変換を開始する
       ch = DDEInitiate("Excel", "system")
       ' Excelファイルを開く
       DDEExecute ch, "[open(""d:\test.xls"")]"
       Resume
   Else
       MsgBox (Error)
   End If

gou
作成: 2020/12/18 (金) 11:55:47
通報 ...
1
hiroton 2020/12/18 (金) 14:29:23 5bcaf@f966d

質問のコードには4つの変数が含まれています。それぞれ中身はなんですか?

ch = ?
sheet_name = ?
book_name = ?
sheet_cnt = ?
DDEExecute ch, "[Workbook.Move(""" + sheet_name + """,""" + book_name + """," + sheet_cnt + ")]"

これに対してテストコードはきちんと同様の内容になっていますか?

DDEExecuteはどうやらExcel4.0マクロのコマンドが使えるようです。Workbook.Moveはシート移動のコマンドのようです
テストコードは

DDEExecute ch, "[Workbook.Move(""Sheet2"",""d:\test.xls""," + "2" + ")]"
↓
DDEExecute ch, "[Workbook.Move(""Sheet2"",""test.xls""," + "2" + ")]"

としたら動作しませんか?