Excel VBA スタンダードの暗記項目まとめ【第四章 ファイルの操作】

8月 7, 2020Excel VBA スタンダード

この記事では、VBAエキスパートの「Excel VBA スタンダード」の受験用に、暗記すべき項目について、公式の試験範囲の第四章をまとめました

とくに暗記すべきところは「太文字」や「」でまとめてあります。とくにステートメントやメソッド、プロパティについては、記述できるレベルまで仕上げておくことをおすすめします。

この記事では暗記を優先するため、解説をできるだけ省いています。学習未経験の人は、Excel VBA スタンダードの公式テキストなどで試験範囲の内容に目を通してからの利用を推奨します。

また、公式テキストに掲載されていないなど、試験に出る可能性の低い内容の解説は、基本的に割愛しています。

Excel VBA スタンダード 第四章 ファイルの操作

4.1 ファイルの操作

ブックを開く(Openメソッド)

ブックを開く処理はWorkbooksコレクションのOpenメソッドを利用します。記述方法は以下のとおりです。

「Workbooks.Open ブックの名前」

ブックの名前の指定は、「&」を利用した文字列の結合などを使うことがあります。実際の試験問題でも、その知識を前提としたものが問われる可能性が高いかと思います。

ブックを保存する(SaveAsメソッド)

SaveAsメソッドで、ブックの保存ができます。アクティブブックを保存する場合、以下のようになります。

「ActiveWorkbook.SaveAs ファイル名を含めたファイルパス」

同様に、実行中のマクロのあるブックを保存する場合は以下のとおりです。

「ThisWorkbook.SaveAs ファイル名を含めたファイルパス」

ファイル名に年号を入れる(Year関数、Now関数、Format関数)

ブックを保存する際、ファイル名に「何年」を入れたい場合はYear関数を利用します。また、現在が何年かを自動で取得したい場合はNow関数を利用します。組み合わせて「Year(Now)」とすると、例えば2020年に実行した場合は「2020」となります。

また、Format関数を利用すると、書式を指定することができます。Format関数は「Format(値, 書式記号)」のように記述して利用します。Format関数の日時に関する書式記号は、最低限以下の内容を抑えておきましょう。

Format関数の書式記号例

  • yyyy:西暦で4桁の年
  • m:月の数値
  • mm:月の数値を2桁表示にする
  • d:日の数値
  • dd:日の数値を2桁表示にする
  • 00:数値を示す。0の数に桁が足りないときは0で詰める
  • ##:数値を示す。#の数に桁が足りないときはそのまま表示する

数値を示す書式については、実際の例と見比べた方が理解が速いかと思いますので、表にまとめておきます。

Format関数の利用例 元の数値 表示される数値
Format(“123", “####") 123 123
Format(“123", “0000") 123 0123
Format(“12.3", “0.00") 12.3 12.30
Format(“12.3", “#.##") 12.3 12.3
Format(“12.3", “0#0.##0") 12.3 012.300
Format(“123", “0#0.##0") 123 123.000

また、以下の例では今日の年月日が、4桁の西暦、2桁の月、2桁の日付の形式で、区切りなしで表示されます。

Sub Macro1()
    MsgBox Format(Now, "yyyymmdd")
End Sub

 

ファイルをコピーする(FileCopyステートメント)

FileCopy コピー元のファイル名, コピー先のファイル名」でファイルのコピーができます。RangeオブジェクトなどのCopyメソッドと混同しないようにしましょう。

また、存在しないフォルダーにコピーしようとするとエラーになります。

4.2 フォルダの操作

フォルダの作成(MkDirステートメント)

MkDir 作成するフォルダ名」で、フォルダを作成することができます。すでに存在するフォルダと同じ名前のフォルダを作成しようとするとエラーになります。

4.3 文字列操作によるパスの指定(2019年5月改訂で追加)

実行中のマクロのあるブックを指定する

ThisWorkbook.Sheets(“Sheet1")とすることで、マクロ実行中のブックの「Sheet1」シートを指定することができます。

マクロ実行中のシートに操作対象のブック名記載しておくと、事前に記載した値を取得して、操作に利用することができます。

Dir関数、InStr関数、Left関数、Right関数、Mid関数

公式テキストでは解説されていませんが、自分の経験から試験で問われる可能性があるものをまとめておきます。実際の業務でもよく使われることがあるので、覚えておくことをおすすめします。

Dir関数は、ファイル名の取得に利用されます。「Dir(ファイルへのパス)」の形で記述し、最初に一致したファイル名の値を返します。下の例では「C:tmpfile」配下にある拡張子が「.xlsx」のファイルの名前を取得するようになっています。

また、例の13行目のように、引数を指定せず「Dir()」とすると、先にしていたフォルダの次のファイルを検索します。

Sub Sample()
    Dim tmp As String
    Dim FileList() As String
    Dim cnt As Integer
    
    tmp = Dir("C:tmpfile*.xlsx")
    cnt = 0
    
    Do While tmp <> ""
        ReDim Preserve FileList(cnt)
        FileList(cnt) = tmp
        cnt = cnt + 1
        tmp = Dir()
    Loop
End Sub

InStr関数は、文字列を検索し、見つかった最初の位置を返します。記述方法はInStr(検索する文字列, 検索キーワード)の形です。例えば「セルA1にある文字の"ヒヒ"で始まる位置を調べたい」場合は、以下のようになります。

Sub Sample()
    Range("A1") = "マントヒヒ"
    MsgBox InStr(Range("A1"), "ヒヒ")
End Sub

InStr関数の実行例

Left関数Right関数Mid関数は、文字列から必要な文字を切り取る際に利用できます。

Left関数とRight関数は、単純に文字列と切り取る数を指定して利用します。下の例では、Left関数は左から3文字、Right関数は右から2文字を切り取っています。

一方、Mid関数は、途中の文字を切り取る処理を行います。そのためMid(文字列, 切り取りの最初の位置, 切り取る文字数)のように利用します。下の例では、2文字目から3文字分を切り取っています。

Sub Sample()
    Range("A1") = Left("マントヒヒ", 3)
    Range("A2") = Right("マントヒヒ", 2)
    Range("A3") = Mid("マントヒヒ", 2, 3)
End Sub

実行結果は、セルA1は「マント」、セルA2は「ヒヒ」、セルA3は「ントヒ」になります。


<<第三章 ステートメントへ | 第五章 ワークシート関数の利用へ>>


Excel VBA スタンダードの暗記項目まとめ一覧へ