PART1 使いたいコマンドを一目で探せるマクロ作成便利資料
ExcelVBAでマクロを組む場合馴れてきて経験を積むと、どんな時どんなコマンドを使用すればよいか頭に
浮かびます。著者も15年ほど前からExcelVBAの虜になってマクロを多数作成しており、新しいマクロを作成
する場合使用するプロパティ・メソッド・関数などは思い着きます。ただし膨大な量のスペルや構文については
正確に覚えることができないので、参考資料を見ます。著者が数年間に渡り見やすくまとめた参考資料は自分
が使用する場合、ヘルプを見るより効率よくマクロを短時間で作成できます。
本HPでは、そのマクロ作成便利資料を本章で紹介します。


■1-1 ファイルを制御するコマンド18件の使用例一覧表
ファイル制御関連で、Excel2000から追加された「FileSystemObject」の使用も便利ですが、使用するブックごとに
参照設定が必要なので、それが面倒という方のために、Excel95の昔からあるファイル制御関連に使用できる
命令を表1にまとめました。これらを使用すればExcel95以降のどのExcelバージョンでも問題なく動きます。
なお、「FileSystemObject」でオブジェクトを設定で参照設定の必要はありませんが、マクロ例は3-8(3)を参照。

【表1 ファイル制御関連一覧表】
項目 マクロ例 名前 実行内容 記事
ファイル名 ファイル1_1 Name オブジェクトの名前取得 プロパティ
 
 
ファイル1_2 Caption 最後に開いたbook名読み取り プロパティ
ファイル1_3 FullName パスを含むオブジェクト名の取得 プロパティ
パス関連
 
 
ファイル2_1 DefaultFilePath ファイルオープン時のデフォルトパス プロパティ
ファイル2_2 Path 絶対パスを文字列で返す プロパティ
ファイル2_3 CurDir カレントパスを取得 関数
ドライブ・
フォルダ
操作関連
 
 
ファイル3_1 ChDrive カレントドライブの変更 ステートメント
ファイル3_2 ChDir カレントフォルダの変更 ステートメント
ファイル3_3 MkDir フォルダ(デレクトリ)を作成 ステートメント
ファイル3_4 RmDir フォルダ(デレクトリ)を削除 ステートメント
ファイル4_1 Dir ファイル名フォルダ名を返す 関数
ファイルの
情報を取得
 
 
ファイル4_2 FileDateTime ファイル作成日を返す 関数
ファイル4_3 FileLen ファイルのサイズをバイトで返す 関数
ファイル4_4 SetAttr ファイルの属性を設定 ステートメント
ファイル4_5 GetAttr ファイルの属性情報を返す 関数
ファイルを
制御関連
 
ファイル5_1 FileCopy ファイルのコピー ステートメント
ファイル5_2 Name ファイルの移動、又は名前変更 ステートメント
ファイル5_3 Kill ファイルの削除 ステートメント



(1)ァイル名を取得するコマンド3例

[1]オブジェクトの名前取得
本例はNameプロパティで、アクティブになっているブックの名前を取得します(実行結果は画像1)。
Sub ファイル1_1()
    MsgBox "ブック名の読み取り→ " & ActiveWorkbook.Name
End Sub

画面 1 オブジェクトの名前取得実行例



[2]最後に開いたbook名読み取り
本例はCaptionプロパティで、アクティブになっているウインドウの表題を取得します(実行結果は画像2)。

Sub ファイル1_2()
    MsgBox "最後に開いたbook名読み取り→ " & ActiveWindow.Caption
End Sub

画面 2 最後に開いたbook名読み取り実行例



[3]パスを含むオブジェクト名の取得
本例はFullNameプロパティで、アクティブブックのパスを含むブック名を取得します(実行結果は画像3)。
Sub ファイル1_3()
    MsgBox "パスを含むブック名→ " & ActiveWorkbook.FullName
End Sub

画面 3 パスを含むオブジェクト名の取得実行例




(2)パス名を取得するコマンド3例

[1]ファイルオープン時のデフォルトパス
本例はDefaultFilePathプロパティで、ファイルオープン時のカレントフォルダパスを取得します(実行結果は画像4)
Sub ファイル2_1()
    MsgBox "カレントフォルダ→ " & Application.DefaultFilePath
End Sub

