[[20031103070609]] 『マクロを使用してCOMに出力』(サム) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロを使用してCOMに出力』(サム)

先週からマクロを勉強し始めた初心者です。
マクロを使用してデータを加工し、CSVファイルで保存。
保存したファイルをCOMに出力したいと思っているのですが、
マクロでそこまでの作業は可能でしょうか?
宜しくお願い致します。


 COMって何でしょうか?
 RS232Cのシリアル通信のことですか?
 (INA)


 多分 COM は[INA]さんが言う RS232Cポート のことだと思います。

 技術的には可能ですが、[プログラムの知識]+[RS232Cの知識]+[ハード知識]
 が必要です。もしその部分を処理する市販のプログラムがあるのならそれを
 使うことをお勧めします。

 私も以前デジタル電圧計で測定した結果をリアルタイムにExcelに持ってくる処理が
 必要になってやろうとしましたが、時間的な制約もあって、市販のソフトを購入
 しました。今回は逆に送る方ですが。

(kazu)


 私は今でもシリアルポートを使って、ある処理をさせてます。勿論市販ソフト使用ですが。
 端末機器が十数年前の物で USB 不対応 でやむなく RS232C です。

 エクセルにもインポートさせてますので
 横取り用の美味しいコードが、、、と期待したのですがチョット残念(笑)   (jun53)


言葉足らずで申し訳ありません。
皆さんが思っている通り、COMとはRS232Cポートのことです。

(kazu)さん、技術的には可能との事ですが、マクロの記述のみで可能という事ですか?
とりあえず、ステータスの確認等の制御なしで232Cポートから吐き出せれば良いのですが、何とか市販ソフトを使わずにやりたいので、出来ましたらもう少し具体的に説明をお願いできませんか?
宜しくお願いします。
(サム)


 Webを調べました。
 ↓のサイトのNcard9911.lzh(63.1KB)が役に立つかもしれません。
 Excel VBA によるOMRの制御

 (kazu)
http://www11.ocn.ne.jp/~nontomo/egawa/ncard.html

 ---------- ↓Ncard9911.xlsのVBAの一部分 ----------

 Private Sub CommandButton1_Click()
    'シリアルポートをオープンする
    Const GENERIC_READ = &H80000000          '読み取り用定数
    Const GENERIC_WRITE = &H40000000         '書き込み用定数
    Const OPEN_EXISTING = 3                  '既存のファイルをオープンする
    comname = "COM1"                         '使用するポートに応じて"COM2"などに変更する
    hComm = CreateFile(comname, GENERIC_READ Or GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0)
    If hComm = -1 Then MsgBox comname & "が使えません", 16: End
    dummy = GetCommState(hComm, stDCB)       'DCBを読み込む
    stDCB.BaudRate = 9600                    '転送速度を9600bpsにする
    stDCB.ByteSize = 7                       'ビット長を7ビットに指定
    stDCB.DCBflgs = &H3001                   'バイナリモードのフラグを有効にし
                                             'RTSの制御を設定する(それ以外はFalseにする)
    stDCB.Parity = 0                         'パリティなし
    stDCB.StopBits = 2                       'ストップビット数を指定( 0=1ビット,1=1.5ビット,2=2ビット)
    dummy = SetCommState(hComm, stDCB)       '必要ば部分だけ書き換える

    timeOut.ReadIntervalTimeout = 500            'タイムアウトの設定
    timeOut.ReadTotalTimeoutMultiplier = 0       'シート1枚につき0.5秒もあれば十分処理できる
    timeOut.ReadTotalTimeoutConstant = 500       '
    timeOut.WriteTotalTimeoutMultiplier = 0
    timeOut.WriteTotalTimeoutConstant = 500
    dummy = SetCommTimeouts(hComm, timeOut)


 MsCommコントロールとAPIを使う方法2通りについて、
 丁寧に説明されていますので、こちらを読んで勉強してみて下さい。  

http://speana-1.hp.infoseek.co.jp/vb/vb_menu.htm

  (INA)


 [INA]さん、いつもありがとうございます、私も一度書き込んで消したのですが、
 これは VBA ではなく VB ではないでしょうか?
(kazu)


 実際に使用したわけではないので分からないのですが、
 VBの説明だと何か問題があるのでしょうか?
 EXCELでもAPI関数は利用できますし、MsCommも追加すれば利用できますが、
 これらの方法だと不都合があるのでしょうか?

    (INA)


 言い方が悪かったかもしれません。
 VB の説明が VBA では役に立たないとは言いません。

 (kazu)

 サムさん、度々割り込んでごめんなさい。

 kazuさん紹介の Web [Excel VBA によるOMRの制御]
 今懸命に解読中。頭のネジがギシギシいってます。

 INAさん紹介の Web [Visual Basic 解説]
 以前他のところで紹介されてたので、読んだ事が有るのですが、
 こちらも、頭のネジがギシギシ。

 VBA の道は険しく遠いです。2,3年の修行が必要かも、です(笑)   (jun53)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.