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

 

AutoHotKey で何かの自動処理を実行中に、ツールチップを表示させて利用者に知らせる

AutoHotKey を実行中、実行が終わったかどうかをタスクバーの常駐アイコンを見てチェックしているが、とても面倒だ。そこで、ツールチップを使って、AutoHotKey の実行中だと画面上で知らせる方法を考えた。

テストスクリプト

tooltip_cancel.ahk

解説

  • ToolTip で、メッセージと表示位置を設定する
  • CoordMode, ToolTip, Screen で、ツールチップをスクリーン上での絶対座標をとるようにする。初期状態は、アクティブウィンドウの左上からの相対座標

使い方

  • tooltip_cancel.ahk を実行すると、モニター上の左上にツールチップが表示され続ける
  • メッセージや表示座標を、用途に合わせて変更する
  • 本機能と関係ないが、ESC キーの入力でアプリを終了する機能は、動作時間の長いスクリプトでも役に立つ

AutoHotKey でウィンドウのタブを切り離して、好きな場所に移動してリサイズする

Windows で使うアプリで、タブ形式のウインドウを切り離して再配置する作業を手動で行っている。これを自動で行いたい。その方法をAutoHotKey での実装を考えた。

操作

タブをマウスで左クリックドラッグして切り離す

新しくできたウインドウを移動させて、指定のサイズに変更する

マウス操作するときに、ドラッグ開始位置とドラッグ終了位置は、「AutoHotKey でマウスカーソルの座標をリアルタイムで取得したい」を動作させて、メモする

ソース

備考

利用するアプリに、タブを切り離すみたいな操作があればそれを使っているが、タブを切り離すという発想がタブウィンドウにないためか、それができない。

AutoHotKey でマウスカーソルの座標をリアルタイムで取得したい

Widnows アプリでショートカットも指定できない、マウス操作で解決する必要がある操作で、AutoHotKey を使いたい。まず、マウスカーソル座標などを取得する方法を探った。

ソース

get_mouse_condition.ahk

使い方

スクリプトを実行すると、ツールチップで現在のマウスポインタ座標などが出るので、それをメモする

使い終わったら、常駐しているAutoHotKey  スクリプトを終了させる

追記:2020年1月29日(水)

ESC キーを押して終了したい場合は、次のスクリプトを追加する

get_mouse_condition.ahk

#Persistent の設定を追加した

AutoTotKey のHotstring で、当年の指定日の年月日(曜日)を素早く入力する

前回、今日の年月日をHotstring で素早く入力する方法を実装した。今度は、指定日の年月日を素早く入力する方法を実装する。Excel のセルに「月/日」を入力すると暦と認識される機能の応用だ。

方法

AutoHotKey のHotstring を使う

Hotstring とは

ユーザーが特定の文字列をタイプしたときに、アクションを発生させられる機能

スクリプト

my_hotstring.ahk

使い方

普段使いするなら、このmy_hotstring.ahk をランチャーに入れて実行するか、Windows のスタートアップで起動時に実行されるようにする

“t[[” と入力すると、指定日入力フォームが表示される

指定日を半角英数4ケタ”0101″ のように入力してエンターキーを押すと、”2020年1月1日 (水)” のように出力される

解説

  • 入力フォーム作成に、Gui,Add,Edit を使っている
  • フォームに入力した内容は、TargetDate に代入される
  • Gui,Add,Button で処理が実行されたらInsDateExec 関数を実行する
  • 今年の西暦年をYearString に取得
  • 入力された日付とYearString を使って、指定日の曜日を取得
  • 入力された日付とYearString を使って、年月日を取得
  • 指定日の曜日を、get_dowstr() を使って、「(月)」の形式に変換

参考

AutoHotkey の Hotstring で曜日文字列を素早く入力する
http://stakiran.hatenablog.com/entry/2018/01/19/221444

英文作成時にポンドやユーロを素早く入力したい

英文作成時にこれまで、ポンドやユーロの価格記号を漢字変換を使って入力していた。これを1秒で入力できるようにしたい。今回も、AutoHotKey のHotstringで実装した。

方法

AutoHotKey のHotstring を使う

Hotstring とは

ユーザーが特定の文字列をタイプしたときに、アクションを発生させられる機能

スクリプト

my_hotstring.ahk

 

使い方

普段使いするなら、このmy_hotstring.ahk をランチャーに入れて実行するか、Windows のスタートアップで起動時に実行されるようにする

“p[[” と入力すると、”£” のように出力される

今日の年月日(曜日)を1秒で入力する方法

今日の年月日と曜日を、指定の形式で素早く入力したい。日本語入力支援アプリGoogle IMEなら、「きょう」と入力するだけで変換候補に今日の日付が出てくる。これよりも早く、正確に今日を入力する方法を、AutoHotKey で実装した。

方法

AutoHotKey のHotstring を使う

Hotstring とは

ユーザーが特定の文字列をタイプしたときに、アクションを発生させられる機能

スクリプト

my_hotstring.ahk

使い方

普段使いするなら、このmy_hotstring.ahk をランチャーに入れて実行するか、Windows のスタートアップで起動時に実行されるようにする

“w[[” と入力すると、”2020年1月17日 (金)” のように出力される

解説

  • ::{}:: の{}部分が、反応するタイプ入力部分
  • FormatTime で今日の日付を取得している
  • 曜日は数字で返ってくる
    配列を使おうとしたがうまく使えなかったため、dowtable に1文字ずつ曜日をセットし、StringMid で指定位置の曜日文字を切り取っている

参考

AutoHotkey の Hotstring で曜日文字列を素早く入力する
http://stakiran.hatenablog.com/entry/2018/01/19/221444

編集履歴

  • get_dowstr() を引数指定で、本日以外の曜日を選べるように変更