忍者ブログ
バイオインフォマティックス技術者試験、情報処理試験など、IT系の試験を基礎から勉強します。また、Javaなどプログラミングを勉強します。

【VBAスタンダード対策】MkDir ステートメントによるフォルダ作成処理を攻略!

VBAで新しいフォルダ(ディレクトリ)を自動生成する際に使用するのが MkDir ステートメント です。指定方法の記述ルールや、すでにフォルダが存在する場合の挙動などの重要な注意点をマスターしましょう。

1. 問題:MkDir ステートメントによるフォルダ作成

【 問題 】 C:\Data フォルダの中に、Backup という名称の新しいフォルダを作成したい。空欄 ( A ) に入る正しい記述はどれでしょうか?

Sub CreateFolderTest()
    Dim folderPath As String
    folderPath = "C:\Data\Backup"

    ( A )
End Sub

① CreateFolder folderPath
② MkDir folderPath
③ MkDir(folderPath)
④ Application.MakeDirectory folderPath

2. 正解:MkDir ステートメントの記述に関する正解

正解: ② MkDir folderPath

3. 解説:MkDir ステートメントの構文とエラー回避のポイント

指定したパスに新しいフォルダを作成するには MkDir ステートメント(Make Directoryの略)を使用します。

[ MkDir の構文構造と注意ルール ]

構文:MkDir 作成したいフォルダのパス

1. 記述のルール(ステートメント):
MkDir は関数ではなくステートメント(命令文)のため、引数をカッコ ( ) で囲まず、MkDir folderPath のように空白を空けてパスを指定します。

2. 誤り(①, ③, ④)の理由:
・①(CreateFolder): CreateFolder は FileSystemObject (FSO) のメソッドであり、標準VBAステートメントではありません。
・③(MkDir(folderPath)): 単一の引数を戻り値なしで呼び出す際にカッコをつける記述はVBAの構文違反となります。
・④(Application.MakeDirectory): Application オブジェクトにこのようなメソッドは存在しません。

3. 実務・試験での超重要注意点(同名フォルダの存在):
作成しようとするフォルダがすでに存在する場合、実行時エラー75(「パス名またはファイル名が正しくありません。」)が発生してプログラムが停止します。実務では Dir(folderPath, vbDirectory) 等で事前チェックを行うのが定石です。

ここが試験に出る!: スタンダード試験では、フォルダを作成する MkDir と、フォルダを削除する RmDir の名称の対応や、すでにフォルダが存在する場合のエラー判定問題がよく出題されます。


4. まとめ

「フォルダの作成は MkDir フォルダパス 」。このステートメントを押さえておけば、当日の日付名がついたフォルダ(例: C:\Data\20260814)を自動作成してレポートを格納するような実務マクロも簡単に組めるようになります。


PR

【VBAスタンダード対策】FileCopy ステートメントによるファイルのコピー処理を攻略!

VBAで既存のファイルを別の場所や別のファイル名で複製(コピー)する際に使用する FileCopy ステートメント。引数の指定順序や指定方法の記述ルールを正確にマスターしましょう。

1. 問題:FileCopy ステートメントによるファイル複製処理

【 問題 】 C:\Data\Sales.xlsx というファイルを、C:\Backup\Sales_backup.xlsx としてコピー(複製)したい。空欄 ( A ) に入る正しい記述はどれでしょうか?

Sub CopyFileTest()
    Dim srcPath As String
    Dim destPath As String

    srcPath = "C:\Data\Sales.xlsx"
    destPath = "C:\Backup\Sales_backup.xlsx"

    ( A )
End Sub

① FileCopy destPath, srcPath
② FileCopy srcPath, destPath
③ FileCopy(srcPath To destPath)
④ Application.FileCopy srcPath, destPath

2. 正解:FileCopy ステートメントの記述に関する正解

正解: ② FileCopy srcPath, destPath

3. 解説:FileCopy ステートメントの構文と重要な注意点

外部ファイルをVBAから直接コピーするには FileCopy ステートメント を使用します。

[ FileCopy の構文構造と注意ルール ]

構文:FileCopy コピー元ファイルパス , コピー先ファイルパス

