FileSystemObjectのGetTempNameメソッド
FileSystemObjectのGetTempNameメソッドは、一時的なファイル名を返します。パス部分はなくファイル名のみです。
実行する度に異なる一時ファイル名が返されます。拡張子はtmpになります。
FileSystemObjectの他のメソッドやプロパティは「FileSystemObjectとTextStreamのメソッド・プロパティ一覧」をご参照ください。
構文
Function GetTempName() As String
戻り値 | ランダム性のある一時ファイル名を返します。実行するたびに異なるファイル名が返されます。 |
エラー対応
GetTempNameメソッドでは、戻り値を返す変数が文字列を受け取れない型の場合に、実行時エラー91「オブジェクト変数または With ブロック変数が設定されていません。」が発生します。
戻り値の型を間違えることはほとんどないとは思いますが、このようなエラーが発生すると通常はメッセージボックスが表示され、処理はそこで止まってしまいます。
処理を止めないようにするためにはエラー処理を適切に行う必要があります。
具体的には「On Error Goto XXX」でエラー発生時にエラーラベルまで処理を飛ばしたり、「On Error Resume Next」でエラーが発生しても処理を継続するようにしておいたほうがよいでしょう。
事前設定
以下のサンプルコードでは参照設定でFileSystemObjectクラスを利用できるようにしています。
FileSystemObjectクラスを利用するには、事前にVBA画面→ツールメニュー→参照設定、を選択し、参照設定ダイアログで「Microsoft Scripting Runtime」にチェックを付けます。
詳細は「VBAでのFileSystemObjectとTextStreamの使い方」の事前設定をご参照ください。
サンプルコード
GetTempNameメソッドを使って一時ファイル名を取得するサンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Sub FileSystemObjectGetTempName() '// エラー発生時も処理を継続 On Error Resume Next Dim fso As New FileSystemObject '// FileSystemObjectクラス Dim sTempName As String '// 一時ファイル名 '// 一時ファイル名を取得 sTempName = fso.GetTempName '// エラー発生時 If Err.Number <> 0 Then '// エラー内容を出力 Debug.Print Err.Number & " " & Err.Description Exit Sub End If Debug.Print sTempName End Sub |
実行する度に以下のように毎回違うファイル名が返されます。
1 2 3 4 |
radBEF1A.tmp rad60AFB.tmp rad37FB4.tmp rad8B339.tmp |
GetTempNameメソッドの戻り値の型を間違っている場合にエラーが発生するため、エラー処理「On Error Resume Next」でエラーが発生しても処理を継続するようにしています。
エラーが発生した場合はその内容をイミディエイトウィンドウに出力します。
FileSystemObjectクラスのオブジェクト変数に対して、「Set fso = Nothing」のようなコードがありませんが、なくても問題ありません。詳細については「VBAでのFileSystemObjectとTextStreamの使い方」をご参照ください。