
たとえば C:\My Documents\データ というフォルダーには20~30のエクセルファイルが入っています
ファイルの名前は「えくせる なんばー101」などという名前になっています
「えくせる なんばー」までは共通で「101」の部分はそれぞれランダムな数字が入っています
ランダムなファイル名なのでファイルを捜して開くのが大変です
インプットボックスなどで 「101」の部分を入力すれば該当ファイルが開くような マクロを作りたいのですが
(続きナンバーにして フォルダの整列をすれば捜しやすいのですが ネットワーク上の共有フォルダなので勝手にファイル名を変えることが出来ないのです)
VBA初心者なのでよろしくお願いします
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんばんは。
私の考えが間違っていなければ、全面的にやり直さないとダメだと思います。そこで、考え方を換えて作ってみました。
えくせるふぁいる「 」-123.xls
の「 」の中に数字を入れるので、数字だけ聞いてきます。
なければ、先頭文字と、後尾文字
フォルダーの中に、数千もあるようですと、ちょっと厳しいかもしれません。ただ、今の方法が、一番速いというか、だいたい、特殊なファイルサーチプログラムも、このような考えたをしています。
'--------------------
Sub FileOpenSample2()
Dim OrgPath As String, Fname As Variant, Fnames() As Variant
Dim j As Long, i As Variant, myNo As Variant, flg As Boolean
Dim BackF1Name As String
'======================================================
'ユーザー設定
Const FrontFName As String = "えくせるふぁいる" '"先頭文字
Const BackFName As String = "-123.xls" '後尾文字
Const myPath As String = "C:\My Documents\" '調べるフォルダ
'======================================================
If InStrRev(BackFName, ".XLS", , 1) = 0 Then
BackF1Name = BackFName & ".XLS"
Else
BackF1Name = BackFName
End If
OrgPath = ThisWorkbook.Path
ChDir myPath
Fname = Dir(FrontFName & "*.xls")
If Fname = "" Then
MsgBox FrontFName & _
"該当するファイルが見つかりませんので、設定を修正してください。", 64
Exit Sub
End If
Do
ReDim Preserve Fnames(j)
Fnames(j) = StrConv(Fname, vbUpperCase)
j = j + 1
Fname = Dir
Loop Until Fname = ""
myNo = Application.InputBox(FrontFName & " ???? " & BackF1Name & vbCr & _
"番号を入れてください。", Default:=1234, Type:=2)
If VarType(myNo) = vbBoolean Or myNo = "" Then
GoTo LineEnd
End If
'入力されたファイルがあるか調べる
For Each i In Fnames
Fname = StrConv(FrontFName & myNo & BackF1Name, vbUpperCase)
If i Like Fname Then
flg = True
Exit For
End If
Next i
If flg Then
Workbooks.Open Fname
Else
'番号で見つからない場合、ファイル・オープンダイアログで、調べる
Application.Dialogs(xlDialogOpen).Show (FrontFName & "*" & BackF1Name)
End If
LineEnd:
ChDir OrgPath
End Sub
ありがとうございます
ちょっと見ただけでは難しそうですね・・・
週末で試すことができないので(家のパソにはOfficeが入っていないのです)
週明けに試してみます
No.2
- 回答日時:
こんにちは。
こんに風に考えてみました。
Option Explicit
Sub FileOpenSample()
Dim OrgPath As String, Fname As Variant
'======================================================
'ユーザー設定
Const BaseFileName As String = "えくせる なんばー"
Const myPath As String = "C:\My Documents\" '調べるフォルダ
'======================================================
OrgPath = ThisWorkbook.Path
ChDir myPath
Fname = Application.InputBox(BaseFileName & " の次番号を入れてください。", Default:=101, Type:=2)
If VarType(Fname) = vbBoolean Or Fname = "" Then
GoTo LineEnd
End If
'入力されたファイルがあるか調べる
If Dir(BaseFileName & Fname & ".xls") <> "" Then
Workbooks.Open BaseFileName & Fname & ".xls"
Else
'ない場合は、オープンダイアログで、調べる
Application.Dialogs(xlDialogOpen).Show (BaseFileName & "*.xls")
End If
LineEnd:
ChDir OrgPath
End Sub
この回答への補足
早速のご回答ありがとうございます
わがままついでにもうひとつ補足させてください
「えくせる ふぁいる」の後の数字は3桁ではなく「1010-1」だったり「1234-56」だったりするのです 本当はもっと複雑なのですが ハイフォンの前の数字は整数4桁と決まっています
ですが 全部正確に入力するのは大変なので 4桁の数字だけを入力すれば該当するファイルを選び出すということはできないでしょうか
ファイル名が「えくせる ふぁいる1234-56」の場合は 「1234」を入力すれば良い という風に
うまく説明できなくてすみませんが お分かりいただけましたでしょうか よろしくお願いします
No.1
- 回答日時:
こんな所でしょうか?ショートカットを設定するか、図形にマクロの登録で設定してください。
Sub NOFILEOPEN_Click()
On Error GoTo NOFILE_Err
Dim FPASS, FNAME, FNO As String
FPASS = "C:\My Documents\データ\"
FNAME = "えくせる なんばー"
FNO = Format(InputBox("ファイルナンバーを入力"), "000")
Workbooks.Open FPASS & FNAME & FNO
Exit Sub
NOFILE_Err:
X = MsgBox("ファイルが存在しません。", vbOKOnly)
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaサブフォルダーをワイルドカードで取得したい 2 2022/11/15 08:04
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Visual Basic(VBA) 複数ブックの統合について Excel VBA 1 2022/05/13 09:48
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/10/26 17:14
- Access(アクセス) Access VBA を利用して、フォルダ内のファイルの名称を変更したい 1 2023/08/03 08:27
- Excel(エクセル) エクセルのファイルにリンクを貼る方法 4 2023/06/30 11:09
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel: ファイル名になぜ、[...
-
エクセルのファイル:「自分」が...
-
CSVファイルの特定行の削除
-
彼女の過去の恋愛に嫉妬してし...
-
ファイルが移動してもリンクの...
-
xlsファイルが開かない。
-
vbsからのExcelマクロ呼び出し...
-
複数のExcelファイルにある同名...
-
EXCELVBAにて文字列にして「01...
-
CSVファイルの暗号化
-
iCloud for Windowsをアンイン...
-
[Unity]シーンファイルの中が消...
-
このファイルは外部のエディタ...
-
VBAにおいて、ファイルの移...
-
WINDOWS CMDからゴミ箱のファ...
-
テキストファイル操作 実行時...
-
5000個のtiffファイルをpdfへ変...
-
htmlファイルを結合して一つの...
-
ノーツの添付ファイルの場所を...
-
batでファイル名を変更したい(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの特定行の削除
-
彼女の過去の恋愛に嫉妬してし...
-
エクセルのファイル:「自分」が...
-
Excel: ファイル名になぜ、[...
-
ファイルが移動してもリンクの...
-
複数のExcelファイルにある同名...
-
iCloud for Windowsをアンイン...
-
EXCELVBAにて文字列にして「01...
-
[Unity]シーンファイルの中が消...
-
vbsからのExcelマクロ呼び出し...
-
5000個のtiffファイルをpdfへ変...
-
batでファイル名を変更したい(...
-
WINDOWS CMDからゴミ箱のファ...
-
VBA ファイル一覧を取得して全...
-
docxをmht形式で保存したファイ...
-
CSVファイルの暗号化
-
バインダーの作り方
-
FTPのgetとputの使いわけ。
-
フォルダ内の複数のファイルの...
-
自動で.xlsを閉じて指定フォル...
おすすめ情報