VBA:いくらでもある事務改善パート2(7)

ミール

2013年04月24日 08:05

前回からの続きです。

介護事業所(デイサービス)で作られる、介護予防実績報告書の事務改善について書いています。

3日の仕事がわずか5分に!夢のような取り組みです。

今日は、印刷処理について考えてみます。
一件の印刷なら、いたって簡単。

印刷プレビューの手順をマクロの記録で作成します。

①実績報告書のシートを選択
②マクロの記録開始
③印刷プレビュー
④印刷ブレビューを閉じる
⑤対象者名簿を選択
⑥マクロの記録終了

の手順で記録してみましょう。


①、② 実績報告書のシートからマクロの記録を開始します。


③ 印刷プレビューを表示させます


④ 印刷プレビューを閉じます。



⑤対象者名簿を選択し、⑥マクロを終了します。




下のようにマクロが記録されたはずです。

Sub Macro1()
'
' Macro1 Macro
'

ActiveWindow.SelectedSheets.PrintPreview
Sheets("対象者名簿").Select

End Sub

赤色の部分を、先日迄作ったプログラムにコピーします。



Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.ScreenUpdating = False
Dim obj As Object

r = Target.Row

対象者 = Sheets("対象者名簿").Range("d" & r)

Set obj = Workbooks("実績.xlsx").Worksheets("実績データ").Cells.Find(対象者)

If obj Is Nothing Then

MsgBox 対象者 & " 実績がありません"
Sheets("対象者名簿").Select

Else

Call 項目クリア

Call 編集(r)

For cnt = 1 To 31

If obj.Offset(0, cnt) = "" Then
Else

Worksheets("実績報告書").Range("l12").Offset(0, cnt) = 1 '実績報告書の利用日を編集
Worksheets("実績報告書").Range("l14").Offset(0, cnt) = 1
Worksheets("実績報告書").Range("l16").Offset(0, cnt) = 1
Worksheets("実績報告書").Range("l18").Offset(0, cnt) = 1
Worksheets("実績報告書").Range("l20").Offset(0, cnt) = 1

End If

Next cnt

Worksheets("実績報告書").Select
ActiveWindow.SelectedSheets.PrintPreview
Sheets("対象者名簿").Select

End If
Application.ScreenUpdating = True
End Sub

それでは、テストをしてみましょう。

花子さんをダブルクリックします。


見事、プレビューで表示されました。


印刷したい時は印刷ボタンを選択し、終了したい時は「プレビュー閉じる」を選択します。
選択した後は自動的に対象者名簿へ戻るはずです。

かなりイメージどおり出来上がってきました。

次回は、一気に印刷する処理を考えてみたいと思います。
これができれば85%完成です。

では


関連記事