この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
こんにちは。かわべです。
ExcelのListboxを使って開いているファイルからシートを選択するマクロを作成しました。
今日は、開いているファイル名をリストボックスに表示する方法について記載します。(シートを表示する方法については、後日、記載します。)
会計ソフトのfreeeにExcelで作成した明細書を取り込むときにこのExcelのListBoxを利用しました。
目次 表示
ユーザーフォームを作る
Microsoft Visual Basic for Applicationsの画面を開きプロジェクトウィンドウの「フォーム」を右クリックして「挿入→ユーザーフォーム」を選択します。
ツールボックスのなかのリストボックスのアイコンをクリックしてフォームにリストボックスを作成します。
フォームの上で適当な範囲をドラッグしてリストボックスの作成します。大きさや表示位置は後で調節できます。
リストボックスが表示されてユーザーフォーム上で右クリックします。「コードの表示」をクリックします。
リストボックスの設定
① Inirializeの作成
コードの表示をクリックすると次のような画面になります。ユーザーフォームをクリックしてコードを表示したので
「UserForm_Click()」と表示されます。
リストボックスにリストを表示させるため、右上のClickの右横の「▼」をクリックしてメニュー一覧から「Initialize」を選択します。
Initialize(初期化)したときの記述をすることができます。
② ブックをカウントして名前を取得
次の画像のように、ユーザーフォームをInitializeしたときに、「開いているExcelファイル(Workbook)の名前をListBoxに表示する」という記述をします。
具体的には、上のとおり、For~Next構文を使って、開いているWorkbookの数だけ繰り返す処理を記述します。
上記の緑色の枠囲みの「Workbooks.Count」は開いているワークブックの数を確認します。
赤色の枠囲みのは、ファイル名(Workbookの名前)をListBox1に追加するという記述になります。
実行すると次のような画面が表示されます。
データを引き継ぐ
(1) Macro1の記述
Listboxで選択したファイル名をその後のプログラムに利用するため、「Macro1」として次のような記述をしました。
ユーザーフォームのListBoxで選択したファイル名をその後のプログラムで利用するため、Macro1とユーザーフォーム1の両方で使える変数を設定する必要があります。そのため、Publicを使って、変数strAaを宣言しました。
Macro1には「ユーザーフォーム1を表示」→「変数strAaを表示」→「ユーザーフォーム1を閉じる」と記述しました。
この記述だけで実行しても、変数strAaに何も代入されないため、エラーとなってしまいますので、ユーザーフォーム1についても
いろいろ記述をする必要があります。
(2) ユーザーフォーム1の記述
① 決定ボタンの作成
Macro1を実行した場合、「UserForm1.Show」により、ユーザーフォームを表示することになりますが、ListBoxでファイル名を選択したあとに次のプログラムへ進む「きっかけ」を作成する必要があります。
進むきっかけとして下の画像のとおり「決定」ボタンを作成しました。
決定ボタンをクリックした場合のコードは次のとおりです。
変数strAaにListBox1で選択したファイル名を代入しユーザーフォーム1を隠します。この記述するとユーザーフォームを隠した後、Macro1の続きのプログラムを実行することになります。
(3) Macro1の実行
ユーザーフォーム1を改良後、Macro1を実行すると、次のようになります。
ユーザーフォーム1が表示されますので、ファイル名を選択(緑色の枠囲み部分)して決定ボタン(赤色の部分)をクリックします。すると次の画面が表示されます。
Macro1で記述した、「MsgBox strAa」が実行され、Listboxで選択したファイル名が表示されます。
まとめ
Accessでは、リストボックスを活用していましたが、Excelで利用するのは初めてでした。
複数のファイルとシートがあり、さらにその数が増加することが予測される場合は、有効な方法かと思います。
シート名を表示、選択する方法は後日、記載いたします。
■□◆◇ 編集後記 ◇◆□■
駅伝を見るのが好きです。
先日、とある大会に親戚が出場するというのでテレビを見ていたのですが、中盤ぐらいの順位だったので、テレビに映ったのは、襷を渡す時だけでした。
現地に応援に行っても、目の前を走り抜けるのは一瞬だしテレビでも上位でなければ、映る機会はほとんどないし、駅伝(マラソンなど長距離の競技)の応援はなかなか難しいですね。