あるフォルダ内にある複数のExcelファイルの中から、希望のExcelファイルを開くマクロをつくりたいと思っています。
フォルダ名は任意の数字、ファイル名は任意の数字(フォルダ名と同一)+版数データです。
例) C:\excelsheets\1234567890_1\1234567890_1_0_2_Sheet.xls
「_整数」の部分が版数データ。
動作としては、マクロを実行したら、任意の番号を入力してExcelファイルを開くという流れを考えています。
ちなみに、開くファイルは、
希望A 指定した番号の最新のファイルだけを開く。
希望B 指定した番号のファイルを、版数に関係なく全て開く。
を考えています。(AがダメならB)
マクロの自動保存で出来たマクロに手を加えて出来たのが下記です。
Sub test()
Dim Select1 As Double
Select1 = Application.InputBox("Noを入力してください", "No. Select")
ChDir "C:\excelsheets\" & Select1 & "_1"
Workbooks.Open Filename:= _
"C:\excelsheets\" & Select1 & "_1\" & Select1 & "_1_0_2_Sheet.xls"
End Sub
ただし、これだと版数の変化についていけないので、試しに、
"C:\excelsheets\" & Select1 & "_1\*.xls"
と、ワイルドカードが使えるか試したらエラーになりました。
初歩的な事かもしれませんが、マクロの勉強を始めたばかりで試行錯誤しながらやってます。ご助言、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
例えば。
Dドライブ直下にabc_0_1.txt~abc_0_5.txtと言う5つのテキストファイルがあるとします。
ファイル名abcは重複しますが、_0_1~_0_5が版数とします。
そのうちの最新版のフルネームを出すとしたら、
Sub try()
Dim st As String
Dim Fname As String
Dim i As Integer
st = Dir("D:\abc*.txt", vbNormal)
Fname = st
Do Until st = ""
If st > Fname Then Fname = st
st = Dir()
Loop
Fname = "D:\" & Fname
MsgBox Fname
End Sub
こんな感じではどうでしょう。(他にも方法はあると思いますけど)
No.2
- 回答日時:
な~るほど、#1さんの様に、単純にファイル名の比較でできてしまうんですね。
最終更新日で見つけるコードを書いてみましたので、折角作ったのでアップしておきます。(自分の環境で試験したままなので、ご質問の内容に沿っていません)Sub test3()
Dim fileList As New Collection, fileName As Variant, folderName As String
Dim fso As Object
Dim newest As Double, latestFile As Variant
Dim timeSerial As Double
Set fso = CreateObject("Scripting.FileSystemObject")
folderName = "C:\Documents and Settings\?????\My Documents\"
fileName = Dir(folderName & "20081116*.xls", vbNormal)
Do While fileName <> ""
fileList.Add Item:=fileName
fileName = Dir()
Loop
For Each fileName In fileList
timeSerial = DateValue(fso.GetFile(folderName & fileName).DateLastModified) + TimeValue(fso.GetFile(fileName).DateLastModified)
If newest < timeSerial Then
newest = timeSerial
latestFile = fileName
End If
Next
Workbooks.Open fileName:=folderName & latestFile
End Sub
参考URL:http://officetanaka.net/excel/vba/filesystemobje …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCEL VBA 指定したファイルが...
-
VBAでワークブックの名前を変数...
-
エクセルマクロで不特定なファ...
-
エクセル 複数ファイルの一括...
-
エクセルのxls形式からxlsx形式...
-
データ参照先が別ファイルの場...
-
フォルダ内のexcelファイルを順...
-
エクセルのシートの数を数えた...
-
エクセルデータが突然破損します。
-
エクセルマクロ 異なるファイ...
-
【Excel VBA】ファイル名が一...
-
LTSpiceにLMV358-Nのモデルを入...
-
ACCESS VBAでファイルを開くダ...
-
エクセル(マクロ)のファイル...
-
Excel VBA でファイルが開かれ...
-
セルに値が入ったらマクロを実...
-
<ACCESS VBA -> EXCEL>getObjec...
-
vlookup関数の引数を変数で指定...
-
word2007ファイル起動時のSQLに...
-
VBAでフォルダ内の全てのcsv...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCEL VBA 指定したファイルが...
-
エクセルマクロで不特定なファ...
-
VBAでワークブックの名前を変数...
-
エクセル 複数ファイルの一括...
-
フォルダ内のexcelファイルを順...
-
エクセルのxls形式からxlsx形式...
-
【Excel VBA】ファイル名が一...
-
エクセル(マクロ)のファイル...
-
vlookup関数の引数を変数で指定...
-
ファイルを開かずにマクロを実行
-
エクセルのシートの数を数えた...
-
Accessのaccdbファイルを起動で...
-
エクセルマクロ 異なるファイ...
-
vba初心者です。 質問です。 毎...
-
ファイルの保存場所を変えたら...
-
Excel VBA でファイルが開かれ...
-
accessフォルダを移動したらフ...
-
リンク切れチェックを行うマクロ
-
フォルダ内のブック全部にパス...
-
ACCESS VBAでファイルを開くダ...
おすすめ情報