
いつもお世話になります
今、下記のプログラムでファイル一覧を取り出すテストをしていたのですが
拡張子や拡張子を除くファイル名の取り出しをスマートに記述できないかと思い投稿しました
Sub Test5()
Dim MyFile As Object
Dim cnt As Integer
Dim FilePath As String
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
FilePath = "XXXXXXXXX"
cnt = 1
For Each MyFile In FSO.GetFolder(FilePath).Files
' セルにファイル情報を書き出し
Cells(cnt, 1).Value = MyFile.Name ' ファイル名
Cells(cnt, 2).Value = MyFile.DateCreated ' 作成日時
Cells(cnt, 3).Value = MyFile.Size ' ファイルサイズ
Cells(cnt, 4).Value = FSO.GetBaseName(MyFile.Name) ' BaseName
Cells(cnt, 5).Value = FSO.GetExtensionName(MyFile.Name) ' 拡張子
cnt = cnt + 1
Next MyFile
Columns("A:E").AutoFit
Set FSO = Nothing
End Sub
例えば、ファイル名はMyFile.Nameで取得できますがMyFile.BaseNameは出来ませんでした
そこでFSO.GetBaseName(MyFile.Name)にしています、拡張子も同様で何かありそうで
Webで調べてみましたが分かりませんでした
MyFile.??? で拡張子やBaseNameが取れたらスマートなのにと思い相談します
もし分かりましたら教えてください
以上、宜しくお願い申し上げます
No.2ベストアンサー
- 回答日時:
Fileオブジェクト/Fliesコレクションにベースネームや拡張子に関するプロパティはもっていません。
また、FSOにおけるGetBaseNameメソッドようなベースネームを取得するメソッドも持っていませんのでできません。
ただし、あたかもベースネームや拡張子もプロパティとして持っているかのようなふるまいをするようにはできます。
例えば、
標準モジュールで
Myfile.BaseName とすれば、ベース名が返ってくる という感じですね。
VBAの場合だと、クラスモジュールで好みの仕様のクラスを作って、標準モジュールでインスタンスを定義すればそのようにすることはできます。
FSO関連のこともそのクラスに含めることになりますので、標準モジュール側は結構シンプルにはなります(というかそういう風に設計する)
以上が簡単な解決策ですが、正直現在でも結構スマートな方だと思いますので、クラスまで手を出さなくてもいいのではとは思います。
あと、FSOやFileオブジェクトのもつメソッドやプロパティにはどんなものがあるのかは下記を参照されるとよいと思います。
Fileオブジェクト
https://learn.microsoft.com/ja-jp/office/vba/lan …
FSOオブジェクト
https://learn.microsoft.com/ja-jp/office/vba/lan …
いつもお世話になります
早速のご回答に感謝します
参考になりました
これからの開発につなげて行きたいと思います
ありがとうございました
これからもよろしくお願い申し上げます
No.1
- 回答日時:
FSO File オブジェクトにはそれらしきプロパティ定義が無い様です
https://learn.microsoft.com/ja-jp/office/vba/lan …
スマートに記述したいのならば、関数定義すれば多少はましかもしれません
FSO.GetBaseName(MyFile.Name)
↓
MyGetBaseName(MyFile)
いつもお世話様です
早速のご回答ありがとうございます
URLありがとうご字ます
参考になります
関数定義も参考になりました
これからもよろしくお願い申し上げます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】シート名を取得する為には 2 2024/05/02 07:40
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) VBA listBoxについて 2 2024/03/26 16:14
- Excel(エクセル) 【マクロ】2回実行したら、エラーにならずに、既に実行済みメッセージを出したい 2 2024/07/01 23:17
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
このQ&Aを見た人はこんなQ&Aも見ています
-
算術演算子「¥」の意味について
Visual Basic(VBA)
-
改行文字「vbCrLf」とは
Visual Basic(VBA)
-
【マクロ】値を渡されたプロシージャから実行すると、渡したプロシージャを選択される?
Visual Basic(VBA)
-
-
4
エクセルの改行について
Visual Basic(VBA)
-
5
【ExcelVBA】5万行以上のデータ比較の効率的な処理方法について
Visual Basic(VBA)
-
6
質問58753 このコードでうまく動作しません。どうしたら良いですか Private Sub Wor
Visual Basic(VBA)
-
7
VBAの質問(Msgboxについて)です
Visual Basic(VBA)
-
8
(EXCEL超初心者)EXCELの関数(またはマクロ)で質問です。
Visual Basic(VBA)
-
9
【マクロ】モジュール変数の記述時、Callにて、呼び出されたプロシージャから実行するとエラーとなる?
Visual Basic(VBA)
-
10
【マクロ】変数を使った、文字の種類の変更にて、エラーとなる。
Visual Basic(VBA)
-
11
以下のプログラムの実行結果はどうなると思いますか? その理由も教えてください。
Visual Basic(VBA)
-
12
プログラミングに興味があるのですが、作りたいものはありません。 ゲーム機とかパソコンの中身(ソースコ
その他(プログラミング・Web制作)
-
13
VBAの「To」という語句について
Visual Basic(VBA)
-
14
VBAでユーザーフォームを指定回数繰り返して入力を行う方法
Visual Basic(VBA)
-
15
エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
16
COPYコマンドで、最後に1文字「Hex1A」が付くのはなぜ?外し方は?
その他(プログラミング・Web制作)
-
17
【マクロ】開いているブックの名前を取得した後、名前をセルに1つづつ入力するには?
Visual Basic(VBA)
-
18
[Excel VBA]特定の条件で文字を削除&残す処理をするファイルを作成したいです
Visual Basic(VBA)
-
19
エクセル タブの下のメニューを選択 実行するコード
Visual Basic(VBA)
-
20
プログラミングについて プログラミングの練習(勉強)ができるようなサイトなどありませんか? あれば教
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】開いているブックの...
-
vbsでのwebフォームへの入力制限?
-
【ExcelVBA】5万行以上のデー...
-
【VBA】 結合セルに複数画像と...
-
【マクロ】並び替えの範囲が、...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
改行文字「vbCrLf」とは
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
Excelマクロで使うVBAコードを...
-
VBAの質問(Msgboxについて)です
-
VBAでセルの書式を変えずに文字...
-
エクセルのVBAコードと数式につ...
-
ExcelVBAでパワポを操作したい
-
Excelのマクロについて教えてく...
-
Vba FileSystemObject オブジェ...
-
エクセルのマクロについて教え...
-
質問58753 このコードでうまく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
【マクロ】並び替えの範囲が、...
-
エクセルの改行について
-
エクセルのマクロについて教え...
-
vb.net(vs2022)のtextboxのデザ...
-
VBAでCOPYを繰り返すと、処理が...
-
VBA ユーザーフォーム ボタンク...
-
エクセルのVBAコードと数式につ...
-
エクセルのVBAコードについて教...
-
[VB.net] ボタン(Flat)のEnable...
-
【マクロ】変数を使った、文字...
-
改行文字「vbCrLf」とは
-
質問58753 このコードでうまく...
-
【マクロ】シートの変数へ入れ...
-
ワードの図形にマクロを登録で...
-
算術演算子「¥」の意味について
おすすめ情報