●おまけ●メールのウィルス防御の決定版!(か?)*第三版* ◆全体をざっと読んだら、以下の手順1または手順2でこの頁をtxtとして保存し、使って下さい◆ ――特に、後でやるマクロの貼り付けは、この画面から直接やると失敗します 1)手順1――IEの保存札を使う方法 a)先ず、IEで『ファイル〜名前をつけて保存』として、保存の窓を開く b)次に、開いた窓の上段で『保存する場所』を確認し(必要なら変更し)右下の保存札を打つ ――これで、保存した場所にomake.txtが残ります 2)手順2――メモ帳に張り付ける方法 a)先ず、この画面を生かした状態で『制(Ctrl)×A』〜『制×C』として複写する(クリップボードに入れる) b)次に、メモ帳を開き『制×V』で貼り付ける c)『ファイル〜名前をつけて保存』として保存の窓を開き、 下段の『ファイル名』欄にomakeなどと書く d)開いた窓の上段で『保存する場所』を確認し(必要なら変更し)右下の保存札を打つ ――これで、保存した場所にomake.txtが残ります 【メールのtxt変換マクロ】(3.1版) 1)第三版では、任意のメール皿から変換出来るように選択窓を出す方式にしました a)また、フリーズを防ぐ上で、変換メールのtxt開帳は5件を上限としました b)更に、これからマクロを勉強する方の為に、隠れ窓を表示するコードを追加し、コメントも入れてみました 2)このマクロは計画表(MicroSoft Outlook)用ですが、メル急(Outlook Express)でも次の手順で使うことが出来ます ――メル急をお使いの方は、次の手順でメールを計画表へ輸出(エクスポート)する必要があります a)メル急の画面で『ファイル〜エクスポート〜メッセージ』と開き、『……エクスポートします』でokを選ぶ b)『選択されたフォルダ〜受信トレイ』と選んでokを打つ(クリックする) ――この操作で、メル急の受信皿にあるメールは、計画表の受信皿に複写されます *基本説明 A)ここで必要とされる知識 1)以下の説明は、ウィンドーズの基礎的操作に慣れた人を対象に書かれています ――即ち、帳袋(ファイルとフォルダ)を新作したり、複写や貼り付けでメモ帳の内容を操作できることが前提となります 2)その場合、カタカナの使用はなるべく減らす方針の為、用語で分かりにくい点があるかもしれません ――その意味で、目次の下段にある用語集(又は本文のヘルプ)を開き、先にざっと目を通すことをおすすめします B)このマクロの働き 1)このマクロは、計画表の受信皿(受信トレイ)などにあるメールをマクロで開き、 その内容を読み取ってtxt帳に変換し、指定した袋(フォルダ)に保存します ――それと同時に、元のメールはゴミ皿(削除済みアイテム)に移るので、 後は『"削除済みアイテム"フォルダを空にする』という方法で、ウィルスに感染したメールを消去できます 2)このように直接メールに触れる操作をしないので、大抵のウィルスは感染を防げると思いますが、 それで万全であるかどうかは未確認である一方、今後のウィルスの進化によっても感染の危険がゼロとは言い切れません ――他方では、メールをtxtに変換する結果、返信機能や住所録との連携など手紙ソフト本来の機能が失われますが、 それでも『ウィルスには感染したくないが、手紙の中身をちょっとのぞいてみたい』という人には役に立つと思います ――よって、そうしたことを全てご承知の上でお使い下さい 3)因みに、メル急を使う場合、元のメールがそのまま受信皿に残りますが、 それをゴミ皿に移動するには、次の手順が最も安全だろうと思います a)『ツール〜受信トレイアシスタント〜追加』として『プロパティ』の窓を開く ――最上段で『全てのメッセージ』をチェック、中段で『移動先』をチェックし『フォルダ〜削除済アイテム〜OK』と打つ ――更に『ok』を打って特性(プロパティ)を閉じ『受信トレイアシスタント』の窓に出た自作項のチェックを消す N.B.このチェックが入ったままだと、着信メールがいきなりゴミ皿に入ります ――第三版ではゴミ皿からの変換も可能ですが、その場合、元メールは絶対削除(ゴミ皿から消える)となります b)メールを輸出した後で『ツール〜受信トレイアシスタント』と開き、 自作項にチェックを入れて『適用〜受信トレイ〜OK』と打つと、受信トレイのメールはゴミ皿に移ります ――後は、自作項のチェックを外し、OKを打って受信トレイアシスタントを閉じます ――最後に、削除済みアイテムの中打ちメニューで『フォルダを空にする』を打てばメールを消去できます C)合意事項 ――次の合意事項を読んで全てに合意する場合のみ、その先の手順に進んで下さい 1)ハードやソフトの違いもあり、このマクロが全てのウィンPCでうまく作動するという保証は一切できません ――もし作動しない時は、以下の操作で入れたマクロを、書かれた手順に従って削除して下さい 2)このマクロを入れて使った結果、あなたのPCの調子が狂っても一切責任はとれません ――また、このマクロを使ってウィルス感染を防げなかった場合にも一切責任はとれません D)手順の概要 ――先ず、全体の流れを頭に入れましょう 1)事前に、C:ドライブ内に『手紙』という袋(フォルダ)を新作する(つまり『C:\手紙』というディレクトリを作る) 2)次に、以下の部分から必要なコードを複写し、ワードVBEの中の符単(コードモジュール)に貼り付ける 3)この段階で一度、マクロが正常に動くかどうかを確認する 4)最後に、使い勝手を良くする為に暖簾(デスクトップ)上に起動用の絵号(アイコン)を作る *手順の詳細 A)『手紙』袋を作る 1)『スタート〜プログラム〜エクスプローラ』として袋展開(エクスプローラ)を開く 2)左枠の中のC:を選択し、上段のメニュー板で『ファイル〜新規作成〜フォルダ』とたどる 3)『新しいフォルダ』の中打ちメニューで『名前の変更』を打ち(クリックし)、袋の名前を『手紙』と直す 4)袋展開を閉じる B)以下で、上下を『'●●●……』ではさまれた部分をそっくり複写し、ワードVBEの符単に貼り付ける ――PCコードというものは一文字狂っても動かないので、この作業は体調が良く頭も冴えている時に慎重に行って下さい 1)『スタート〜プログラム〜Microsoft Word』としてワードを開く 2)『ツール〜マクロ〜Visual Basic Editor』としてVBEを開く 3)『挿入〜標準モジュール』として新しい符単(コードモジュール)を開く 4)以下で『'●●●……』で囲まれた部分を正確にコピーし、符単(module1)の画面に貼り付ける ――その場合、上下の『'●●●……』行を含めて貼り付ける方が間違いが少ないでしょう ――因みに、切り取りキー『制×X』、複写キー『制×C』、貼り付けキー『制×V』はメモ帳でもVBEでも使えます cf. 全選択キー『制×A』だけは何故かメモ帳では効かないので、 そこの札(編集〜全て選択)か『中打ち〜全て選択』を使う必要があります 5)『ツール〜参照設定』と開き『Outlook 98 Type Library』という項目を捜して、左の四角にチェックを入れる ――但し、あなたのPCの計画表が『Outlook 98』以外の版なら、それに対応するものを捜してチェックする ――その場合、より新しい版なら多分問題ないと思いますが、より古い版での動作は全く未確認で保証できません 6)『ok』を打って参照設定を閉じる C)ここまで済むとマクロとしては既に使える状態になるので、一度それを試します 1)先ず、計画表を開き、受信皿(受信トレイ)が空でないことを確認する a)余り数が多いと面倒なので、受信皿にはメールを3〜4件入れて下さい b)仮に大切な手紙が入っている時は、それを先ず『下書き』皿などに複写しておいて下さい ――因みに、計画表にあるメールは、通常の切り貼り操作でwin袋(例えばC:\手紙)に残すことも出来ます c)逆に受信皿が空の時は、適当な開封済みの手紙などを複写して入れて下さい ――メル急をお使いの方は、冒頭に書いた『エクスポート』の手順でメールを複写する必要があります 2)VBEの窓で、カーソルを符単の先頭にあるマクロ (SubとEnd Subではさまれた部分) の中に入れる ――具体的には、さっき貼り付けたコードの先頭から16行目位にある空白行を捜し、その中を打つのが安全です 3)F5キーを押して、マクロを実行する ――もし、F5キーが分からない時は『実行〜sub/ユーザ フォームの実行』を打っても良い 4)マクロが正常に機能すると先ず皿選択の窓が出るので、今はそのまま改行キーを押して既定の受信皿(2)を選択します ――その後、手紙の数だけ(5件を越す時は5件だけ)txt帳の窓が開き、最後に自作した『手紙』袋の窓が開きます ――こうして開いた手紙は『手紙』袋に残るので、いつでもそこから開くことが出来ます N.B.もし、以上の動作が正常に行われない時は、今作った符単を次の手順で削除して終了します ――先ず、VBE内にエラー告知が出ているなら『終了』を打つ ――次に、VBEの窓で『ファイル〜module1の削除』と打ち、『エクスボートするか』と出たら『いいえ』を打つ ――最後に、隠れた窓を消す為に、全ての窓を閉じて再起動する(マクロ中断では、ワードなどが隠れて残ることがある) 5)ここで一度、VBEの窓を閉じ、更にワードの窓を閉じる ――ワードを閉じることにより、マクロの変更がnormal.dotに上書きされます ――ワードを一度も閉じないままで、以下の起動絵号を使っても失敗します D)暖簾上に起動用の絵号を作る 1)『スタート〜プログラム〜アクセサリ〜メモ帳』としてメモ帳を開く 2)以下で、上下を『'■■■……』ではさまれた部分をそっくり複写し、メモ帳に貼り付ける 3)メモ帳で『ファイル〜名付け保存』と開き、 下段の『ファイル名』欄で無題とある所を『手紙のtxt変換.vbs』と直し保存札を打つ ――この操作も、上記の帳名をコピーして上書きする方が間違いが少ないでしょう 4)こうして保存されたvbs帳を袋展開で捜す ――通常の設定では、このvbs帳はMyDocument袋に入ります ――もし見つからない時は、袋展開の窓でMC(マイコンピュータ)の中打ちメニューから検索(帳袋検索)を開き、 上段の『名前』欄に今の帳名を貼り付けて『検索開始』を打てば見つかります 5)袋展開か又は帳袋検索の窓で『手紙のtxt変換.vbs』を選択し、 『中打ちメニュー〜送る〜デスクトップ(ショートカットとして)』と打つ ――これで暖簾上に直行(ショートカット)が出来るので、後はこの絵号を打てば手紙のtxt変換マクロが実行されます 6)最後に、袋展開や受信皿などの窓を全て閉じる *その他 A)諸注意 1)手紙変換の待ち時間と詳細設定の変更 a)手紙のtxt変換には数秒かかるので、『手紙』窓が出るまで待って下さい ――万一、変換の途中で警告窓が出た時は『マクロを無効にする』を打って下さい b)メールの内容が多くてリソース不足に陥ったり、txtが開くのがうるさい場合は次のように直して下さい ――自作したワードVBEの符単を開き『★★★txt開帳』とある行を捜して、その行を殺す ――但し、行を殺すとは、その行の先頭に『'』を記入し、行の表示を緑色(コメント)に変えることです c)終了音を出したい時は『★★★終了音を出す』とある行を生かして下さい(先頭の『'』を削除する) ――但し、ここで指定したwav帳の住所はPCにより違う可能性があります ――よって先ず、帳袋検索で『"ミュージカ - アプリケーションの起動.wav"』を検索し、 もし住所が違っていたら、それに直さないとエラーが出ます ――因みに、この検索は、必ず""くくり付きで検索窓に入れないとうまく行きません ――もし自作した音帳(wav帳)がある場合は、代わりにその住所を入れても構いません d)この他でも★★★がある行は、自由に殺したり生かしたり直して使うことが出来ます ――しかし、その他の行はVBEに詳しい人以外は、絶対にいじらないでください ――因みに、こうした修正も、ワードを閉じるかVBE内の上書き札を打たない限り、 暖簾絵号からの操作には反映しませんのでお忘れ無く。 2)ウィルス対策と元のメールの削除 a)変換が完了すると、変換元のメールは受信皿からゴミ皿(削除済みアイテム)に移ります ――その時、未開封のメールがあると、ゴミ皿の名前が太字に変わります ――後は、ゴミ皿の中打ちメニューで『"削除済みアイテム"フォルダを空にする』を打てばウィルスとはおさらばです b)もし安全と分かっている手紙があり、それを元のメールのままで開きたい時は、 ゴミ皿の中で開けますし、それを受信皿へ戻しコピーすることも出来ます ――しかし、ウィルス入りの手紙には、それを選択するだけで感染するものもあるらしいので注意して下さい c)因みに、このマクロは計画表の窓を開かなくても作動しますが、 メールの受信には計画表を開いたままで自動受信を待つか、送受信札を打つ必要があります ――その場合、受信皿で下見窓(プレビューウィンドー)を開くだけで感染するウィルスが問題になっています ――『設定を直せ』という話もありますが、設定を勝手に変える位はタヌキ(ウィンPC)にとって朝飯前ですから、 送受信札を使う時も、受信皿やゴミ皿は一切開かないのが最も安全な策だと思います ――例えば、下見窓が出ない送信皿を開き『ツール〜送受信』とやり、 左窓(フォルダ一覧)でメール数を確認する手があります d)使い勝手などで、何かお気づきの点がありましたら下記の宛て先までメールでお知らせ下さい B)連絡先 1)名前 kimaguretombi 2)メール宛て先 aaa-zzz@tba.t-com.ne.jp 3)HP住所 http://www2.tba.t-com.ne.jp/a-z/ N.B.名前に関して ――PC関係は『kimaguretombi』、ホームページ関係は『インテリこじき2001』を使っています ――他に、政治関係では『闇夜の鮟鱇』、ひまネタでは『時間の放浪者』なども使っています '■■■■■■■■■起動用の絵号作り(手紙のtxt変換.vbs)■■■■■■■■■■■■ set WD = GetObject("", "word.application") ' WD.Visible = true '◆◆◆ワードを表示したい時は、先頭の『'』を削除する WD.Run ("手紙のtxt変換――ワード型") WD.Quit() '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ '●●●●●●●●●●●●●変換マクロ(module1)●●●●●●●●●●●●●●●● Sub 手紙のtxt変換――ワード型() '◆◆◆皿を選択する窓を出す 標題 = "皿の選択" 説明文 = "皿名を対応する数で指定して下さい" & vbNewLine & vbNewLine & _ "1=ゴミ皿" & vbNewLine & _ "2=受信皿" & vbNewLine & _ "3=送信皿" & vbNewLine & _ "4=送信済みアイテム" & vbNewLine & _ "10=下書き" & vbNewLine & _ "" 初期値 = "2" '◆◆◆既定値は受信皿とする 記入数値 = InputBox(説明文, 標題, 初期値, 100, 100) If 記入数値 = "" Then Exit Sub 記入数値 = Val(StrConv(記入数値, 8)) '◆◆◆txt開帳や音出しの為に起動用の文書を用意する Set 起動文書 = Documents.Add '◆◆◆計画表(MSoutlook)を起動して、皿を取得する Set 計画表 = CreateObject("outlook.application") Set 指定皿 = 計画表.Session.Folders(1).Folders(記入数値) ' 計画表.ActiveExplorer.Display '◆◆◆一行実行で調べる時に計画表を表示する ' 指定皿.Display '◆◆◆一行実行で調べる時に指定皿を表示する 皿名 = 指定皿 保存経路 = "C:\手紙\" '◆◆◆変換した手紙を保存する経路の指定 手紙数 = 指定皿.Items.Count '◆◆◆メールの総数 For ll = 1 To 手紙数 SendKeys "%(D)" '◆◆◆マクロ入り手紙で、マクロの実行を停止する命令を先に送る Set 項目 = 指定皿.Items(手紙数 - ll + 1) 遅延 = Timer: Do While Timer < 遅延 + 0.1: DoEvents: Loop '◆◆◆SendKeysの実行を待つ 差出人 = 項目.SenderName 宛て先 = 項目.To CC = 項目.CC 件名 = 項目.Subject 受信日時 = 項目.ReceivedTime サイズ = 項目.Size & "バイト" 本文 = 項目.Body '◆◆◆ISO型のコードで書かれたhtm帳では、何故か本文を検出できない '◆◆◆送信者のメールアドレスを取得するが、返信者と同一の場合は省略する On Error Resume Next '◆◆◆返信項の取得ではメールによりエラーが出るので、止める アドレス = "" Set 返信項 = 項目.Reply アドレス = 返信項.To If アドレス <> 差出人 And アドレス <> "" Then 差出人 = 差出人 & " [" & アドレス & "]" End If Set 返信項 = Nothing On Error GoTo 0 帳名用件名 = 帳名全角(件名) '◆◆◆帳名で使えない文字を全角に直す 帳名用受信日時 = 日時変換――簡略型(受信日時) '◆◆◆同じく、日時の表記を整える ' 記録帳 = 保存経路 & 帳名用件名 & "=" & 帳名用受信日時 & ".txt" '◆◆◆変換txtの完全住所を与える 記録帳 = 保存経路 & 帳名用受信日時 & "=" & 帳名用件名 & ".txt" '◆◆◆日時を先にする場合 Open 記録帳 For Output As #1 '◆◆◆記録帳を開いて、メールの内容を書き込む Print #1, "差出人:" & vbTab & 差出人 Print #1, "宛て先:" & vbTab & 宛て先 Print #1, "CC:" & vbTab & CC Print #1, "件名:" & vbTab & 件名 Print #1, "受信日時:" & vbTab & 受信日時 Print #1, "サイズ:" & vbTab & サイズ Print #1, Print #1, "▼▼▼▼▼▼▼▼▼▼▼▼▼以下本文▼▼▼▼▼▼▼▼▼▼▼▼▼" Print #1, 本文 Print #1, "▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲" Close #1 If ll <= 5 Then 起動文書.FollowHyperlink 記録帳 '★★★txt開帳(5件を上限とする) 項目.Delete '★★★メールをゴミ皿に移す Next 起動文書.FollowHyperlink 保存経路 '★★★『手紙』袋の窓を開く ' 起動文書.FollowHyperlink "C:\WINDOWS\MEDIA\ミュージカ - アプリケーションの起動.wav" '★★★終了音を出す MsgBox "『" & 皿名 & "』のメール " & 手紙数 & " 件を変換しました。" End Sub Function 帳名全角(文字列) 結果 = "" For kk = 1 To Len(文字列) 一字 = Mid(文字列, kk, 1) 帳名禁止文字の全角変換 一字 結果 = 結果 & 一字 Next 帳名全角 = 結果 End Function Sub 帳名禁止文字の全角変換(一字) Dim 禁止コード(10) 禁止コード(0) = 34 禁止コード(1) = 42 禁止コード(2) = 47 禁止コード(3) = 58 禁止コード(4) = 60 禁止コード(5) = 62 禁止コード(6) = 63 禁止コード(7) = 92 禁止コード(8) = 124 禁止コード(9) = 46 禁止コード(10) = 59 コード = AscW(一字) 禁止 = False For kk = 0 To 10 If コード = 禁止コード(kk) Then 禁止 = True: Exit For Next If 禁止 = True Then If コード = 92 Then 全角コード = -27 Else 全角コード = コード - 288 End If 一字 = ChrW(全角コード) End If End Sub Function 日時変換――簡略型(日時) 年 = Right(Year(日時), 2) '◆◆◆年号は下2桁とする 月 = Month(日時) 月 = String(2 - Len(月), "0") & 月 '◆◆◆月番号を2桁に揃える 日 = Day(日時) 日 = String(2 - Len(日), "0") & 日 時 = Hour(日時) 時 = String(2 - Len(時), "0") & 時 分 = Minute(日時) 分 = String(2 - Len(分), "0") & 分 日時変換――簡略型 = 年 & "_" & 月 & "_" & 日 & " " & 時 & ":" & 分 End Function '●●●●●●●●●●●●●●●●●●●●●●●●