- 締切済み
こんなことできますか?
当方、療養中にて薬剤管理が大変。 現在、14種の薬を食前・食後・食間・頓服・疼痛時などに分けて飲用中。 が、過去に処方された薬に変更されることも多々あり、その場その場,自己判断に任せられている薬もあります。 合計70(ここ1年で出された種類)~130種(更に以前も含める)程度の薬の管理がしたいです。 要は、何時にどの薬を飲んだのかを、日々忘れずに記録しておきたいのです。 エクセル&VBで管理できることができるかから、まずは伺いたいです。 できるとしたら、どのように式を組めば良いかも是非お願いします。 理想としては、飲用時刻になったらメッセージを表示させ、飲んだならOKをクリック,本日の日付の一覧に時刻と飲んだ薬剤名を表記、飲まなかったならNOをクリック,薬剤名ともに表記なし。 こんな感じが理想なのですが、まず、時間になったらメッセージを表示させることなどできるのでしょうか? 当方、VBは超初心者ですが、薬剤管理に本当に困っています。 どうか、お力添えをお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- hofuhofu
- ベストアンサー率70% (336/476)
> エクセル&VBで管理できることができるか VBを使えば大概のことはできます。 薬剤管理くらいなら問題ないはずです。 > 時間になったらメッセージを表示させることなどできるのでしょうか TimeやNowで現在時刻がわかるので、Sleepで適当な時間待機しながら(Sleepを使わないとCPUパワーを全部持っていかれる)指定した時間になっているか確認したらどうでしょう。 VBAの場合はSleepを使うのに、kernel32を取りこまないといけないみたいですけど(VB、VBスクリプトはそのまま使える)。 http://homepage1.nifty.com/tsware/tips/tips_045.htm 例としてVBスクリプトのサンプルを載せておきます。 drag.vbsといったような名前で保存してみてください。 [drag.vbs] ----------------------------------------------- Set WshShell = WScript.CreateObject("WScript.Shell") Dim ShowTime(2) ShowTime(0) = "07:00:00" ShowTime(1) = "12:00:00" ShowTime(2) = "19:00:00" Do For Each st In ShowTime If Hour(st) = Hour(Now) and Minute(st) = Minute(Now) Then WshShell.Run "drag.hta" WScript.Sleep 60000 End If Next WScript.Sleep 15000 Loop ----------------------------------------------- 7時、12時、19時にdrag.htaを実行(もちろんメッセージを表示させることも可)するようになっています。 実行しても画面には何も変化が無いので、2000/XPならタスクマネージャー、9x系なら[Ctrl]+[Alt]+[Del]でWscriptが起動しているか確認してください。 drag.htaのサンプルはこんな感じです。 [drag.hta] ----------------------------------------------- <script language=VBScript> <!-- Set fso = CreateObject("Scripting.FileSystemObject") Set dlcsv = fso.OpenTextFile("draglist.csv", 1, False) htmltext = "<html><body BGCOLOR=#C0C0C0><form name=draglist>" While dlcsv.AtEndOfStream = False temp = dlcsv.ReadLine htmltext=htmltext & "<INPUT TYPE=checkbox NAME=" & temp & ">" & temp & "<br>" Wend htmltext=htmltext & "<br><INPUT TYPE=button NAME=Save Value=更新></body></html>" Document.Write htmltext dlcsv.Close Sub Save_OnClick Set result = fso.OpenTextFile("drag.csv", 8, True) htmltext = "<html><body BGCOLOR=#C0C0C0>保存しました <INPUT TYPE=button VALUE=終了 onClick=window.close()><br><br>" & Date & "<br>" & Time & "<br><br>" result.Write(Date & "," & Time) dragcount = Document.Forms("draglist").Length - 2 For i=0 To dragcount If Document.forms("draglist").item(i).checked = true then htmltext = htmltext + Document.forms("draglist").item(i).Name +"<br>" result.Write("," & Document.forms("draglist").item(i).Name) End If Next htmltext = htmltext & "</body></html>" result.Write(vbcrlf) Document.Write(htmltext) result.close End Sub --> </script> ----------------------------------------------- 薬剤のリストを表示してチェックした項目を日付・時間と共にdrag.csvに保存するようになっているので、Excelで開けば結果をみることができます。 多分に我流が入っているので、正規の文法を無視している部分が多々あるはずなので、気になるようでしたら直してください。 あとソフトとして「骨」の部分だけになっているので、肉付けはご自分で適当にお願いします。 htaがどういったものかはこちらを見てください。 http://webtakurou.hp.infoseek.co.jp/hta/hta.htm それからdrag.htaは薬剤リストとしてdraglist.csvを必要とするようになっています。 薬剤の名前を羅列した、ただのテキストファイルです。 [draglist.csv] ----------------------------------------------- ペニシリン メチシリン フルクロキサシリン アンピシリン アモキシシリン カルベニシリン セファロスポリン ----------------------------------------------- ※あくまでど素人が作ったいいかげんな代物ですので、もし使うのであれば自己責任でお願いします。
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルVBA(2000)です。 私も初心者で十分判っていませんが、下記を作って見ました。 UserForm1を使い、Label1,Label2,Label3の3つのコントロールを貼りつけ Private Declare Function timeGetTime Lib "winmm.dll" () As Long Dim lngStartTime As Long Dim e As Long Public s As Long Private Sub UserForm_Click() lngStartTime = timeGetTime e = Int(lngStartTime / 1000) Label2.Caption = e Label3.Caption = e - s End Sub Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean) lngStartTime1 = timeGetTime s = Int(lngStartTime1 / 1000) Label1.Caption = s End Sub 実行し、Formをダブルクリックでスタートし、クリックで途中の時間を表示します。 これで「色々変えて遊んで」みて、(1)何時何分になると(A)(B)をさせる(2)何分後になると(A)(B)をさせる(A)Beepで音を鳴らす (B)メッセージを出すなどのコードを勉強されてはどうでしょう。 どこをどう変えて発展させるべきか、さっぱり進まないようなら、VB(A)で作るのは諦めて、手操作で出来ることで辛抱するか、既製ソフトを探すべきでしょう。 (Private Declare Function timeGetTimeの部分はAPIですが、そのなかで一番短いもののようで、丸呑みしましょう。)
- HAL007
- ベストアンサー率29% (1751/5869)
>>エクセル&VBで管理できることができるかから、まずは伺いたいです。 エクセル及びエクセルのVBでは時間監視の方法がないと思います。 従って、時間が来たらメッセージを出す機能を作り込めません。 Visual Basicなら言語になりますのでプログラミングを覚えれば 要件を満たす機能を作り込む事は容易です。しかし、プログラミングを 覚える必要があることやテストをしっかりしないと内容が内容だけに お勧めできません。 何か使えるものがないか考えて思い付いたのがスケジュール管理ソフトです。 薬の管理は出来ませんが、何を何時に服用するかを登録すれば、数分前に 表示させる事が出来ます。 参考URLは無料で使えるソフトです。 薬の量が大変多いので驚いています。お体を大切にして下さい。