第80回.ファイル操作Ⅰ(その他)
VBAではファイル操作するためのステートメントと関数が多数用意されています。
マクロVBAでファイル操作する場合は、これらの用意されたステートメントや関数を使い処理を実現します。
ファイル操作で使う、ステートメントと関数
ChDirステートメント
CurDir関数
MkDirステートメント
RmDirステートメント
Killステートメント
FileCopyステートメント
Nameステートメント
GetAttr関数
SetAttrステートメント
ステートメント・関数 |
構文 | 説明 |
ChDrive | ChDrive drive | 現在のドライブを変更します。 |
ChDir | ChDir path | 現在のフォルダを変更します。 |
CurDir | CurDir [(drive)] | 現在のパスを返します。 Driveを省略した場合は、現在のドライブのパスを返します。 |
MkDir | MkDir path | 新しいフォルダを作成します。 |
RmDir | RmDir path | 既存のフォルダを削除するステートメントです。 |
Kill | Kill pathname |
ディスクからファイルを削除します。 |
FileCopy | FileCopy source, destination | ファイルをコピーします。 |
Name | Name oldpathname As newpathname | ファイルまたはフォルダの名前を変更します。 必要に応じて他のフォルダにファイルを移動します。 |
SetAttr | SetAttr pathname, attributes | ファイルの属性を設定します。 |
GetAttr関数 | GetAttr(pathname) | ファイルまたはフォルダの属性を表す整数を返します。 |
GetAttrのみ関数となっていますが、特に関数とステートメントの違いを意識する必要はありません。
戻り値が必要なものは関数として実装されているという事です。
GetAttrは取得した属性を返すための戻り値が必要な為、関数として実装されています。
しかし実際には、これらは「VBA.FileSystem」のメンバーであるメソッドになります。
(IfステートメントやForステートメントとは根本的に違う種類のものになります。)
Call VBA.FileCopy("d:\test.txt", "d:\test2.txt")
※[VBA.]は省略可能
定数 | 値 | 内容 |
vbNormal | 0 | 標準ファイル |
vbReadOnly | 1 | 読み取り専用ファイル |
vbHidden | 2 | 隠しファイル |
vbSystem | 4 | システム ファイル。 Macintosh では使用できません。 |
vbVolume | 8 | ボリューム ラベル。この値を指定すると、すべての属性は無効になります。 Macintosh では使用できません。 |
vbDirectory | 16 | フォルダ |
vbAlias | 32 | エイリアス ファイル。 Macintosh でのみ使用できます。 |
この値はビット演算に対応するように作成されています。
任意の複数の値を足し算した値は、他の組み合わせと同一になることはありません。
この場合の足し算は論理演算のOrと同等です。
ファイル操作の使用例
現在のドライブは変更されません。
既にフォルダが存在する場合はエラーとなります。
フォルダ内にファイルが残っている場合はエラーとなります。
ファイルが存在しない場合はエラーとなります。
読み取り専用属性ファイルは削除できません。
ファイル"SourceFile"を"DestinationFile"としてコピーします。
"DestinationFile"が既に存在する場合は上書きされます。
ファイル"OldName"の名前を"NewName"に変更します。
"NewName"が既に存在する場合はエラーとなります。
GetAttrは関数なので戻り値が存在します。
前回の、Dir関数と合わせて、各種ファイル操作を実現します。
ファイル操作の実践例
バックアップフォルダは、
元のフォルダ名_bk
ただし、以下のVBAではサブフォルダは考慮していません。
Sub sample()
Dim strPath As String
Dim strFileName As String
'フォルダの選択
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = "D:\user"
.AllowMultiSelect = False
.Title = "フォルダの選択"
If .Show = True Then
strPath = .SelectedItems(1)
Else
Exit Sub
End If
End With
'バックアップフォルダの削除
If Dir(strPath & "_bk", vbDirectory) <> "" Then
strFileName = Dir(strPath & "_bk\")
'フォルダ内のファイルを全削除
On Error Resume Next 'ファイルが存在しない場合の対応
Kill strPath & "_bk\*"
On Error GoTo 0
'個別に削除する場合は以下
'Do While strFileName <> ""
' Kill strPath & "_bk\" & strFileName
' strFileName = Dir()
'Loop
RmDir strPath & "_bk\"
End If
'バックアップフォルダの作成
MkDir strPath & "_bk"
'バックアップの作成
strFileName = Dir(strPath & "\")
Do While strFileName <> ""
FileCopy strPath & "\" & strFileName, strPath & "_bk\"
& strFileName
strFileName = Dir()
Loop
End Sub
ファイル操作関連のステートメントと関数を太字にしています。
VBAコード内にコメントを入れていますが、
処理手順としては以下の順となっています。
・バックアップフォルダの削除
・バックアップフォルダの作成
・バックアップの作成
ファイル操作について
しかし、これらを全て完璧にマスターする必要はありません。
同じテーマ「マクロVBA入門」の記事
第77回.組み込みダイアログ(Dialogs,xlDialogPrint)
第78回.総合練習問題8
第79回.ファイル操作Ⅰ(Dir)
第80回.ファイル操作Ⅰ(その他)
第81回.総合練習問題9
第82回.RangeのResizeプロパティ
第83回.RangeのOffsetプロパティ
第84回.RangeのAddressプロパティ
第85回.結合セルの扱い
第86回.総合練習問題10
第88回.並べ替え(Sort)
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。