pgbigorokuのブログ

プログラムの再利用できそうなコードをアップ

EXCEL VBA 利用していないファイル名を取得

一時ファイルを作るときに、利用されていないファイル名を探すことはありませんか?
このプログラムは、指定フォルダ内で利用されていないファイル名を探します。

イメージ図

    Debug.Print nstr利用していないファイル名を取得("c:\", "bat")    'c:\2022_08_17_18_07_27_1.bat
    Debug.Print nstr利用していないファイル名を取得("C:\ARU", "bat") 'C:\ARU\2022_08_17_18_16_04_1.bat
    Debug.Print nstr利用していないファイル名を取得("C:\ARU\", "bat") 'C:\ARU\2022_08_17_18_16_04_1.bat
    Debug.Print nstr利用していないファイル名を取得("c:", "bat") 'c:\2022_08_17_18_17_14_1.bat
    Debug.Print nstr利用していないファイル名を取得("c", "bat") 'LEN(0)の文字列
    Debug.Print nstr利用していないファイル名を取得("c:\nai", "bat") 'LEN(0)の文字列

下記のソースコードも追加してください。
EXCEL VBA ファイルの存在確認 - pgbigorokuのブログ

EXCEL VBA フォルダの存在確認 - pgbigorokuのブログ


EXCEL VBA フォルダ名とファイル名からフルパスにする - pgbigorokuのブログ

'
'   機能   :  利用していないファイル名を取得
'
'    返り値  :     存在していないファイル名(フルパス)
'
'    引き数  :    ByVal pstrこのフォルダ名配下に作る As String 使用していないファイルを作るフォルダ
'                   ByRef pstr拡張子 As String          新しく作るファイルの拡張子(.があっても無くてもOK)
'    機能説明 :     ワイルドカードは使えません
'
'
'    備考   :     引き数「pstrこのフォルダ名配下に作る」が有効なフォルダではない場合、戻り値はLEN(0)の文字列とする。
'
'    この関数のURL  :https://pgbigoroku.hatenablog.com/entry/2022/08/17/094450
'
'    この関数を利用するために必要な関数:https://pgbigoroku.hatenablog.com/entry/2022/08/17/005434
'                                       https://pgbigoroku.hatenablog.com/entry/2022/08/17/005046
'                                       https://pgbigoroku.hatenablog.com/entry/2022/08/17/093728
'    バージョン  :2022/8/16
'
Public Function nstr利用していないファイル名を取得(ByVal pstrこのフォルダ名配下に作る As String, ByRef pstr拡張子 As String) As String
    Dim intFor As Integer
    Dim strDate As String
    Dim strtempFilename As String
    Dim str拡張子 As String
    If Left(pstr拡張子, 1) = "." Then
        pstr拡張子 = pstr拡張子
    Else
        pstr拡張子 = "." & pstr拡張子
    End If
    If nblnフォルダの存在確認(pstrこのフォルダ名配下に作る) = True Then
        strDate = Format(Now, "yyyy_mm_dd_hh_mm_ss_")
        For intFor = 1 To 9999
            strtempFilename = nstrフルパスにする(pstrこのフォルダ名配下に作る, strDate & CStr(intFor) & pstr拡張子)
            If nblnファイル存在確認(strtempFilename) = True Then
            Else
                nstr利用していないファイル名を取得 = strtempFilename
                Exit Function
            End If
        Next
        nstr利用していないファイル名を取得 = ""
    Else
        nstr利用していないファイル名を取得 = ""
    End If
End Function