【Excel VBA】アドイン作成。設定値のデータを保持する。

VBA

Excelアドインを作成していると、設定値をどこかに保持したい時があると思います。

Excelマクロでアドインを作成しているなら、とりあえず設定値をシートに保存するのが良いでしょう。

Visual Studioを使ってがっつりアドイン開発するとかなってくると、設定値をJSON形式で保存してJavascriptで読み書きするみたいな手法でもいいかもしれませんが、そんなに大げさな要件ではない場合はこれでよいです。手っ取り早く設定値を保存したい人向けです。

やり方

例えばこんな感じの設定画面(VBAのフォーム)があるとします。

「保存」ボタンを押したら、設定値を保存したい。
次回Excelを開いた時、保存した設定値で処理を行いたい。

そんな時はシートに設定値を書き込んでしまいます。具体的にはこんな感じです。

Sheet1のA1セルとA2セルを設定値保存用として使っちゃおうというコードです。

初期表示時は、A1セルとA2セルの設定値を読み込んでフォームに設定してあげています。
逆に保存ボタン押下時は、フォームの設定値をA1セルとA2セルに書き込んで保存しています。
最後の保存(ThisWorkbook.Save)が重要これを忘れると次回Excel起動時に保存前の状態に戻ってしまいます。

このマクロをアドイン化してインストール!アドイン化のやり方は過去記事を参照下さい。

動き的にはこんな感じになります。
まずはアドインした機能より作成したフォームを開きます。

アドインでフォーム起動

設定値を変更して保存します。

設定値を変更

いったんExcelを閉じて、再度新規ブックを開きます。
で、設定画面画面を開くと..

Excel再起動

無事、設定値が保存されていました~。

マクロのブックが表示されてしまう場合

設定値を保存するタイミングで、アドインしたマクロのブックが起動してしまう場合があります。

アドインしたマクロが起動

これはちょっとみっともないですね。

ただこうならない場合もあって、マクロの作り方なのか、Excelのバージョンなのか、いまいち法則が分かっていません。

ただ、とりあえずアドインだということを認識させてあげれば発生しないようなので、今回の例だとフォーム起動時にこんなコードを入れてあげます。

これで今のところ事象は発生していません。

コメント

タイトルとURLをコピーしました