1. 引数の指定順序:
・第1引数:コピー元のファイルパス(srcPath
・第2引数:コピー先のファイルパス(destPath
※①のようにコピー先とコピー元を逆にして指定すると、意図しない上書きエラー等が発生します。

2. 記述のルール(ステートメント):
FileCopy は関数(Function)ではなくステートメント(命令文)のため、③のようにカッコ ( ) で囲んだり To キーワードを使ったりする記述は構文エラーとなります。

3. 実務上の超重要注意点(開いているファイルの扱い):
FileCopy でコピーしようとするコピー元ファイルがExcel等で開かれている場合、実行時エラー(「アクセス拒否」や「ファイルが開かれています」)が発生します。必ずファイルを閉じた状態で実行する必要があります。

ここが試験に出る!: スタンダード試験では、FileCopy の引数の順番(コピー元 → コピー先)を問う問題や、同じファイル操作命令である Name ステートメント(ファイル名の変更・移動)との役割の違いについての問題がよく出題されます。


4. まとめ

「ファイルのコピーは FileCopy コピー元, コピー先 」。このステートメントを押さえておけば、日次処理の前にマスターファイルのバックアップを自動作成するような実務マクロも安全に構築できるようになります。


【VBAスタンダード対策】Select Case ステートメントにおける「To」演算子の範囲指定を攻略!

Select Case で数値や文字の「~から~まで」という連続した範囲を指定したい場合に活躍するのが To 演算子 です。Is 演算子との違いや、正しく評価される記述ルールをマスターしましょう。

1. 問題:Select Case での範囲指定(To)の書き方

【 問題 】 下記のコードを実行して CheckCategory プロシージャを呼び出した際、メッセージボックス(MsgBox)に "ミドル層" と表示させたい。空欄 ( A ) に入る正しい範囲指定の記述はどれでしょうか?

Sub CheckCategory()
    Dim age As Integer
    age = 35

    Select Case age
        Case 0 To 19
            MsgBox "若年層"
        Case ( A )
            MsgBox "ミドル層"
        Case Else
            MsgBox "シニア層"
    End Select
End Sub

① 20 - 49
② 20 To 49
③ 20 ~ 49
④ Is 20 To 49

2. 正解:Case 節における To 指定の正解

正解: ② 20 To 49

3. 解説:To 演算子の構文ルールとひっかけポイント

特定の「最小値から最大値までの範囲」を判定条件にしたい場合は、[最小値] To [最大値] の形式で記述します。

[ Select Case における To 指定のルール ]

1. 構文の基本:
   Case 20 To 49 は、「20以上 かつ 49以下」を意味します。

2. 誤り(①, ③, ④)の理由:
・①(20 - 49): ハイフンで書くと「20マイナス49(=-29)」という引き算の計算式とみなされてしまいます。
・③(20 ~ 49): チルダ記号はVBAの範囲指定演算子として存在しません(コンパイルエラー)。
・④(Is 20 To 49): Is は比較演算子(>, <, >= など)とセットで使うキーワードです。To と併用すると構文エラーになります。

★ 補足(並び順のルール):
To を使う際は、必ず 「小さい値 To 大きい値」 の順番で記述する必要があります(例: 49 To 20 と逆に書くと判定が無視されます)。

ここが試験に出る!: スタンダード試験では、比較演算子を使う Case Is >= 20 と、範囲指定を行う Case 20 To 49 のキーワード(Is なのか To なのか)がごちゃ混ぜになった選択肢がよく出題されます。「To の前に Is はつけない」というルールをしっかり押さえておきましょう。


4. まとめ

「~から~までの範囲指定は Case 最小値 To 最大値 」。この書式をマスターすれば、年齢層の区分分けや売上実績に応じたインセンティブランクの判定などをシンプルにコード化できるようになります。


【VBAスタンダード対策】Select Case ステートメントにおける「Is」演算子の条件指定を攻略!

複数条件の分岐をすっきり記述できる Select Case。数値の大小比較を行う場合に使う Is 演算子 の正確な指定ルールと、正しく評価されるための書き方をマスターしましょう。

1. 問題:Select Case での比較演算子と Is の記述ルール

【 問題 】 下記のコードを実行して CheckRank プロシージャを呼び出した際、メッセージボックス(MsgBox)に "B評価" と表示させたい。空欄 ( A ) に入る正しい条件指定の記述はどれでしょうか?

Sub CheckRank()
    Dim score As Integer
    score = 75

    Select Case score
        Case Is >= 80
            MsgBox "A評価"
        Case ( A )
            MsgBox "B評価"
        Case Else
            MsgBox "C評価"
    End Select
End Sub

① score >= 70
② Case >= 70
③ Is >= 70
④ >= 70

2. 正解:Case 節における条件指定の正解

正解: ③ Is >= 70

3. 解説:Case 節で比較演算子(>, <, >=, <= など)を使う場合の構文ルール

Select Case [評価する変数] の構造において、Case 節で「~以上」「~未満」のような比較を行う場合は、必ず Is 演算子 を前に添える必要があります。

[ Select Case における Case 節の書き方一覧 ]

1. 値を直接指定(完全一致):
   Case 70 (※単一の値はそのまま書く)

2. 範囲を指定(~から~まで):
   Case 70 To 79 (※範囲指定キーワード To を使う)

3. 比較演算子を使う(大小比較):
   Case Is >= 70 (※比較演算子の前には必ず Is が必要!)

誤り(①, ②, ④)の理由:
・①(score >= 70):変数名を再度書く必要はありません。
・②(Case >= 70):Case を二重に書くことになりコンパイルエラーとなります。
・④(>= 70):Is を省略して演算子から始めると構文エラーになります。

ここが試験に出る!: スタンダード試験では、VBAエディタ(VBE)の自動補完機能の罠についても問われます。VBEに Case >= 70 と入力すると自動的に Case Is >= 70 に整形されますが、試験の選択肢問題では 「Is が入った正しい構文を理解できているか」 が直接狙われます。


4. まとめ

「Select Case で比較演算子を使うときは Case Is 演算子 値 」。この構文ルールを確実に覚えておけば、多段階の判定や条件分岐を If 文よりも見やすく・ミスなく記述できるようになります。


【VBAスタンダード対策】SaveAs メソッドによる「名前を付けて保存」を攻略!

ブックを別名で保存する際に使用する SaveAs メソッド。VBAスタンダード試験では、保存先パスを指定する第1引数(Filename)の書き方や、保存後のアクティブブックの状態に関する理解が頻繁に問われます。

1. 問題:SaveAs メソッドによるファイル保存指定

【 問題 】 アクティブなワークブックを、C:\Data フォルダの中に Report_2026.xlsx というファイル名で「名前を付けて保存」したい。空欄 ( A ) に入る正しい記述はどれでしょうか?

Sub SaveAsTest()
    Dim folderPath As String
    Dim fileName As String

    folderPath = "C:\Data\"
    fileName = "Report_2026.xlsx"

    ( A )
End Sub

① ActiveWorkbook.SaveAs Path:=folderPath & fileName
② ActiveWorkbook.SaveAs Filename:=folderPath & fileName
③ ActiveWorkbook.SaveAs File:=folderPath & fileName
④ ActiveWorkbook.SaveAs Name:=folderPath & fileName

2. 正解:SaveAs メソッドの引数に関する正解

正解: ② ActiveWorkbook.SaveAs Filename:=folderPath & fileName

3. 解説:SaveAs メソッドの基本構文と重要な引数ルール

ワークブックを別の名前や異なるパスで保存するには Workbook.SaveAs メソッドを使用します。

[ SaveAs メソッドの構造とひっかけポイント ]

構文:Workbook.SaveAs( Filename , FileFormat , ... )

1. 第1引数の名前は「Filename」!
保存先のフォルダパスとファイル名を結合したフルパスを指定する引数名は Filename です。直感的に「Path」や「Name」、「File」を選びがちですが、これらは名前付き引数として存在しないためコンパイルエラーとなります。

2. SaveAs を実行した後の動作(重要!)
SaveAs を実行すると、「現在開いているブック自体」が新しい保存先のブックに切り替わります(元のファイルは閉じられ、保存後のファイルがアクティブになります)。
※元のファイルを開いたまま別名コピーを保存したい場合は、SaveCopyAs メソッドを使用します。

ここが試験に出る!: スタンダード試験では、SaveAs の引数名(Filename)のひっかけ問題のほか、「マクロ付きブック(.xlsm)として保存する場合の FileFormat 引数(xlOpenXMLWorkbookMacroEnabled)」 の指定要否についてもよく出題されます。


4. まとめ

「名前を付けて保存は Workbook.SaveAs Filename:="フルパス" 」。この構文と引数名を正確に覚えておけば、作成したレポートを日付や拠点名入りのファイル名で自動保存するマクロを迷わず実装できるようになります。