Thunderbirdメール自動作成マクロを改良した

準備

セルに名前をつける。

f:id:akashi_keirin:20170318080804j:plain

こんな具合に「ThunderBirdPath」と名前をつけた。

標準モジュールのコード

Sub getThunderbirdPath()
  Set flp = New FilePicker                                  '……(1)
  With flp
  .showFilePicker ("Thunderbirdの実行ファイルを指定せよ(ショートカットでも良い)")  '……(2)
    If .isCancelled = False Then                            '……(3)
      Range("ThunderbirdPath").Value = .gotFileFullPath     '……(4)
    End If
  End With
End Sub

たったこんだけ。このときに作成した「FilePicker」クラスを使用。うん、メッチャ便利w 自作Functionでやっていた時期もあったけど、自作クラスの方が圧倒的に使い勝手がいい! アドヴァイスをくださったフォロワーさんに感謝!

どうでもいいけど、最近、EdgeでURLを選択して右クリックしたら、いきなりEdgeが落ちるんだけど、何なのこれ? 不便でしゃーないんやけど。

コードの説明

  • (1)でFilePickerクラスのインスタンスを生成。
  • (2)で、showFilePickerメソッドを呼び出す。引数で渡した文字列が、ウインドウのタイトルとして表示される。
    ※この引数はOptionalにした方が良いと思った。
  • (3)。ファイル選択をキャンセルしたら、isCancelledプロパティがTrueになるようにしているので、Falseだったら何らかのファイルフルパスがgotFileFullPathプロパティにセットされていることになる。
  • (4)でめでたく取得したファイルのフルパスを「ThunderbirdPath」と名付けたセルに書き込む。
    セルに独自の名前を付けておくと、いちいちブックやシートの指定をせずに済むから楽。

実行

マクロをシート上のボタンに登録して、

f:id:akashi_keirin:20170318081442j:plain

ボタンをポチッ!

f:id:akashi_keirin:20170318080810j:plain

Thunderbirdのショートカットを選択して[OK]。

結果

f:id:akashi_keirin:20170318080817j:plain

ほれ、この通り、Thunderbirdの実行ファイルのフルパスがセルにセットされた。

後は、このセルの値を引数として渡してThunderbirdメール作成メソッドを実行するようにしたら良い。

たとえば、このとき作成したメソッドだったら、まずメソッド名を

Public Sub createThunderbirdMail(ByVal tbp As String)

と、このように文字列を引数として受け取るようにしておいて、

Thunderbirdのフルパスを、

Dim thunderbirdPath As String
  thunderbirdPath = """" & THUNDERBIRD_PATH & """ -compose """

と、こんなふうに定数にしていたのを、

Dim thunderbirdPath As String
  thunderbirdPath = """" & tbp & """ -compose """

こんなふうに引数名に変えて、実行時に、

md.createThunderbirdMail (Range("ThunderbirdPath").Value)

としてやれば良い。

これでより一層便利になった。

@akashi_keirin on Twitter