
悪意を抱く者がいる職場で、PCをロックせず離席するのはとても危険。
なので、離席するときはキーボードで「Windowsボタン」と「Lボタン」を同時に押下して、必ず画面をロックするようにしましょう。
とはいえ。
あなたのアカウントや管理者権限を持つアカウント情報が漏れていた場合、それどころではありません。
直にしろリモートにしろ、簡単にいつでも侵入されてしまいます。
そこで今回は自分が離席しているそんな時、勝手に覗かれたらメールで通知するExcelファイルをVBAでプログラミングしてみましょう。
ガスライター(ガスライティングなどの嫌がらせをする人)は平然とそのような行動をとりますのでガスライティング対策にもなりますよ(^J^)
【準備その1】通知に使用するyahooメールの設定方法
通知(送信用)にはyahooメールを使用します。
yahooメールをお持ちの方も、お持ちでない方もお手数ですが、使い捨てのyahooメールアドレスを一個つくってください。後で使用する受信用メールアドレスはなんでも結構ですが、やはり使い捨てのメールアドレスが無難です。
yahooメールアドレス(送信用)が準備できたら、次にyahooメールの設定を変更します。
yahooメールを開いて、設定(歯車のマーク)をクリックしてください。

次にIMAP/POP/SMTPアクセスをクリックして下記のように設定を変更してください。

これでyahooメールの設定はOKです。
【準備その2】マクロを有効にしておく
次はExcelの設定です。プログラミングしたものが起動しなければ意味がありません。
なのでExcelのマクロを有効にする必要があります。
下記のようにExcelを操作して「すべてのマクロを有効にする」にチェックを入れます。
・Excel2003、2007、2010、2013の場合
「ファイル」→「オプション」→「セキュリティセンター」→「セキュリティセンターの設定」→「マクロの設定」 → 「すべてのマクロを有効にする」にチェックを入れる
・上記以外のExcel
「ファイル」→「オプション」→「トラストセンター」→「トラストセンターの設定」→「マクロの設定」 → 「すべてのマクロを有効にする」にチェックを入れる

【準備その3】VBE(Visual Basic Editor)を起動する
Excelを起動した状態で「Alt」 と「 F11」 キーを同時に押下。
するとVBEが起動するので、次のように操作します。

画面左の「ThisWorkbook」をクリック → 画面上のオブジェクトボックスで「Workbook」を選択 → その横のプロシージャボックスで「Open」を選択
すると下記のコードが自動的に挿入されますので、その中にプログラミングしていきます。
Private Sub Workbook_Open()
この中にプログラミング
End Sub
ちなみにWorkbook_Open()とはExcelブックが開かれた時に実行するという意味です。
【準備その4】メールで通知するプログラムを書いていく
下記が完成形になります。
※※の部分【yahooメール(送信用)、yahooメールのパスワード(yahooメールログイン時のパスワード)、受信用メールアドレス、タイトル、本文】は変更してください。
メールアドレスは(送信用、受信用共に)後々、削除しても構わないものを使用すること。普段、使用しているメールアドレスを利用するのはやめておきましょう。
Private Sub Workbook_Open()
Dim mailObj As Object
Dim mailFrom As String
Dim mailFromPassword As String
Dim mailFromSmtp As String
Dim mailFromPort As String
Dim mailCharset As String
Dim mailTo As String
Dim mailSubject As String
Dim mailBody As String
Dim errNumber As Long
'※※は変更してください
'-------------------------------------
'※※yahooメールのアドレス(送信用)
mailFrom = ""
'※※yahooメールのSMTPパスワード(yahooメールのパスワード)
'パスワードを数回間違えるとしばらくの間、
'SMTPサーバーに接続できなくなります
'もしそうなったら、一定時間(どのくらいかは不明)経過後、
'yahooアカウントを一旦ログアウト、再度ログインしてお試しください
mailFromPassword = ""
'※※宛先
mailTo = ""
'送信用メールのSMTPサーバ(yahooメール以外の場合は変更が必要)
mailFromSmtp = "smtp.mail.yahoo.co.jp"
'送信用メールのポート番号(yahooメール以外の場合は変更が必要)
mailFromPort = "465"
'メールの文字コード
mailCharset = "ISO-2022-JP"
'※※メールのタイトル
mailSubject = "警告"
'※※メールの本文
mailBody = "誰かが勝手にファイルを開きました"
'-------------------------------------
'エラー番号
errNumber = 0
'CDOのオブジェクトを作成する
Set mailObj = CreateObject("CDO.Message")
With mailObj
'送信元
.from = mailFrom
'宛先
.to = mailTo
'件名
.subject = mailSubject
'本文
.TextBody = mailBody
'文字コード
.TextBodyPart.Charset = mailCharset
End With
With mailObj.Configuration.Fields
'SMTPのユーザー名
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = mailFrom
'SMTPのパスワード
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = mailFromPassword
'認証方法
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
'SMTPサーバの種類
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'SMTPサーバ
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = mailFromSmtp
'STMPの送信用ポート番号
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = mailFromPort
'SSLを許可
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
'設定を更新
.Update
End With
'重要度を変更
mailObj.Fields.Item("urn:schemas:mailheader:X-Priority") = 1
mailObj.Fields.Update
On Error GoTo ErrorTrap
'送信
mailObj.Send
If errNumber = 0 Then
'確認用なのでなくてもOK
'MsgBox "メールを送信しました"
End If
'初期化
Set mailObj = Nothing
errNumber = 0
Exit Sub
ErrorTrap:
errNumber = Err.Number
MsgBox "エラーの番号:" & Err.Number
MsgBox "エラーの概要:" & Err.Description
Resume Next
End Sub
プログラミングできたら、そのコードが見られないようロックしておきましょう。
「ツール」→「VBProjectのプロパティ」→「保護」

「OK」でロック完了。次回からVBEでコードを閲覧しようとするとパスワードを求められるようになります。
とはいえ、パスワードを強引に解除する方法(ツール)も存在し、そのためコードを見られてしまう可能性もあるので、何度も書くようですがメールアドレスは後々、削除しても構わない「使い捨て」のものを使用してください。
【準備その5】覗き(開き)たくなるようなファイル名で保存する
では保存します。その際、重要なのがファイル名。
誰かがPCに侵入して、衝動的に覗き(開き)たくなるようなファイル名にします。
ファイルの拡張子は「Excelブック(*.xlsx)」ではなく「Excelマクロ有効ブック(*.xlsm)」にしてください。そうしないとVBAプログラムが実行されません。

保存場所はデスクトップがオススメです。目に付きやすいので(^u^)
以上となります。実際にファイルを開いてみて、メールが受信されるかどうかを試してみてください。
どこでも食っていけるWeb人間になれる【Web食いオンラインスクール】
![]()
頻繁に通知がくるようなら、そこはヤバい職場かも……。
ちなみにお気付きの方もいらっしゃるかと思いますが、プログラム内容は前回の記事とほぼ変わりません(笑)。
変更点はExcelブックが開かれた時に実行しているところのみです。
手抜きですみません(笑)。


