誤送信対策に!ありがちなミスを防ぐちょっとしたツールをあなたに
お客様宛にExcelで作成した資料を送付したはいいけれど、シートの一部にフィルタが設定されていたことに気が付かず、お客様に見られてはマズイ情報を見られてしまい、大変なことになった。
こんなミス、あなたの会社でも発生していませんか?
今回は、そんな、どの会社においてもありがちなミスを防ぐ、ちょっとしたツールをあなたにご紹介しましょう。
誰もが知っていてもなかなか無くならない誤送信のインシデント
Excelのシートが何枚にもなってしまうと、どこかにフィルタが設定されているかどうか?をいちいちチェックするなんていうのは、なかなかやっていられないものです。
そもそも、Excelにあまり詳しくない人の場合はフィルタの機能そのものを知らないこともあるので、フィルタがかけられていてもわからない。といったこともあります。
情報漏えい防止のために各自が気を付けたい事例として、Excelのフィルタ設定に起因した事故の話が取り上げられることは多いですが、現場で実際に起きたヒヤリハットの事例として紹介されることもまた多く、知っていても無くならない事故の一つと言えるかと思います。
目視で確認するのは大変なので、ツールでチェックしましょう
Excelにマクロ機能があることを知らない人は少ないと思いますが、実際に使いこなせる人となると、その数はグッと減ってしまうのが実状です。
Excelのマクロ(正しくはVBAと呼ぶべきですが)を使いこなせると、業務の効率化にものすごく役立つのですが、プログラミングを覚えることになってしまうため、「難しそう」という印象から敬遠してしまう方が多いのは、ちょっと残念に思います。
さて、話が横道に逸れてしまいまいましたが、Excelには、
シートにフィルタが設定されているかどうか?
更には、そのフィルタが絞り込みされているかどうか?
を調べてくれる機能があります。この機能を使うと、シートが何枚あろうと、フィルタ設定の有無を一瞬で調べられるので、メールに添付して送信する前にこの機能を使ってチェックするようにすれば、うっかりミスによる事故を防ぐことができます。
でも、Excelを起動して、手作業でフィルタ設定の有無をチェックするのも面倒ですよね。そこで、Excelファイルをアイコンにドラッグ&ドロップするだけでフィルタの有無を教えてくれる、ちょっとしたツールをご紹介しましょう。というのが、このページの主旨になります。
ExcelとVBSの合わせ技でツールを作る
Windowsには「DOSコマンド」や「VBS」「WSH」「PowerShell」など、処理を自動化するための便利な機能が標準で備わっているのですが、ご存知でしょうか?
サーバの管理者やプログラマであればお馴染みのこれらの機能も、一般の業務の現場においては、ほとんど使われていなかったりするのですが、ExcelやWordは、これらの機能から呼び出して使うことができるようになっています。
手作業でいちいちExcelやWordを起動して操作しなくても、VBS(正しくはVisual Basic Scriptと呼びますが)による処理の自動化の一環として、ExcelやWordを自動で起動し、必要な処理をさせて終了する。というように、手作業でやる処理をすべて自動で行うことができるのです。
こうした便利な機能がWindowsには備わっているのですが、ユーザにとって便利な機能は、悪用する側にとっても便利なもの。それ故に、標的型攻撃では、こうした機能が悪用されたりする。ということは、是非知っておいていただきたいと思います。
今回ご紹介するツールでは、このVBSとExcelの組み合わせを使っているのですが、この組み合わせは色々と応用が利くので、「そんなの知らなかったあ」という方は、この機会に是非覚えていただくと良いかと思います。
ドラッグ&ドロップでフィルタの有無を教えてくれるツール
さてさて、前置きが長くなりましたが、実際のツールのプログラムコードをご紹介します。以下のコードをvbsファイルとしてWindowsのデスクトップ画面上に保存すればOKです。
使い方は簡単。フィルタが設定されているかどうかを調べたいExcelファイルを、vbsファイルのアイコン上にドラッグ&ドロップするだけです。
vbsファイルの作り方がわからないという方は、「ツールをダウンロードする」のリンクにマウスカーソルを当て、マウスの右ボタンを押して、「名前を付けてリンク先を保存」でデスクトップに保存してください。
[adrotate banner=”47″]
'--------------------------------------------------- ' Excelのフィルタ設定有無を調べるVBScript '--------------------------------------------------- Dim Arg,i,tmp,result,FileName,msg 'フィルタ設定の有無を確認する Set Arg = WScript.Arguments For i = 0 to Arg.Count - 1 '確認対象のファイル名を取得 tmp = split(Arg(i),"\") FileName = tmp(Ubound(tmp)) 'ファイルがExcelだったらフィルタの設定を確認する If Instr(1,Right(Arg(i),4),"xls") > 0 Then result = Excel_AutoFilterCheck(Arg(i)) If result <> "" Then msg = Msgbox(FileName & "の" & vbCrLf & _ result & "にフィルタによる絞り込みが設定されています。",vbExclamation,"警告") Else msg = Msgbox(FileName & "に" & vbCrLf & _ "フィルタによる絞り込みはありません。",vbOKOnly,"結果良好") End If Else msg = Msgbox(FileName & "は" & vbCrLf & _ "Excelファイルではありません。",vbExclamation,"警告") End If Next 'スクリプト終了 WScript.Quit Function Excel_AutoFilterCheck(FilePath) '初期設定 Excel_AutoFilterCheck = "" 'Excelオブジェクトを生成 Dim xl Set xl = CreateObject("Excel.Application") 'Excelブックをオープン Dim wb Set wb = xl.Workbooks.Open(FilePath) 'オートフィルタが絞り込み状態で設定されているかどうかを確認 Dim ws For Each ws In wb.WorkSheets If ws.AutoFilterMode Then If ws.AutoFilter.FilterMode Then Excel_AutoFilterCheck = Excel_AutoFilterCheck & ws.Name & vbCrLf End If End If Next 'Excelオブジェクトを解放 wb.Close Set xl = Nothing End Function
圧縮ファイルの自動生成と組み合わせたりすると、より実用的に
ここでご紹介したスクリプトは、Excelのフィルタ設定有無を調べるだけの単純なものですが、実際、メールに添付して送付する際は、パスワード設定した圧縮ファイルにすることも多いかと思います。
そこで、Lhaplusや7Zipなどの圧縮ソフトを使って、パスワード付きの圧縮ファイルを生成するVBSと、今回ご紹介したスクリプトを組み合わせると、ファイルをドラッグ&ドロップするだけで、フィルタ有無のチェックを行い、問題がなければ、パスワード付きの圧縮ファイルを自動生成するといったことも可能になります。
OutLookを使っているなら、更に、圧縮したファイルを添付したメールと、パスワードを記載したメールを自動で生成するといった連携も可能です。
パスワード付きの圧縮ファイルを生成してメールに添付するだけでも、手作業でやれば数分の時間がかかりますが、スクリプトでやればものの数秒です。しかも、ファイルのチェックも行っていますから、業務を効率化するだけでなく、誤送信の防止にも役立ちます。
ちょっとしたことかもしれませんが、毎日の作業ともなれば、年間を通してかなりの時間を節約できることになります。会社全体で行えば、残業に伴う人件費が削減できるなどの効果も期待できるはずです。
Excelのマクロ(VBA)とVBSは、かなりの部分が共通しているので、VBAがわかれば、VBSも難しくはありません。プログラミングというと難しく感じるかもしれませんが、実際にやってみると、そう難しくはなかったりするものです。
このページをご覧になられて、VBAやVBSって便利そう。と思っていただけたなら、この機会にVBAやVBSについて学んでみていただくと、新しい可能性に気づいていただけるのではないかと思います。
→次の記事へ( Windows10で標的型メール訓練ができるかどうかやってみた )