Outlook のメールを読んで、指定した情報をVBAを使って抜き出す

データベースを使わない、または外部のウェブサービスからのメールを受信していて、そのメールの中から住所を抜き出し、顧客分布を測定したい時がある。Excel とOutlook ならVBA が使えるので、それを一部自動化した。

この解説は、限られた条件で使ったものなので、サンプルプログラムとして記録を残す。

前提

Oltlook の受信トレイに「予約」フォルダ、その直下に「A店」と「B店」のフォルダがある

受信トレイ
└予約
├A店
└B店

それぞれのフォルダはOutlook のルールで、件名ごとにフォルダ分けされるようになっている

「A店」と「B店」に保存されたメールの中に、「住所」情報がある

実装したい機能

指定したフォルダを次々に読み込んで、住所を抜き出し、都道府県、市町村、区、その他で横方向のセルに挿入する

セルは横方向が属性、縦方向がメールごとの内容にして、データを表に入力する

VBA スクリプト

 

 

動作

スクリプトを実行すると、シート”email”に結果を書き出す

英語学習の現状-2020年2月

以前、「新社会人を英日の翻訳者に育てる」を書いた。その時は、ヒアリングとスピーキングを除外していた。その後わたしが、リーディングと写経では英語の理解力が伸びない問題にぶち当たった。現在、それを改善している。

以前の学習方法

  • 「自分が興味のある分野の英語記事」を1日2本、テキストエディタを使って写経する
  • わからない単語を辞書引きして手帳に書きとる
  • それでもわからない時は、Google 翻訳 ツールで翻訳して記事を読む
  • 手帳の単語を後で見返す

着眼点

多言語の学習は、「ヒアリングの刺激があると効率が良くなる」と、脳科学の研究者がまとめていた。そこで、ヒアリングを始めた。

ヒアリングの習慣づけ

  • 朝起きたとき、”BBC Learning English” を1本、繰り返して聞く。(スマートフォンアプリを使っている。)
    • 6 Minute English
    • 6 Minute Grammar
    • 6 Minute Vocabulary
  • 興味のある分野の解説動画やハウツーをYouTube で見る
    • ジムのバイクを漕いでいる最中によく見ている

備考

Google 翻訳コミュニティを使うようになった。

利用者に利益があるか知りたいので参加している。今のところ、「熟語」が見えるようになってきた。

翻訳できるならそのまま訳し、分からない単語があれば辞書を引く。表現がおかしいものがあれば旗をクリックして「不適切」、「翻訳できない」などを伝える。手掛かりがない場合は「スキップ」して時間を縮める。

Google 翻訳コミュニティとは

Google 翻訳の正誤表を、人力で行うプロジェクト。それぞれの言語間に「翻訳」と「検証」の二種類の作業を、1度に10個ずつこなすボランティア。

Excel の複数のシートで、セルの頭出しをしたい

データの整理で、Excel を使って、別のシートからのデータをコピペする作業がある。毎回決まった位置に目視で確認しながらマウス操作で選択していたが、この頭出しをVBA で実現した。

利用する言語

Visual Basic for Applications (VBA)

実装したい内容

決まったシートから順番に、指定したセルの位置を選択状態にしたい

スクリプト

内容

  • セル頭出し関数F1st() などで、選択するセルの位置を指定
  • FocusCell() でシート4から順番にシートを選択して、指定されたセルを選択する

AutoHotKey で配列がなぜ関数の中で使えないのを解決する

AutoHotKey を使い始めた人が他の言語を経験していると、「配列が関数の中で参照できない」と詰まることがある。これを解決する。

結論から言えば、グローバル配列を参照するなら、宣言が必要となる。

検証スクリプト

test.ahk