技術ブログ

【VBA】ファイル操作クラス

ブックが開いているかどうか調べる

''' <summary>
''' ブックが開いているかどうか調べる
''' </summary>
''' <param name="workBookName">ブック名</param>
''' <returns>True / False</returns>
''' <see>http://officetanaka.net/excel/vba/tips/tips10.htm</see>
Public Function IsOpenBook(ByVal workBookName As String) As Boolean
    Dim Wb As Workbook
    For Each Wb In Workbooks
        If Wb.Name = workBookName Then
            IsOpenBook = True
            Exit Function
        End If
    Next Wb
End Function

シートが存在するかどうか調べる

''' <summary>
''' シートが存在するかどうか調べる
''' </summary>
''' <param name="workSheetName">シート名</param>
''' <returns>True / False</returns>
''' <see>http://officetanaka.net/excel/vba/tips/tips10.htm</see>
Public Function SheetExists(ByVal workSheetName As String) As Boolean
c
End Function

ファイルが存在するかどうか調べる

''' <summary>
''' ファイルが存在するかどうか調べる
''' </summary>
''' <param name="fileName">ファイル名</param>
''' <returns>True / False</returns>
''' <see>http://officetanaka.net/excel/vba/file/file06.htm</see>
''' <remarks>Dir関数を使う方法</remarks>
Public Function FileExists(ByVal FileName As String) As Boolean
    If Dir(FileName) <> "" Then
        FileExists = True
    End If
End Function
''' <summary>
''' ファイルが存在するかどうか調べる
''' </summary>
''' <param name="fileName">ファイル名</param>
''' <returns>True / False</returns>
''' <see>http://officetanaka.net/excel/vba/file/file06.htm</see>
''' <remarks>FileExistsメソッドを使う方法</remarks>
Public Function FileExistsFSO(ByVal FileName As String) As Boolean
    With CreateObject("Scripting.FileSystemObject")
        If .FileExists(FileName) Then
            FileExistsFSO = True
        End If
    End With
End Function

フォルダが存在するかどうか調べる

''' <summary>
''' フォルダが存在するかどうか調べる
''' </summary>
''' <param name="dirName">フォルダ名</param>
''' <returns>True / False</returns>
''' <see>https://www.relief.jp/docs/excel-vba-check-folder-exists.html</see>
''' <remarks>Dir関数を使う方法</remarks>
Public Function FolderExists(ByVal dirName As String) As Boolean
    If Dir(dirName, vbDirectory) <> "" Then
        FolderExists = True
    End If
End Function
''' <summary>
''' フォルダが存在するかどうか調べる
''' </summary>
''' <param name="dirName">フォルダ名</param>
''' <returns>True / False</returns>
''' <see>http://officetanaka.net/excel/vba/filesystemobject/filesystemobject11.htm</see>
''' <remarks>FolderExistsメソッドを使う方法</remarks>
Public Function FolderExistsFSO(ByVal dirName As String) As Boolean
    With CreateObject("Scripting.FileSystemObject")
        If .FolderExists(dirName) Then
            FolderExistsFSO = True
        End If
    End With
End Function

ファイルの一覧を取得する

''' <summary>
''' ファイルの一覧を取得する
''' </summary>
''' <param name="dirPath">フォルダ名</param>
''' <returns>ファイルの一覧</returns>
''' <see>http://officetanaka.net/excel/vba/file/file07.htm</see>
''' <remarks>Dir関数を使う方法</remarks>
Public Function GetFileList(ByVal DirPath As String) As String()
    Dim FileName As String
    Dim cnt As Long
    FileName = Dir(DirPath & "*.xlsx")
    Do While FileName <> ""
        GetFileList(cnt) = FileName
        FileName = Dir()
        cnt = cnt + 1
    Loop
End Function
''' <summary>
''' ファイルの一覧を取得する
''' </summary>
''' <param name="dirPath">フォルダ名</param>
''' <returns>ファイルの一覧</returns>
''' <see>http://officetanaka.net/excel/vba/file/file07.htm</see>
''' <remarks>FileSystemObjectを使う方法</remarks>
Public Function GetFileListFSO(ByVal DirPath As String) As String()
    Dim f As Object
    Dim cnt As Long
    With CreateObject("Scripting.FileSystemObject")
        For Each f In .GetFolder(DirPath).Files
            GetFileListFSO(cnt) = f.Name
            cnt = cnt + 1
        Next f
    End With
End Function

ブックを開く

''' <summary>
''' ブックを開く
''' </summary>
''' <param name="fileName">ファイル名</param>
''' <returns>ブック</returns>
''' <see>http://officetanaka.net/excel/vba/file/file01.htm</see>
''' <remarks>最も安全にブックを開く方法</remarks>
Public Function WorkbooksOpen(ByVal FileName As String) As Workbook
    'ファイル存在チェック
    If FileExists(FileName) = True Then
        Exit Function
    End If
    '同名ブックチェック
    If IsOpenBook(FileName) = True Then
        Exit Function
    End If
    'ここでブックを開く
    Set WorkbooksOpen = Workbooks.Open(FileName)
End Function

コメント