Excelアドインを作成していると、設定値をどこかに保持したい時があると思います。
Excelマクロでアドインを作成しているなら、とりあえず設定値をシートに保存するのが良いでしょう。
Visual Studioを使ってがっつりアドイン開発するとかなってくると、設定値をJSON形式で保存してJavascriptで読み書きするみたいな手法でもいいかもしれませんが、そんなに大げさな要件ではない場合はこれでよいです。手っ取り早く設定値を保存したい人向けです。
やり方
例えばこんな感じの設定画面(VBAのフォーム)があるとします。

「保存」ボタンを押したら、設定値を保存したい。
次回Excelを開いた時、保存した設定値で処理を行いたい。
そんな時はシートに設定値を書き込んでしまいます。具体的にはこんな感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
'********************* '上記フォームのコード '********************* '初期表示時 Private Sub UserForm_Initialize() ' 処理行数 TextBox1.Value = ThisWorkbook.Sheets("Sheet1").Range("A1").Value 'ヘッダー行を読み飛ばす If ThisWorkbook.Sheets("Sheet1").Range("A2").Value = "1" Then CheckBox1.Value = True Else CheckBox1.Value = False End If End Sub '保存ボタン押下時 Private Sub CommandButton1_Click() '処理行数 ThisWorkbook.Sheets("Sheet1").Range("A1").Value = TextBox1.Value 'ヘッダー If CheckBox1.Value Then ThisWorkbook.Sheets("Sheet1").Range("A2").Value = "1" Else ThisWorkbook.Sheets("Sheet1").Range("A2").Value = "0" End If 'ブックを保存 ThisWorkbook.Save End Sub |
Sheet1のA1セルとA2セルを設定値保存用として使っちゃおうというコードです。
初期表示時は、A1セルとA2セルの設定値を読み込んでフォームに設定してあげています。
逆に保存ボタン押下時は、フォームの設定値をA1セルとA2セルに書き込んで保存しています。
最後の保存(ThisWorkbook.Save)が重要。これを忘れると次回Excel起動時に保存前の状態に戻ってしまいます。
このマクロをアドイン化してインストール!アドイン化のやり方は過去記事を参照下さい。
動き的にはこんな感じになります。
まずはアドインした機能より作成したフォームを開きます。

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

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

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

これはちょっとみっともないですね。
ただこうならない場合もあって、マクロの作り方なのか、Excelのバージョンなのか、いまいち法則が分かっていません。
ただ、とりあえずアドインだということを認識させてあげれば発生しないようなので、今回の例だとフォーム起動時にこんなコードを入れてあげます。
1 2 3 4 |
Public Sub 設定画面を開く() ThisWorkbook.IsAddin = True UserForm1.Show vbModeress End Sub |
これで今のところ事象は発生していません。
コメント