画面 4ファイルオープン時のデフォルトパス実行例



[2]絶対パスを文字列で返す(実行例は画面 5参照)
本例はPathプロパティで、この実行中のマクロの入っているブックのパス取得(実行結果は画像5)
Sub ファイル2_2()
    MsgBox "実行中のマクロBookのパス→ " & ThisWorkbook.Path
End Sub

画面 5絶対パスを文字列で返す実行例



[3]カレントパスを取得
本例はCurDir関数で、現在のカレントパスを取得(実行結果は画像6)
Sub ファイル2_3()
MsgBox "カレントパス→ " & CurDir()
End Sub

画面 6カレントパスを取得実行例




(3)ドライブ・フォルダを操作するコマンド4例

[1]カレントドライブの変更
本例はChDriveステートメントで、現在のドライブを取得しそれをカレントドライブに設定します(実行結果は画像7)
Sub ファイル3_1()
Dim dva As String
    phn = ActiveWorkbook.Path
        dva = Left(phn, 2)
    ChDrive dva    'ドライブの変更
 
MsgBox "アクティブブックのドライブ「" & dva & "」を" & Chr(10) & _
       "カレントドライブに設定しました。"
End Sub

画面 7カレントドライブの変更実行例



[2]カレントフォルダの変更
本例はアクティブブックのフォルダを取得して、ChDirステートメントでそれをカレントフォルダに
設定します(実行結果は画像8)
Sub ファイル3_2()
Dim dra As String
    phn = ActiveWorkbook.Path
        dra = Mid(phn, 3)
    ChDir dra      'フォルダの変更
 
MsgBox "アクティブブックのフォルダ「" & dra & "」を" & Chr(10) & _
       "カレントフォルダに設定しました。"
End Sub

画面 8カレントフォルダの変更実行例



[3]フォルダ(デレクトリ)を作成
本例はアクティブブックの場所を取得し、MkDirステートメントでそれと同じ場所にフォルダ名「MyGIF」
のフォルダを追加します(実行結果は画像9)
Sub ファイル3_3()
Dim phn As String
phn = ActiveWorkbook.Path
    On Error Resume Next
       RmDir phn & "\MyGIF" 'フォルダの削除
    On Error GoTo 0
    MkDir phn & "\MyGIF"  'エラー回避に既にある場合は上記で削除
 
MsgBox phn & "(アクティブブックと同じ場所)へ" & Chr(10) & _
    "フォルダ名「MyGIF」のフォルダを追加しました。"
End Sub

画面 9 フォルダ(デレクトリ)を作成実行例



[4]フォルダ(デレクトリ)を削除
本例は"\MyGIF" 'フォルダを指定して、RmDirステートメントで削除する例です(実行結果は画像10)
Sub ファイル3_4()
Dim phn As String
phn = ActiveWorkbook.Path
    On Error Resume Next
       RmDir phn & "\MyGIF" 'フォルダの削除
        If Err = 76 Then
            MsgBox "削除するフォルダ「MyGIF」はありません。"
        Else
            MsgBox phn & "のフォルダ「MyGIF」を削除しました。"
        End If
End Sub

画面 10 フォルダ(デレクトリ)を削除実行例




(4)ファイルの情報を取得するコマンド5例

[1]ファイル名フォルダ名を返す
フルパスを指定してDir関数でファイルファイル名取得します(実行結果は画像11)
GetOpenFilenameは開くボタンクリックで、ファイルは開かずパス取得に便利です。
Sub ファイル4_1()
Dim fff As String
    fff = Application.GetOpenFilename()
    MsgBox "フルパスからファイル名を取り出し→" & Dir(fff)
