
こんにちは。例を挙げます。よろしくお願いします。
まず、"ABC" という名前のフォルダがあるとします。
この"ABC"の中に、"00_あいうえお"というフォルダがあるとします。
ほかにも同じようなフォルダ:"10_かきくけこさ123"、"01_しす45せそたち"、"67_つてと"があります。これらのフォルダ名には特徴があり、2桁の半角数字に始まり、半角アンダーバー、文字列という並びになっています。
さらに同じフォルダ"ABC"に、EXCELファイル"なにぬ89.xls"もあるとしましょう。
したがって今、フォルダ"ABC"には、4つのフォルダと1つのEXCELファイルがあります。
"なにぬ89.xls"の、セルA1には"1"、A6には"2"、A11,A16は"34","57"と数値が入っているとします。また、セルB3には"あいう"、B8には"かき"、B13には"しす4"、B18には"つてと"という文字列が入っています。
B3,B8,B13,B18の文字列は、必ず同じフォルダ"ABC"内のフォルダ名に含まれています。
マクロで行いたい内容:フォルダ名の左端の2桁の数字を置換する
その詳細:
"なにぬ89.xls"のセルB3の文字列"あいう"を含むフォルダ"00_あいうえお"のフォルダ名の2桁の数字"00"のうち、右の"0"だけ、セルA1の数値"1"に置換したいのです。("00_あいうえお"→"01_あいうえお"へフォルダ名置換)
同じように、セルB8の"かき"を含むフォルダ"10_かきくけこさ123"の名前も、セルA5の数値"2"をもとに置換したいのですが、今度は2桁の数字が"02"になってほしいのです。("10_かきくけこさ123"→"02_かきくけこさ123"へフォルダ名置換)
以上のことをふまえますと、
フォルダ名"01_しす45せそたち" は "34_しす45せそたち"
"67_つてと" は "57_つてと" に変換したいということがお分かりいただけますでしょうか。
4つの例しかあげませんでしたが、実際の"なにぬ89.xls"にはもっとたくさんのデータが、5行おきに並んでいます。他のセルには無関係の文字列や空白などが入っています。
セルの値でフォルダ名を部分一致検索し、セルの値でそのフォルダ名を置換する、ということができるでしょうか?
説明が長くなりましたが、ご回答、お待ちしております。よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
Sub FolderChange()
Dim i As Integer
Dim fn As String
Dim fs, fo
Set fs = CreateObject("Scripting.FileSystemObject")
For Each fo In fs.GetFolder(ThisWorkbook.Path).SubFolders
For i = 1 To Range("A" & Rows.Count).End(xlUp).Row Step 5
If InStr(fo.Name, Cells(i + 2, 2).Value) > 0 Then
fn = Format(Cells(i, 1).Value, "00") & Mid(fo.Name, 3)
Name ThisWorkbook.Path & "\" & fo.Name As ThisWorkbook.Path & "\" & fn
Exit For
End If
Next
Next
End Sub
No.1
- 回答日時:
あるファイルのセルの内容を変更すると、そのファイル名だけでなくフォルダ名も連動して変更する?
きちんと読んでいませんが、ファイル名とフォルダ名はセルを&で結合すれば可能でしょう。それなら、その結果を「ファイル名・フォルダ名管理シート」としてもち、そこへ一覧として持ち、マクロでは、その一覧を元にファイル名やフォルダ名の作成をした方がいいと思います。ファイル名の作成規則はマクロから外した方がすっきりします。
また、変更後には変更前のファイル名やフォルダ名が判らなくなります。変更前の情報がないと名前変更できないので、変更前の情報をどこかに保存しておく必要があるでしょう。
でもそれ以前の疑問として、どうしてそういう運用が必要なのでしょう?
手作業で誰でも簡単に、その規則から逸脱したファイル名やフォルダ名にすることが可能ですよね?誰かが間違ってファイル名やフォルダ名を変更したら、どうやってもとに戻すのでしょう?
そうした保障がされていないのに、セルの内容を変更したら自動的にファイル名やフォルダ名を変えるマクロを知ってもあまり意味がないのでは?もっと現実的な運用を考えた方がよろしいのではないでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Excel(エクセル) ExcelVBA メモ帳を起動し名前を付けて指定フォルダに保存 2 2022/04/18 13:15
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行して 作業フォルダの中にある PDFファイル名を 3 2023/07/01 15:16
- Excel(エクセル) VBAにてエクセルをpdf化する方法 1 2023/03/10 16:20
- Excel(エクセル) フォルダ階層が深いファイルの拡張子の一括変換 2 2022/12/23 18:40
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelのVBAでフォルダ指定がで...
-
Excelで指定したフォルダに保存...
-
パス名に2バイト文字(マルチバ...
-
フォルダを開いて、閉じるのプ...
-
VBScriptでフォルダ参照ダイア...
-
pdfファイルの格納バッチファイル
-
EXCELのセルにフォルダのパスの...
-
ディレクトリ名変更してコピー...
-
ActiveX EXE内でのCurDir関数の...
-
会社のネットワーク上のファイ...
-
期間を指定したフォルダの削除...
-
Windows10でコマンドプロンプト...
-
フォルダにリンクを貼りたい
-
WinAPIでフォルダ作成
-
バックアップ(世代管理)機能...
-
バッチファイルを作りたい。
-
【コマンドプロンプト】リスト...
-
【ExcelVBA】一覧表の記載に従...
-
VBAにてツリー階層表示ツールの...
-
【マクロ】ファイル名の日付に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
会社のネットワーク上のファイ...
-
パス名に2バイト文字(マルチバ...
-
デスクトップの画像をhtmlに表...
-
【マクロ】ファイル名の日付に...
-
C ファイル出力で、フォルダが...
-
ファイル名と同名のフォルダを...
-
Excelのハイパーリンクについて...
-
VBA 最新のフォルダ取得
-
Excelで指定したフォルダに保存...
-
VBAでファイル名を指定して保存...
-
Access VBA で フォルダ権限...
-
サーバ内のフォルダ名と各フォ...
-
excelマクロ 冒頭3文字が一致す...
-
VBA フォルダ名に特定の文字を...
-
カレントフォルダって?
-
Excel VBA マクロ フォルダ名を...
-
VBA フォルダの複数選択ができない
-
ExcelVBAでフォルダへのハイパ...
-
ExcelのVBAでフォルダ指定がで...
おすすめ情報