オデッセイの運営サイト一覧

Excel®️、Accessのマクロ・VBAのスキルを評価する資格VBAエキスパート

企業・教育機関の皆さまへ 試験会場を探す お問い合せ

やってみよう!Excel VBAで業務改善!|VBAとの出会い編

第27話「プロシージャを呼び出してみよう!」

第27話「プロシージャを呼び出してみよう!」

登場人物紹介

キャンセルに対応しよう!

「だろう?Application.GetOpenFilenameのダイアログで[キャンセル]ボタンをクリックすると
文字列の"False"が返るんだ。
そんな名前のブックはないから、そのあとのWorkbooks.Openでエラーになる。
…それにApplication.GetOpenFilenameの引数を省略してるから、
すべてのファイルが選択候補として表示されてしまっているよ。
こう引数を指定すると、Excelのブックだけを候補に表示できるんだ」

八木くんがカタカタと星くんの書いたコードを手直しします。

「できた。こんな感じかな…」

					

Sub Test() Dim Bookpath As String '変数に対象ブックのパスを格納する(Excel ブックだけを候補に表示) Bookpath = Application.GetOpenFilename("Excel ブック,*.xls") '[キャンセル]ボタンがクリックされたか判定する If Bookpath <> "False" Then '対象ブックを開く Workbooks.Open Filename:=Bookpath 'セルA1に"開いたよ!"の文字列を入力する Range("A1") = "開いたよ!" '対象ブックを閉じる ActiveWorkbook.Close SaveChanges:=True End If End Sub

「コードの4行目、Application.GetOpenFilenameの引数、"Excel ブック,*.xls"で、
ダイアログに表示するファイルの候補を指定しているよ。
この場合、拡張子が"xls"のExcel ブックのみが候補に表示される。
あと、コードの6行目、If Bookpath <> "False" Thenで、キャンセルされなかったときのみ、
処理を実行するようにしているよ」

星くんは、八木くんの手直ししたコードをしげしげと眺めます。

「…なるほど、こうすればユーザーがキャンセルしたケースに簡単に対応できるね。
それに、ブック以外のファイルが表示されなくなれば、ユーザーにとってより使いやすくなるなあ…」

「うん、ブラッシュアップとしてはこんなところだな。
では早速、マクロからマクロを呼び出す方法について解説していくとするか…」

シーズン1 「VBAとの出会い」編:エピソード一覧

一覧へ戻る

MENU