- ベストアンサー
100個のファイル名を変更する方法とアドバイス
- 100個のファイルの名前を変更する作業について、早く行うための方法とアドバイスをまとめました。
- 作業の中で使用した手法やコマンドプロンプトの使い方、エクセルの黒魔術について紹介します。
- また、類似の作業を効率的に行うための考え方や応用力をつける方法についてもアイデアを提案します。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
> どのように考えていけばいいでしょうか? 100件程度であれば、あなたの行なった「力技」でベターだと思います。 あなたは「変更ロジック(変更する内容、手順)」を正しく把握していますので、数100件以上の場合は「変更ロジックの繰り返し処理」を行なえばいいです。 「繰り返し処理」は、ある程度の経験が必要になりますので、「場数を踏んでなれる」しかありません。 ロジックは次のようになります。 (1)ファイル名を取得する。 (2)データ名を取得する。 (3) (1)の先頭部に(2)を追加して、"a00001"をカットする。 この処理を全件について、繰り返します。 Windows 標準搭載のPowerShellを使えば、 わずか1行の記述で実行することができることになります。
その他の回答 (5)
- NuboChan
- ベストアンサー率47% (785/1650)
すいません勘違いしていました。 EXCELを利用した相談だと勘違いしてマクロで回答しましたが 必要なければ忘れて下さい。 最後に仮セルを使用したマクロだったのを 仮セルを作らずに変数(配列)で処理してみました。 (シートを3つ作らずに1つのシートにしてA2セルから 旧ファイル名とヘッダー部分を隣合わせたセル入れる方式にしています。) Sub test2() Dim i As Long Dim ws1 As Worksheet Dim LastRow As Long Dim NewName() As Variant Dim Header1() As Variant, Header2() As Variant Set ws1 = Worksheets("変更前") '処理すべきファイル名(旧ファイル名)のあるシート名 '処理行はいくつ? LastRow = ws1.Range("A" & Rows.Count).End(xlUp).Row ReDim NewName(2 To LastRow) ReDim Header1(2 To LastRow) ReDim Header2(2 To LastRow) For i = 2 To LastRow NewName(i) = Left(ws1.Cells(i, 1), 10) & ".xls" '変名前のファイル名から後半の不用部を削除したファイル名候補 Header1(i) = "【" & ws1.Cells(i, 2) & "】" 'ヘッダー1に【】を追加する Header2(i) = "【" & ws1.Cells(i, 3) & "】" 'ヘッダー2に【】を追加する Next Dim Path As String Dim OldFileName() As Variant Dim NewFileName() As Variant ReDim OldFileName(2 To LastRow) ReDim NewFileName(2 To LastRow) Path = "C:\Users\Nubo\Desktop\" 'Path先は環境に合わせて変更の事 For i = 2 To LastRow NewName(i) = Header1(i) & Header2(i) & NewName(i) '変名後の新ファイル名(ヘッダー1,2+ファイル名候補) OldFileName(i) = Path & ws1.Cells(i, 1) '旧ファイル名のフルパス NewFileName(i) = Path & NewName(i) '変名後の新ファイル名のフルパス Name OldFileName(i) As NewFileName(i) '変名処理 Next End Sub
お礼
回答ありがとうございます。 VBAを勉強して与えられた仕事で それがVBAでコード書いて実行した方が早いかの判断と VBAのコードを短時間でかけるスキルを磨いていこうと思います。 参考にさせていただきます。ありがとうございました (*´ω`*)
- NuboChan
- ベストアンサー率47% (785/1650)
質問者からの補足(2022/06/14 20:01)を受けてコードを見直しました。 ファイルが存在するパスは、環境に合わせて変更して下さい。 Option Explicit Sub test2() Dim i As Long Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet Dim LastRow As Long Set ws1 = Worksheets("変更前") Set ws2 = Worksheets("参照DATA") Set ws3 = Worksheets("変更後") LastRow = ws1.Range("A" & Rows.Count).End(xlUp).Row For i = 2 To LastRow ws1.Cells(i, 2).Value = Left(ws1.Cells(i, 1), 10) & ".xls" ws2.Cells(i, 3) = "【" & ws2.Cells(i, 1) & "】" ws2.Cells(i, 4) = "【" & ws2.Cells(i, 2) & "】" Next Dim Path As String Dim OldFileName As String Dim NewFileName As String Path = "C:\Users\User\Desktop\" 'Path先は環境に合わせて変更の事 For i = 2 To LastRow ws3.Cells(i, 1) = ws2.Cells(i, 3) & ws2.Cells(i, 4) & ws1.Cells(i, 2) OldFileName = Path & ws1.Cells(i, 1).Value NewFileName = Path & ws3.Cells(i, 1).Value Name OldFileName As NewFileName Next End Sub
お礼
回答ありがとうございます (*´ω`*)
- NuboChan
- ベストアンサー率47% (785/1650)
sampleコードです。 環境に合わせて変更ください。 (ヘッダーのファイル名は、1セルに入っていると仮定しています。) Option Explicit Sub test() Dim i As Long Dim tmp As Variant Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet Dim LastRow As Long Set ws1 = Worksheets("変更前") Set ws2 = Worksheets("参照DATA") Set ws3 = Worksheets("変更後") LastRow = ws1.Range("A" & Rows.Count).End(xlUp).Row For i = 2 To LastRow tmp = Split(ws2.Cells(i, 1), " ") ws2.Cells(i, 2) = "【" & tmp(0) & "】" ws2.Cells(i, 3) = "【" & tmp(1) & "】" Next Dim fso As Object Dim filePath As String Dim newFileName As String Set fso = CreateObject("Scripting.FileSystemObject") For i = 2 To LastRow ws3.Cells(i, 2) = ws2.Cells(i, 2) & ws2.Cells(i, 3) & ws1.Cells(i, 1) filePath = "C:\Users\user\Desktop\" & ws1.Cells(i, 2).Value newFileName = ws3.Cells(i, 1).Value fso.GetFile(filePath).Name = newFileName Next Set fso = Nothing End Sub
お礼
回答ありがとうございます まだVBAはそれほど詳しくないので 短時間でパッパッパとコードがかけません (´・ω・`) (*´ω`*) コードがある短時間で自由にかけるようになると仕事の効率化が進みそうですね。 (*´ω`*) VBAの勉強をしてみますありがとうございました
- sknbsknb2
- ベストアンサー率38% (1158/3030)
どうせExcel使うんだから、セル参照で "ren [元のファイル名] [rename後のファイル名]" という文字列を100ファイル分作って100セルコピー、エディタにペーストして、"rename.bat"とかのファイル名で保存すれば、そのファイルを実行するだけで、あっという間にrename完了です。 元ファイル100個が別々のフォルダに入っていたりする場合は、ファイル名にファイルパスを含めてください。
お礼
回答ありがとうございます その方が速く作業が終わりそうですね 勉強になりました (*´ω`*)
- hiro_1116
- ベストアンサー率30% (2555/8267)
元のファイルが全て同じファイル名のように見えますが、どういうルールでリネームするのでしょうか?
お礼
回答ありがとうございます。 (*´∀`*)
補足
失礼いたしました。 2021年度勤怠管理a00001.xls 2021年度勤怠管理a00002.xls 2021年度勤怠管理a00003.xls 2021年度勤怠管理a00004.xls ・ ・ ・ のように順番になっているデーターで100個ありました ファイル名のa00001のような番号を削除して 【社員名】【所属部署】2021年度勤怠管理.xls のようにファイル名の先頭部分に 【】付きで社員名と【】付きで所属部署を追加しなければなりませんでした。 入力する社員名と所属部署名は 社員名 所属部署 のような形でA1セルB1セルにの2行に入っていました。
お礼
回答ありがとうございます。 スラスラ必要なコマンドとかエクセルとかを上手に使うと早いぞとかがパッパパと浮かべばもっと速くできたり 一発でVBAのコードかければ瞬間で終わるかもしれませんが、 これをやってくださいと仕事の指示がでると 例えば、1時間とか2時間以内とかそいう制限があって 効率的なやり方を調べて、見つかる場合はいいですが 見つからないとすると調べてましたという 報告になってしまい、作業目的を履行できなくなってしまう。 塩梅がむずかしいですが、ある程度パワープレイも必要ですね(*´ω`*)