FAQ

FAMOS

FAMOS全般top

DDE通信

ID.

Q. ExcelからDDE通信できません

A.


Windows95上でExcel95,97を使用した場合、<DDEExecute>に問題があることが知られています。DDE (DDEML.DLL)を使用する全てのDDE-clients(AutoCad, FoxPro, CC:Mailなど)が影響されます。

(Windows NTでは問題ありません。また、他のDDEコマンド、Winword, Access etc..でも問題ありません)

この問題を回避するためには、Windows-API-Functionsを使用して直接FAMOSにコマンドを送出する必要があります。

' 例題:ExcelからFAMOSへのコマンド送信
' ExcelのDDEExecute問題について
' Windows95とFamos3.1で検証, Excel97で動作確認
' マクロを実行させる際にFAMOSが動作していなければなりません
Rem *** Windows Api
Functions の宣言
Declare Function FindWindowA Lib "User32" ( _
  ByVal ClassName As String, _
  ByVal Caption As String) As Long
Declare Function SendMessageA Lib "User32" ( _
  ByVal Window As Long, _
  ByVal Message As Integer, _
  ByVal wParam As Integer, _
  ByVal lParam As String) As Long
Declare Function PostMessageA Lib "User32" ( _
  ByVal Window As Long, _
  ByVal Message As Integer, _
  ByVal wParam As Integer, _
  ByVal lParam As String) As Long
Declare Function GetDlgItem Lib "User32" ( _
  ByVal Window As Long, _
  ByVal id As Integer) As Long
Sub DDETest()
  DoFamosExecute("sequ 1.seq")
End Sub
Sub DoFamosExecute(Command As String)
  Rem *** 最初にFamosオペレーションウィンドウを検索...
  hwndFamos = FindWindowA("FAMOS3", "FAMOS")
  hwndDlg = GetDlgItem(GetDlgItem(GetDlgItem(hwndFamos, 0), 1001), 0)
  hwndOpBox = GetDlgItem(hwndDlg, 1070)
  If (hwndOpBox <> 0) Then
      Rem *** オペレーションウィンドウにテキストを設定
      SendMessageA hwndOpBox, 12, 0, Command ' 12: WM_SETTEXT
      Rem *** 実行ボタンをクリック
      PostMessageA hwndDlg, 273, 1,"" ' 273: WM_COMMAND, 1: ID of OK-Button

' WINUSER.H
  #define WM_COMMAND 0x0111

  End If
End Sub


製品詳細はこちら

<< DDE通信に関するFAQ一覧へ戻る