End Sub
-------------------------------------------------------------
Sub ファイル4_1a()
Dim fff As String
    fff = Application.GetOpenFilename()
    fa = Mid(fff, 1, InStrRev(fff, "\") - 1)
    MsgBox "指定ファイルの入っているフォルダ名を取り出し→" & Dir(fa, 16)
End Sub
※Dir(fa, 16)の引数の16(定数vbDirectory)はフォルダ

画面 11 ファイル名フォルダ名を返す実行例



[2]ファイル作成日を返す
FileDateTime関数で、アクティブブックのファイル作成日を取得します(実行結果は画像12)
Sub ファイル4_2()
Dim phn As String, fff As String
    phn = ActiveWorkbook.FullName
        fff = Dir(phn)
    MsgBox fff & "の作成年月日→ " & FileDateTime(phn)
End Sub

画面 12 ファイル作成日を返す実行例



[3]ファイルのサイズをバイトで返す
FileLen関数で、アクティブブックのファイルサイズを取得します(実行結果は画像13)
Sub ファイル4_3()
Dim phn As String, fff As String
    phn = ActiveWorkbook.FullName
        fff = Dir(phn)
    MsgBox fff & "のファイルサイズ→ " & FileLen(phn) & "バイト"
End Sub

画面 13 ファイル作成日を返す実行例



[4]ファイルの属性を設定
SetAttrステートメントで、アクティブブックの属性を「標準ファイル」に設定します(実行結果は画像14)
Sub ファイル4_4()
Dim phn As String, fff As String
    phn = ActiveWorkbook.FullName
        fff = Dir(phn)
 
    SetAttr phn, vbNormal
    MsgBox fff & "の属性を「標準ファイル」に設定しました "
End Sub

画面 14 ファイルの属性を設定実行例



[5]ファイルの属性情報を返す
GetAttr関数で、アクティブブックのファイルの属性を取得します(実行結果は画像15)
Sub ファイル4_5()
Dim phn As String, fff As String
    phn = ActiveWorkbook.FullName
        fff = Dir(phn)
    MsgBox fff & "ファイルの属性→ " & GetAttr(phn)
 0:標準、1: 読み込み専用、2: 隠しファイル、4: システム、16: フォルダ
End Sub

画面 15 ファイルの属性情報を返す実行例


GetAttr 関数の戻り値は、次の各属性を表す整数の合計値です。
vbNormal : 0   ⇒通常ファイル
vbReadOnly : 1 ⇒読み取り専用ファイル
vbHidden : 2   ⇒隠しファイル
vbSystem :4  ⇒システム ファイル。Macintosh では使用できません。
vbDirectory :  ⇒16 フォルダ
vbArchive :32  ⇒アーカイブ
vbAlias : 64   ⇒エイリアス ファイル




(5)ファイルを制御するコマンド3例

[1]ファイルのコピー
本例はFileCopyステートメントで、Book1.xlsをコピーして同じフォルダへファイル名「MyBook.xls」で貼り
付ける例です(実行結果は画像16)
Sub ファイル5_1()
Dim txtpas As String
txtpas = ThisWorkbook.Path
 
    FileCopy txtpas & "\" & "Book1.xls", txtpas & "\MyBook.xls"
 
MsgBox "Book1.xls" & "をコピーして同じフォルダへ" & Chr(10) & _
    "ファイル名「MyBook.xls」で貼り付けました。"
End Sub

画面 16 ファイルのコピー実行例



[2]ファイルの移動、又は名前変更
本例はNameステートメント、「MyBook.xls」のファイル名をファイル名「Book99.xls」に変更する
例です(実行結果は画像17)。
Sub ファイル5_2()
Dim txtpas As String
txtpas = ThisWorkbook.Path
    On Error Resume Next
        Name txtpas & "\MyBook.xls" As txtpas & "\Book99.xls"
    If Err = 58 Then
        MsgBox "ファイル名「Book99」にありので同じ名前には変更できません。"
        Exit Sub
     ElseIf Err = 53 Then
        MsgBox "名前を変更するファイル名が見つかりません。"
        Exit Sub
    End If
 
MsgBox "「MyBook.xls」のファイル名を" & Chr(10) & _
    "ファイル名「Book99.xls」に変更しました。"
End Sub

画面 17 ファイルの名前変更実行例



[3]ファイルの削除
本例はKillステートメントで、このマクロ入っているブックと同じフォルダにあるファイル名
「Book99.xls」を削除します()
Sub ファイル5_3()
Dim txtpas As String
txtpas = ThisWorkbook.Path
    On Error Resume Next
        Kill txtpas & "\Book99.xls"
    If Err = 53 Then
        MsgBox "削除するファイル名「Book99」はありません。"
        Exit Sub
    End If
MsgBox "「Book99.xls」を削除しました。"
End Sub

画面 18 ファイルの削除実行例




【戻る】    【Top画面】   【HPへ】