アフィリエイト広告を利用しています

2023年05月12日

VBAでファイル名や拡張子を取得する方法、特殊フォルダを取得する方法

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






posted by 3chan at 20:57| (カテゴリなし)
プロフィール
<< 2024年12月 >>
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
リンク集
カテゴリアーカイブ
月別アーカイブ
2024年12月(25)
2024年11月(59)
2024年10月(64)
2024年09月(62)
2024年08月(71)
2024年07月(61)
2024年06月(67)
2024年05月(71)
2024年04月(72)
2024年03月(61)
2024年02月(63)
2024年01月(73)
2023年12月(33)
2023年11月(43)
2023年10月(30)
2023年09月(33)
2023年08月(48)
2023年07月(52)
2023年06月(67)
2023年05月(72)
2023年04月(80)
2023年03月(108)
2023年02月(63)
2023年01月(17)
2022年12月(14)
2022年11月(24)
2022年10月(43)
2022年09月(33)
2022年08月(44)
2022年07月(15)
2022年06月(6)
2021年12月(1)
2021年11月(49)
2021年10月(60)
2021年09月(54)
2021年08月(54)
2021年07月(56)
2021年06月(50)
2021年05月(62)
2021年04月(44)
2021年03月(53)
2021年02月(48)
2021年01月(60)
2020年12月(51)
2020年11月(61)
2020年10月(54)
2020年09月(54)
2020年08月(60)
2020年07月(49)
2020年06月(48)
2020年05月(61)
2020年04月(48)
2020年03月(58)
2020年02月(31)
2020年01月(55)
2019年12月(54)
2019年11月(53)
2019年10月(54)
2019年09月(60)
2019年08月(54)
2019年07月(49)
2019年06月(63)
2019年05月(52)
2019年04月(55)
2019年03月(61)
2019年02月(49)
2019年01月(54)
2018年12月(50)
2018年11月(52)
2018年10月(55)
2018年09月(65)
2018年08月(48)
2018年07月(55)
2018年06月(56)
2018年05月(50)
2018年04月(57)
2018年03月(58)
2018年02月(51)
2018年01月(64)
2017年12月(53)
2017年11月(56)
2017年10月(61)
2017年09月(59)
2017年08月(65)
2017年07月(84)
2017年06月(57)
2017年05月(69)
2017年04月(76)
2017年03月(69)
2017年02月(72)
2017年01月(212)
2016年12月(236)
2016年11月(166)
2016年10月(239)
2016年09月(365)
2016年08月(222)
2016年07月(82)
2016年06月(56)
2016年05月(71)
2016年04月(69)
最新記事