Thunderbirdメール自動作成マクロを改良した
準備
セルに名前をつける。
こんな具合に「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」と名付けたセルに書き込む。
セルに独自の名前を付けておくと、いちいちブックやシートの指定をせずに済むから楽。
実行
マクロをシート上のボタンに登録して、
ボタンをポチッ!
Thunderbirdのショートカットを選択して[OK]。
結果
ほれ、この通り、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)
としてやれば良い。
これでより一層便利になった。