|
|
| Excel VBA Macro ・ ブックシート ・ FAQ |
|
セルに入力したブック名でそのブックを開くには?
|
|
|
|
Question 14.3 |
|
 |
 |
|
|
はじめまして。いつも貴殿のホームページは大変わかりやすく、仕事に重宝しております。
さて、お聞きしたいのですが、あるセルに入力したブック名でそのブックを開くようなマクロを、作りたいのですが・・・・・
そのことにより、ブックの内容を表示したリストから、呼び出したいブック名をセルに入力することで、すぐに開くことができるからです。 よろしくお願いします。
|
|
Answer |
Copyright (C) 1999.1.14 永井善王 |
|
|
あなたがお使いのエクセルのバージョンが不明のため、95と97に共通するマクロで、お答えします。
質問にある「ブックの内容を表示したリスト」と、「ブック名を入力するセル」とが、別々のシートにあった場合でもマクロは組めますが、回答をわかりやすくするために、下図のデザインのシートを作ってみました。
「開きたいブック名を入力するセル」は、B2とします。
A2からC5が「ブックの内容を表示したリスト」です。
回答用のサンプルのため、行数が3行しかないですが、増えてもマクロには影響ありません。
A列の整理No.については後で、説明します。
マクロのポイントとしては、
(1) B1セルの値を使ってブックを開く方法
(2) 表示したリストのブックが、すべて同じフォルダにあるかどうか
(3) 同様に、同じドライブにあるかどうか
(4) ブック名入力後にマクロを簡単に実行する方法、 くらいでしょうか。
(1) については、このHPの「Macro」の「開始・終了」の[応用型]のページに載っている「開始処理」と、
「値の出入」の[基本型]のページの「セルの値を取り出す」を組み合わせて作ればよいでしょう。
(2)と(3)については、すべて同一とします。
このケースを当てはめてみると、マクロは下記のとおりになりますね。
Sub セルに入力したブック名のブックを開く()
ブック名 = Cells(1, 2) 'B1セルの値を取り出す
Workbooks.Open FILENAME:=ブック名 & ".xls" '指定されたブックを開く
End Sub
以上で質問への回答としては終りです。
ですが、ポイント(4)と整理No.についても、考えておきたいですね。
あなたは十分おわかりかと思いますが、参考のために以下に書いておきます。
ユーザーが行う操作を考えると、B2セルにブック名を入力した後、メニューバーの「ツール」から「マクロ」をクリックし、「マクロの実行」ダイアログからマクロ名を選んで「開始ボタン」を押す、と なります。 ・・ わずらわしいですね。
ワークシート上に、右図のようにコマンドボタンを作っておいて、上記のマクロをボタンに登録しておきましょう。
ユーザーは、ボタンを押すだけの操作で済みます。
だんだん欲が出てきました。
ブック名の入力の代わりに、整理No.を使えないでしょうか?
この例のようにブック名が短ければ、大きな入力負荷にはならないでしょうが、整理No.の入力だけで済むなら、負荷もミスも少なくなるでしょう。
そのためには、下図のようにVLOOLUP関数を使えば、整理No.からブック名を取り出すことができます。
上記のマクロは、ブック名を B1セルから取り出すようになっていますので、D1セルに書きかえる必要があります。
D1セルを使いたくない(ユーザーに見せたくない)場合は、VLOOLUP関数をマクロの中に組み込むことも可能です。
くわしい説明は省略しますが、興味のある方は、このHPの「Macro」の「サンプルマクロ」のページに載っている
「1)受信データ自動編集」の中で使っているので、研究してみてください。
場合によっては、このHPの「Gallery」の「索引メニュー」のページに載っている「共用資料の索引」のように、「ブックの内容を表示したリスト」をリストボックスとして表示して、ユーザーがそのリスト上でクリックするだけで、希望のブックを開くようにすることも可能と思います。
|
|
|
|
| |
|
|