Excel VBA ファイル取得について
フォルダの中に、ファイル名“会議“を含むファイルが1つまたは複数あります。
《実行内容》
Dim fullPath As String, myFile As String
※fullPath 省略
myFile = Dir(fullPath & "¥" & "*会議*")
“会議“ファイルが複数ある場合、
ファイルを昇順に並べた時に一番上に来る
ファイル1つを取得したいです。
どのようにしたら良いか教えて頂けると幸いです。
宜しくお願い致します。
No.7ベストアンサー
- 回答日時:
#5です 連投すみません
E:\Desktop\Excel_VBAはデバッグで使ったアドレスです
書き換えてください
!! インデックスを打ち間違いしています
判り難くなってしまいました。すみません訂正してください
For n = LBound(ary, 2) + 1 To UBound(ary, 2)
tmp1 = ary(0, n): tmp2 = ary(1, n)
If ary(1, n - 1) > tmp2 Then
k = n
場所分かりますか・・
No.9
- 回答日時:
他に回答がついているようですが私には見えません。
どの道私の場合『 NET Framework 3.5 』がインストされているのが条件ですので最近のWIN10ですとどうなのかな?
私の場合VS2008をインストした関係で入れましたから(随分前に)。
他の回答で問題ないならそちらをご利用ください。
上記は『並び替えるのが億劫』ってだけの手抜き手法の関係ですので。
No.8
- 回答日時:
要は、*会議*_nnn.xlsm のファイルのnnnが最小のファイル名を取得したいと理解しました。
(nnnは1桁以上の数字)以下のようにしてください。
該当ファイルがメッセージボックスに表示されます。
(但し、数字は9桁までとします)
Option Explicit
Const CNumMax As Long = 1000000000
Public Sub sample()
Dim fullPath As String, tmpFile As String
Dim minFile As String
Dim minNo As Long
Dim tmpNo As Long
fullPath = "D:\goo\data8"
tmpFile = Dir(fullPath & "\" & "*会議*.xlsm")
If tmpFile = "" Then
MsgBox ("該当ファイルなし")
Exit Sub
End If
minFile = ""
minNo = CNumMax + 1
Do While (tmpFile <> "")
tmpNo = GetNumber(tmpFile)
Debug.Print tmpFile, tmpNo
If tmpNo < minNo Then
minFile = tmpFile
minNo = tmpNo
End If
tmpFile = Dir()
Loop
MsgBox (minFile)
End Sub
Public Function GetNumber(ByVal fname As String) As Long
Dim p1 As Variant
Dim p2 As Variant
Dim ll As Long
Dim num As String
GetNumber = CNumMax
p1 = InStrRev(fname, "_")
If p1 < 1 Then Exit Function
p2 = InStrRev(fname, ".")
If p2 < 1 Then Exit Function
ll = p2 - p1 - 1
If ll < 1 Then Exit Function
num = Mid(fname, p1 + 1, ll)
If IsNumeric(num) = False Then Exit Function
If Len(num) > 9 Then Exit Function
GetNumber = CLng(num)
End Function
No.6
- 回答日時:
#5
少し訂正 If IsNumeric(str2) Then なので
ary(1, n) = CInt(str2) とすれば
Function側のCInt( )は要りませんね
この方が、処理数、Functionの使い方が広がりますので訂正します
No.5
- 回答日時:
こんにちは
_の数は? .xlsm拡張子で_が数字の前に必ずあるのなら・・
ファイル名を取得したい場合、2次元配列でソートするのはどうでしょう
(数字部分を抜き出してソート)
Sub test01()
Dim ary() As Variant
Dim n As Long
Dim sPath As String, sFile As String
sPath = "E:\Desktop\Excel_VBA\"
sFile = Dir(sPath & "*_*.xlsm")
Dim str1 As String, str2 As String
Do Until sFile = ""
If InStr(sFile, "_") > 0 Then
str1 = Mid(sFile, InStr(sFile, "_") + 1)
str2 = Left(str1, InStr(str1, ".xlsm") - 1)
If IsNumeric(str2) Then
ReDim Preserve ary(1, n)
ary(0, n) = sFile
ary(1, n) = str2
n = n + 1
End If
End If
sFile = Dir
Loop
Debug.Print mySort(ary)
End Sub
Public Function mySort(ary As Variant) As String
Dim n As Long, k As Long
Dim tmp1 As Variant, tmp2 As Integer
'配列次元キー2 IntegerでSort
For n = LBound(ary, 2) To UBound(ary, 2)
tmp1 = ary(0, n): tmp2 = CInt(ary(1, n))
If CInt(ary(1, n)) > tmp2 Then
k = n
Do While k > LBound(ary)
If CInt(ary(1, k - 1)) <= tmp2 Then
Exit Do
End If
ary(0, k) = ary(0, k - 1): ary(1, k) = CInt(ary(1, k - 1))
k = k - 1
Loop
ary(0, k) = tmp1: ary(1, k) = tmp2
End If
Next
'結果出力
mySort = ary(0, 0)
End Function
エラー処理を加える必要があるかも・・条件も要考察
どの様に使うか分からないのでファンクション(2次元配列)にしました
No.1
- 回答日時:
おはようございます。
1つの方法になりますが、シートに書き出して、シート上で並べ替えるのは、どうでしょうか? 比較的簡単かと思います。
ファイル名は、Split関数で\を使って、ファイル名を取得する方法。
https://happy-tenshoku.com/post-1777/
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Latexで図番号だけを「図1.1」...
-
コマンドプロンプトで作成日時...
-
アクセス 壊れた? 「ファイ...
-
#include <Windows.h>というヘ...
-
binファイルを解凍したいの...
-
VBAでのicsファイル変換
-
.NETアプリを作ったときの .man...
-
コマンドプロンプトで、指定し...
-
jarファイルはzipファイルと同...
-
公文書のxmlファイルの開き方が...
-
Seasar2のdiconファイルの読み方
-
Excel VBA リンク更新について ...
-
VB.NET ファイルの種別取得方法
-
【VBA】EXCELブックを開かずに...
-
bibtexで参考文献作成できない
-
CSSファイルの日本語コメントが...
-
監視ツールを入れさせられまし...
-
ハイパーリンクされたJPGファイ...
-
ファイル名にドットを使ったフ...
-
Excel VBA ファイル取得につい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
公文書のxmlファイルの開き方が...
-
コマンドプロンプトで作成日時...
-
iPhoneでXMLファイルを開くには...
-
binファイルを解凍したいの...
-
アクセス 壊れた? 「ファイ...
-
.NETアプリを作ったときの .man...
-
#include <Windows.h>というヘ...
-
Latexで図番号だけを「図1.1」...
-
jarファイル
-
リンクの張り付けかたを教えて...
-
自分で作成した重要ファイルを...
-
C言語---ファイルに出力したデ...
-
exeファイルの中身を見る方法は...
-
Seasar2のdiconファイルの読み方
-
「ブルーファイル」と「グリー...
-
コマンドプロンプトで、指定し...
-
バッチ処理で追記コピーしたい
-
CSSを1ページに1枚作るのって変...
-
warファイルをEclipseでプロジ...
-
監視ツールを入れさせられまし...
おすすめ情報
補足です。○○○会議_4.xlsm、○○○会議_12.xlsmがあった場合、数字が小さい○○○会議_4.xlsm をファイル名として取得したいです。