VBAでは、Scripting.FileSystemObject を使用してエクセルファイル内でファイルやフォルダにアクセスし、操作することができます。このオブジェクトを使用すると、エクセルマクロやVBAコード内でファイルの読み書き、フォルダの作成や削除などが可能です。
〇Scripting.FileSystemObjectの使い方
1. FileSystemObjectの参照
まず、Scripting.FileSystemObject オブジェクトを使用するために、VBAコード内で参照を追加します。
エクセルを開きます。
Alt + F11 キーを押して、VBAエディタを開きます。
「ツール」メニューから「参照設定」を選択し、リストから「Microsoft
Scripting Runtime」を探してチェックを入れます。
2. ファイルの作成と書き込み
新しいファイルを作成し、テキストを書き込む例です。
Sub CreateAndWriteToFile()
Dim fs As Object
Dim file As Object
'
FileSystemObjectの作成
Set fs = CreateObject("Scripting.FileSystemObject")
'
新しいファイルを作成
Set file = fs.CreateTextFile("C:\example.txt", True)
'
テキストを書き込む
file.WriteLine "Hello, World!"
'
ファイルを閉じる
file.Close
End Sub
3. ファイルの読み込み
作成したファイルを読み込む例です。
Sub ReadFile()
Dim fs As Object
Dim readFile As Object
Dim contents As String
'
FileSystemObjectの作成
Set fs = CreateObject("Scripting.FileSystemObject")
'
ファイルを読み込む
Set readFile = fs.OpenTextFile("C:\example.txt", 1) ' 1: 読み込みモード
contents = readFile.ReadAll
'
ファイルを閉じる
readFile.Close
'
コンテンツを表示
MsgBox "File Contents: " & contents
End Sub
4. フォルダの作成
新しいフォルダを作成する例です。
Sub CreateFolder()
Dim fs As Object
Dim folder As Object
'
FileSystemObjectの作成
Set fs = CreateObject("Scripting.FileSystemObject")
'
新しいフォルダを作成
Set folder = fs.CreateFolder("C:\ExampleFolder")
End Sub
5. フォルダ内のファイル一覧の取得
特定のフォルダ内のファイル一覧を取得する例です。
Sub ListFilesInFolder()
Dim fs As Object
Dim targetFolder As Object
Dim fileItem As Object
'
FileSystemObjectの作成
Set fs = CreateObject("Scripting.FileSystemObject")
'
対象のフォルダを取得
Set targetFolder = fs.GetFolder("C:\ExampleFolder")
'
フォルダ内のファイル一覧を表示
For Each fileItem In targetFolder.Files
MsgBox "File: " & fileItem.Name
Next
End Sub
6. ファイルやフォルダのプロパティの取得
ファイルやフォルダのサイズや日付などのプロパティを取得する例です。
Sub GetFileProperties()
Dim fs As Object
Dim fileInfo As Object
'
FileSystemObjectの作成
Set fs = CreateObject("Scripting.FileSystemObject")
'
ファイルのプロパティを取得
Set fileInfo = fs.GetFile("C:\example.txt")
'
プロパティを表示
MsgBox "File Size: " & fileInfo.Size & "
bytes" & vbCrLf & _
"Created: " & fileInfo.DateCreated & vbCrLf & _
"Last Modified: " & fileInfo.DateLastModified
End Sub
これらのVBAコードを使って、エクセル内でファイルやフォルダを効果的に操作できます。コードの詳細は必要に応じて調整し、エラーハンドリングを追加することが重要です。
〇注意点
Scripting.FileSystemObject を使用する際には、以下の注意点を考慮すると良いでしょう:
存在確認:
ファイルやフォルダを操作する前に、存在を確認することが重要です。存在しないファイルやフォルダに対して操作を試みるとエラーが発生する可能性があります。
If
fs.FileExists("C:\example.txt") Then
'
ファイルが存在する場合の処理
Else
'
ファイルが存在しない場合の処理
End If
エラーハンドリング:
ファイルやフォルダの操作は、外部の状況によっては失敗する可能性があります。エラーハンドリングを実装して、エラーが発生した場合に適切に処理するようにしましょう。
On Error Resume Next
' ファイルやフォルダの操作
If Err.Number <> 0 Then
'
エラーが発生した場合の処理
MsgBox "エラーが発生しました: " &
Err.Description
End If
On Error GoTo 0
慎重な操作:
ファイルやフォルダの操作はシステムに対する変更を伴います。慎重に扱い、誤って重要なファイルを削除したり変更したりしないようにしましょう。
ファイルのロック:
ファイルが他のプロセスによってロックされている場合、それによってエラーが発生する可能性があります。ファイルを開く前にロックの状態を確認し、必要に応じて待機するかエラー処理を行いましょう。
If Not
IsFileLocked("C:\example.txt") Then
'
ファイルがロックされていない場合の処理
Else
'
ファイルがロックされている場合の処理
End If
これに関連して、他のプロセスでファイルを使用中の場合にエラーが発生することがありますので、それに備えて適切な対策を取ることが重要です。
これらの注意点を考慮して、Scripting.FileSystemObject を使用すると、ファイルやフォルダを効果的に操作できます。
〇フォルダー内のファイルの一覧を作るコード(使用例)
Sub ListFilesInFolderToExcel()
Dim fs As Object
Dim folder As Object
Dim fileItem As Object
Dim targetWorkbook As Workbook
Dim targetWorksheet As Worksheet
Dim rowNum As Long
'
FileSystemObjectの作成
Set fs = CreateObject("Scripting.FileSystemObject")
'
対象のフォルダを取得(ここを必要なフォルダのパスに変更)
Set folder = fs.GetFolder("C:\YourTargetFolder")
'
新しいワークブックを作成
Set targetWorkbook = Workbooks.Add
'
デフォルトのシートを使用する場合
Set targetWorksheet = targetWorkbook.Sheets(1)
'
あるいは、新しいシートを追加する場合
'
Set targetWorksheet = targetWorkbook.Sheets.Add
'
列ヘッダーを追加
targetWorksheet.Cells(1, 1).Value = "ファイル名"
'
行番号初期化
rowNum = 2
'
フォルダ内のファイル一覧をExcelに書き込む
For Each fileItem In folder.Files
targetWorksheet.Cells(rowNum, 1).Value = fileItem.Name
rowNum = rowNum + 1
Next
'
必要に応じて、ワークブックを保存する
'
targetWorkbook.SaveAs "C:\Path\To\Save\Result.xlsx"
End Sub
〇まとめ
こんな感じで、VBAからファイルの操作などが簡単に行えます。
一度使ってみてはどうでしょうか?
0 件のコメント:
コメントを投稿