ChatGPT
ファイルシステムへのアクセス方法や拡張子・ファイル名の取得方法について解説します。ファイルの拡張子を取得するにはGetExtensionNameメソッドを使用し、指定されたパスの最後のファイル名またはフォルダ名を返します。特殊なフォルダを取得するにはGetSpecialFolderメソッドを使用します。一部の特殊フォルダはScripting.FileSystemObjectではなくWScript.Shellを使用する必要があります。
Bing AIの説明
VBAでファイル名や拡張子を取得する方法は、
FileSystemObjectというオブジェクトを使って、GetExtensionNameというメソッドで拡張子を取得することです。例えば、以下のようなコードになります。
Sub GetExtensionName()
'拡張子を取得したいファイルを選択
Dim filePath As String
filePath = Application.GetOpenFilename
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
'ファイルの拡張子を表示
Debug.Print fso.GetExtensionName(filePath)
End Subこのコードでは、ファイルを選択するダイアログボックスを表示して、選択したファイルのパスを変数filePathに代入しています。次に、FileSystemObjectのインスタンスを作成して、fsoという変数に代入しています。最後に、fsoのGetExtensionNameメソッドで、filePathに渡したファイルパスから拡張子を取得して、デバッグウィンドウに表示しています。
この方法は、ファイルパスが既に分かっている場合にも使えます。また、フォルダ内のすべてのファイルの拡張子を取得する場合は、Dir関数やFor Each文を使って繰り返し処理を行うことができます。
もう一つの方法は、InStrRev関数やMid関数を使って、ファイルパスからピリオド(.)以降の文字列を切り出すことです。例えば、以下のようなコードになります。
Sub GetExtensionName2()
'拡張子を取得したいファイルを選択
Dim filePath As String
filePath = Application.GetOpenFilename
'ピリオドの位置を探す
Dim dotPos As Long
dotPos = InStrRev(filePath, ".")
'ピリオド以降の文字列を取得
Dim ext As String
ext = Mid(filePath, dotPos + 1)
'ファイルの拡張子を表示
Debug.Print ext
End Subこのコードでは、InStrRev関数でファイルパスからピリオドの位置を逆順で探して、dotPosという変数に代入しています。次に、Mid関数でピリオドの次の文字から最後までの文字列を切り出して、extという変数に代入しています。最後に、デバッグウィンドウに表示しています。
この方法は、FileSystemObjectを使わずにシンプルに書けるという利点がありますが、ピリオドが複数含まれる場合や拡張子がない場合などに注意が必要です。
https://atmarkit.itmedia.co.jp/ait/articles/1704/19/news020.html#utm_medium=email&utm_source=ait-sinchaku&utm_campaign=20230510