誰も中身を知らない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
質問のコードには4つの変数が含まれています。それぞれ中身はなんですか?
これに対してテストコードはきちんと同様の内容になっていますか?
DDEExecute
はどうやらExcel4.0マクロのコマンドが使えるようです。Workbook.Move
はシート移動のコマンドのようですテストコードは
としたら動作しませんか?