Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3597 / 13644 ツリー ←次へ | 前へ→

【61236】CTI(風)アプリケーションを作成したい みそじのおじさん 09/4/18(土) 9:30 質問[未読]
【61237】Re:CTI(風)アプリケーションを作成したい neptune 09/4/18(土) 17:44 発言[未読]
【61241】Re:CTI(風)アプリケーションを作成したい みそじのおじさん 09/4/18(土) 22:29 発言[未読]

【61236】CTI(風)アプリケーションを作成したい
質問  みそじのおじさん  - 09/4/18(土) 9:30 -

引用なし
パスワード
   毎度お世話になっております。
長文になりますが、よろしくお願い致します。

去年の暮れにこちらでアドバイスを頂きました。その節はありがとうございました。
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=59578;id=excel

Excel+ADO+Accessで整備会社のシステム作成という内容でした。
年明けからPCが一台増え現在3台のPCで運用しています。大きなトラブルもなく現
在まで至っております。(ADOのトランザクション処理にはかなり助けられていま
す。)

さて本題ですが、先日社長から「お客さんから電話が掛かって時に、そのお客さん
のデータをPCに表示してほしい」と言われました。(Excelフォームです。)
 
今使用しているビジネスフォンがこちらなので
使用する機器はこれになる予定です。

ナカヨ電子サービス
http://www.nakayo.co.jp/product/system/nd_m/constraction.html

主装置(交換機)はすでにこちらの製品を使用していますので後は、CTI対応の
電話機に変えれば、実現できるそうです。こちらの会社ではCTIアプリケーション
ソフト、及びソフト開発用(電話機とPC間の通信をする為の)のActiveXを販売し
ておりますが、できればすべて自前でいきたいと思っています。予算がないもの
で....現在電話機の見積をとっていますが金額が高ければ、違うメーカーの物に
なるかもしれません。(リースでも高そうです...)

こちらのCTI対応の電話機だと
接続方法は、交換機 - 電話機 -(RS232C接続)-PC ですので私が用意しなければ
いけないプログラムは、PCのCOMポートの常駐監視だと思うのですが、機器がない
、電話機の詳しい仕様が現在わからないので(返答待ちです。)こちらは手が
つけられない状態です。

待ってばかりもいられないので
絶対に実現するんだと自分にプレッシャーをかける為に、着信番号を引数として
excelに渡ってきた後の処理は実装しました。

違うメーカーの物だと着信番号をCSV形式でログファイルとして吐く物がありまし
た。このタイプだとCOMポートの監視はいらず、ログファイルを監視するだけで着
信番号がわかるので、実験がてらVBSでログファイルを監視するプログラムを作成
しました。


処理の流れは

PC電源ON時にログファイル監視VBS起動(着信があるまで無限ループ)
ファイルの監視方法は起動時にログファイルのコピーを作成して2つのファイル
の差分を見るというものです。

着信がありログファイルが更新されると、着信番号をCSVから抜き出して
該当excelの起動状態を確認して、起動していなければ起動しsheetモジュールに
作成してあるPublic Subを引数付でキックする。(標準モジュールだと駄目なん
ですね!)VBSはここで終了

Excel SubではADOにてAccessファイルより該当顧客を探してきてExcelフォームに
表示する。
(車検・整備の予約受付をしたり、その顧客の車の修理履歴表示や
エンジンオイルの最終交換日なんかも出ます。左手に受話器を持っている事を
想定して、右手のマウス操作のみですべて操作できるように改良しました。こう
する事で自分の担当でないお客さんとでもスムーズに話が進みますよね!!)

フォーム表示後、ログファイルのコピーを取り直し、再びexcelよりVBSをキック
して着信待ちのループに入る。

実験(VBSを起動し、自分でログファイルに電話番号を入力する)ではうまくいき
ましたが、ログファイルを吐くタイミングが電話を切った後とかだとこの方法は
まったく使えません。(この辺も購入していないので詳しくはわかっていません。)
着信からフォーム表示までは遅くても5秒以内が目標です。

やはりCOMポート監視というのが現実的でしょうか?
以前、VBAでAPIを使用して工作機械とPCをRS232Cでつないで、データの送受信を
するプログラムを作成しました。その時は例えばPCが受信側だとするとまずPC側
を受信待ちのループにいれて(タイムアウト付)それから、工作機械からデータ
を送信する(これは人がボタンを押す事によって送信がスタートする)という物
でした。
 今回はいつ掛かってくるか分からない着信に対応するという事で、常駐監視と
いう部類になると思うのですが、この辺りの知識が乏しく見通しが立っておりま
せん。APIを使えばVBAでも実現できる!!と信じていますが、いかんせんVBAで常
駐となると他の操作をする時が心配です。年明けからVB.NETもはじめましたが、
日々の本業の仕事や、現在作成しているシステムの細かな修正で手が回っていない
というのが現状です。(.NET難しいです....)

 使用する機器依存が大きい話なのに使う機器が未定のまま質問してしまい申し
訳ありません。

こういったシステムを作成するにあたっての作成方針や使う言語、などアドバイス
頂けると幸いです。 かなりの長文失礼いたしました。

【61237】Re:CTI(風)アプリケーションを作成した...
発言  neptune  - 09/4/18(土) 17:44 -

引用なし
パスワード
   ▼みそじのおじさん さん:
こんにちは

すごい事考えてますね^ ^;;
私はやった事もないし、これからも多分そのような事はしないだろう
と思いますので残念ですが、アドバイスは差し上げる事は出来ません。

