パス活用状況報告その後の後
まえに作った、Excelベースのパス活用状況報告。
昨日の会議で、「こんなもの作ってみました」と報告。
いろいろ意見をいただきました。
- パスそのものの電子化が進んでいないので、医師が端末からのパスでの指示を入力することは困難
- 集計・評価をするスタッフのためには、メインサーバーにこのファイルを置いてほしい
- 可能なら、同時アクセスできるのがよい
- 使用するパスのコンボボックスには、過去の入力履歴がリストアップされるとよい
これは、大変ですよ。
デジカメ写真の整理どころではありません。
問題は、メインサーバーに置いても同時にアクセスすることができないこと。
調べてみると、Excelでは「共有ブック」という形で保存すると同時アクセスすることが可能になるようだが、残念ながら苦労して作ったマクロは制限されて使えない。
そこで、考えました。
- 各部署の端末に、苦労して作ったマクロ入りExcelファイルを配布。
- メインサーバーには、マクロ無しの共有ブックとしてのパス活用状況リストを作成
- 各端末のマクロから、メインサーバーの活用状況リストファイルを操作する
- パスのデータへのリンクはせず、「活用状況報告」のみに絞る
ということで、修正してみる。
クリニカルパス活用状況報告と同じ項目で、Excelワークシートを作成。
「ツール」「ブックの共有」へと入り、
「複数のユーザーによる同時編集と、ブックの結合を許可する」にチェックを入れ、「OK」。
こちらはこれで完成。
次は、端末用の「クリニカルパス活用状況報告」ユーザーフォームマクロの修正。
コードはこんな感じ。
Private Sub 状況報告ボタン_Click()
Dim ctrl As Control, txt1 As String, txt2 As String
Dim ret As Integer
For Each ctrl In Me.Controls
Select Case ctrl.Name
Case "病棟名", "患者ID", "患者氏名", "使用するパス", "開始する年", "開始する月", "開始する日"
If Len(Trim$(ctrl.Text)) = 0 Then
txt1 = txt1 & ctrl.Name & vbLf
Else
txt2 = txt2 & ctrl.Text & vbLf
End If
Case Else
End Select
Next
If Len(txt1) > 0 Then
MsgBox "以下の項目を入力してください" & vbLf & txt1, vbExclamation
Exit Sub
Else
ret = MsgBox("以下の内容を入力します" & vbLf & txt2, vbOKCancel)
If ret <> vbOK Then Exit Sub
End If
Range("a2") = 病棟名.Value
Range("b2") = 患者ID.Value
Range("c2") = 患者氏名.Value
Range("d2") = 使用するパス.Value
Range("e2") = 開始年.Value
Range("f2") = 開始月.Value
Range("g2") = 開始日.Value
With 状況報告ボタン
.Enabled = Not .Enabled
End With
With 保存して終了ボタン
.Enabled = Not .Enabled
End With
End Sub
Private Sub 中止ボタン_Click()
ret = MsgBox("クリニカルパス活用状況報告を中止しますか?", vbOKCancel)
If ret <> vbOK Then Exit Sub
ActiveCell.EntireRow.Delete
Application.DisplayAlerts = False
Application.Quit
Unload クリニカルパス
End Sub
Private Sub 保存して終了ボタン_Click()
Workbooks("PATHWAY.xls").Worksheets("Sheet2").Range("2:2").Copy
'端末用ファイルの新規のデータをコピー
Dim strdir As String
strdir = "C:\Documents and Settings\All Users\Documents\クリニカルパス活用状況.xls"
Workbooks.Open strdir
'仮想別サーバーとして、うちのパソコンの共有フォルダに保存(意味ない)
Workbooks("クリニカルパス活用状況.xls").Worksheets("Sheet1").Range("A2").EntireRow.Insert
'共有ブックの活用状況リストの2行目に行を挿入
Workbooks("クリニカルパス活用状況.xls").Worksheets("Sheet1").Range("A2").PasteSpecial Paste:=xlValues
'コピーしたデータを貼り付ける
Application.Quit
Application.CutCopyMode = False
Workbooks("クリニカルパス活用状況.xls").Close savechanges:=True
Workbooks("PATHWAY.xls").Close savechanges:=True
'端末用とサーバー用を保存して終了
End Sub
Private Sub UserForm_Initialize()
クリニカルパス.開始年 = Year(Date)
クリニカルパス.開始月 = Month(Date)
クリニカルパス.開始日 = Day(Date)
クリニカルパス.病棟名 = "第6病棟"
Dim i As Integer
For i = Year(Date) - 1 To Year(Date) + 1
クリニカルパス.開始年.AddItem i
Next
For i = 1 To 12
クリニカルパス.開始月.AddItem i
Next
For i = 1 To 31
クリニカルパス.開始日.AddItem i
Next
For i = 1 To 10
クリニカルパス.使用するパス.AddItem Cells(i + 1, 4)
Next
'過去に「使用するパス」として入力した10件をコンボボックスのリストに追加
病棟名.AddItem "外来"
病棟名.AddItem "第1病棟"
病棟名.AddItem "第2病棟"
病棟名.AddItem "第3病棟"
病棟名.AddItem "第5病棟"
病棟名.AddItem "第6病棟"
病棟名.AddItem "第7病棟"
病棟名.AddItem "第9病棟"
病棟名.AddItem "手術室"
病棟名.AddItem "検査"
病棟名.AddItem "薬剤部"
With 保存して終了ボタン
.Enabled = Not .Enabled
End With
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'ユーザーフォームの閉じるボタンを無効化
If CloseMode = 0 Then Cancel = 1
End Sub
Google先生ありがとう。なんとかできました。
うちのパソコンでは、動作確認できましたが、ちょっと重い。
今度は、職場の端末からやってみるぞ!!
| 固定リンク | コメント (2) | トラックバック (0)