>こちらのCTI対応の電話機だと
>接続方法は、交換機 - 電話機 -(RS232C接続)-PC ですので私が用意しなければ
>いけないプログラムは、PCのCOMポートの常駐監視だと思うのですが、機器がない
>、電話機の詳しい仕様が現在わからないので(返答待ちです。)こちらは手が
>つけられない状態です。
通信の仕様がわからないのはキツイですね。

>着信からフォーム表示までは遅くても5秒以内が目標です。

RS232Cの経験がおありになるのでしたら、考え方はわかるでしょうから
後は、通信仕様に沿った常駐ソフトを作れば、後は構想が出来ているよう
ですから、何とでもなりますね。

せっかくVBを始めたのですから、VBで作りましょう。Excelは常駐
で使うのはリソース(資源)の無駄ですし、なんか怖いです。
VBで作った方がリソースの面では明らかにPCにやさしいと思います。

ちょっとだけ調べてみました。この辺りが手掛かりになりませんかね?

シリアル通信機能 (サンプルコードあり)
ht tp://msdn.microsoft.com/ja-jp/library/cc720852.aspx
My.Computer.Ports オブジェクト
ht tp://msdn.microsoft.com/ja-jp/library/e4560dx9.aspx
方法 : Visual Basic でシリアル ポートから文字列を受信する
ht tp://msdn.microsoft.com/ja-jp/library/7ya7y41k.aspx

常駐プログラムは極端に言えば、プログラムを走らせて、PC終了まで
プログラムも終了ささないというもんですから、難しく考えなくても良いのでは?
タスクトレイ(昔はシステムトレイと言った奴)に収めておけば邪魔にも
ならない。
これもググれば沢山サンプルがあると思います。(いろんな言語で)
言語はやはり、生C+APIが軽いとは思いますが、、、frameworkを
使った方がMy.Computer.Ports オブジェクトなども用意されてますから
それで出来るならそれに越した事はないと思います。

MSDNですが、もしExpressバージョンで勉強中なら、MSから
「MSDN Library for Visual Studio 2008 SP1 (2008年12月更新版)」
ht tp://www.microsoft.com/downloads/details.aspx?FamilyID=7bbe5eda-5062-4ebb-83c7-d3c5ff92a373&DisplayLang=ja
をDLできます。フルセットです。
Express判のMSDNとは情報量が比較になりません。
これをお使いになる事をお勧めします。

後、もし、VBで作成するなら、
「Visual Basic 中学校 」
ht tp://homepage1.nifty.com/rucio/main/main.htm
「VBレスキュー」
ht tp://hanatyan.sakura.ne.jp/
などの掲示板が、プロも覘いているし、比較的質問し易い雰囲気です。

※各掲示板の使用上の注意は読んでから質問してくださいね。
 Excelの掲示板とは比較になりませんので。
みそじのおじさん さんの質問の仕方なら大丈夫と思いますが、念の為。

役にも立たん事を長々と書きました。頑張って下さい。

【61241】Re:CTI(風)アプリケーションを作成した...
発言  みそじのおじさん  - 09/4/18(土) 22:29 -

引用なし
パスワード
   ▼neptune さん:
こんばんは。
返事がおくれて申し訳ありません。現在夜勤のサイクル中で生活のリズム
が人と逆になっております。

>すごい事考えてますね^ ^;;

いえいえ、義兄に言われなければ自分からは出てこなかった事で、いつも私の
スキル以上の事を要求してくるのでやりがいがありますね。この前は
「バーコードリーダを使いたい」と言われ
「ちょっと待ってて下さい。実装できるか調べてみますね。」と伝えると
「いや、実は今日物が届いたんだけど、、、」
「えっ 買っちゃったんですか!!俺できるか分かんないですよ!!」
こんな具合に、けっこうハチャメチャなんですよね(笑)

バーコードリーダーはアクティブな画面にKeyCodeを送ってくるという
単純な物だったので、そんなに苦労せず実装できましたが今回の案件は
非常に苦労しそうです。

>私はやった事もないし、これからも多分そのような事はしないだろう
>と思いますので残念ですが、アドバイスは差し上げる事は出来ません。

いえ、レス頂けるだけで助かっております。


>ちょっとだけ調べてみました。この辺りが手掛かりになりませんかね?

>My.Computer.Ports オブジェクト
>ht tp://msdn.microsoft.com/ja-jp/library/e4560dx9.aspx

これは.net版のMScommといった所ですかね?これで行けそうですね。
私は、サクサクと書けない言語より、VBAでAPI使用でたとえ1万行書く事
になろうとも、まだVBAの方が楽だなんて考えていたのですが、用意されて
いる物を使わない手はないよですよね。そろそろ本腰入れなければと、思い
ました。


>後、もし、VBで作成するなら、
>「Visual Basic 中学校 」
>ht tp://homepage1.nifty.com/rucio/main/main.htm
>「VBレスキュー」
>ht tp://hanatyan.sakura.ne.jp/
>などの掲示板が、プロも覘いているし、比較的質問し易い雰囲気です。

どちらも毎日みていますが、VBレスキューはプロの方々が多いので
下手の質問はできないと、尻込みしておりました。(突っ込まれかたが
非常に深いので)


>役にも立たん事を長々と書きました。頑張って下さい。

いえ、方針が見えてきました。いつもありがとうございます。

このサイトにもmougや色々なサイトで活躍されているAbyssさん、nさん
や、APIバリバリのYukiさん、職業プログラマだと睨んでいるneptuneさん
(違いました?)などスキルの高い方々がそろっていますので
もう少しこのスレ開けさせておいて下さい。
 VBAで実装した事がある。なんて方がいるかもしれませんし色々な
意見をきいてみたいです。

それでは、失礼致します。

3597 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free