[[20181214114837]] 『ファイル名を、変更したい』(だいちゃん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ファイル名を、変更したい』(だいちゃん)

20180925_K1-10.xls
20180706_K2-3.xls

のようなファイル名がある時

K1-10_20180111.xls
K2-3_20180731.xls

と、ファイル名を変更する方法ありますか?

< 使用 Excel:Excel2016、使用 OS:Windows8 >


聞くより調べるが速しだとおもいますが・・・こちらをどうぞ。
    Sub Sample()
        On Error Resume Next
        Name "C:\Work\20180925_K1-10.xls" As "C:\Work\K1-10_20180111.xls"
        Name "C:\Work\20180706_K2-3.xls " As "C:\Work\K2-3_20180731.xls"
        On Error GoTo 0
    End Sub

【参考】
http://officetanaka.net/excel/vba/tips/tips91.htm

フォルダは自分で直してください。
「On Error Resume Next」「On Error GoTo 0」が何をしているのかも、ネット検索等でしらべてみて、理解できなければ再度質問してみてください。

(もこな2) 2018/12/14(金) 12:26


 ファイル名のリネームに規則性がありますか?

 あるのならマクロ使って一気に・・とかできますが、
 無いのなら旧ファイル名と新ファイル名の対応表のようなものを
 作成してから一気に・・というような方法もあると思います。

 数ファイルしかないのならマクロ組むより手作業で変えた方が
 手っ取り早かったりするかとも、思いますが。
(ろっくん) 2018/12/14(金) 12:39

ロックン様

規則は、上記に示したように
日付_「アルファベット」「番号−「番号」です。
これを、「アルファベット」「番号」−「番号」_日付に、変更したいです。
たまに、日付のつけ方が違うのがあるのですが目視確認してから
作業をするようにします。
(だいちゃん) 2018/12/15(土) 17:59


 ご説明では
 20180925_K1-10.xls   →  K1-10_20180111.xls 

 20180706_K2-3.xls    →  K2-3_20180731.xls

 変更後の日付が変更前と変わっています。
変え方の規則を ろっくん さん は聞いているのだと思いますが。。。
例えば、当日の日付、そのままコピー、月初め、月末???
若しくは規則性が全くない ^^;とか
だと。。。。。違っていましたらすみません。
でわ

(隠居じーさん) 2018/12/15(土) 18:26


隠居じーさん 様

例の日付を、間違えていました。
すいません。

ひづは、変わりません。
前にあった日付が、前に来るだけです。
(だいちゃん) 2018/12/15(土) 19:42


なるほど。ただの提示間違いですか・・・

では、このような感じで変更後のファイル名は作れますね。

    Sub さんぷる2()
        Const MySTR As String = "20180925_K1-10.xls"
        Dim ファイル名 As String, 拡張子 As String
        Dim i As Long, tmp As Variant

        '文字列の右端から"."を検索し、左端からの位置を取得する
        i = InStrRev(MySTR, ".")

        '拡張子を除いたファイル名の取得
        ファイル名 = Left(MySTR, i - 1)

        '拡張子の取得
        拡張子 = Replace(MySTR, ファイル名, "")

        '"_"で区切って配列に格納
        tmp = Split(ファイル名, "_")

        '0番目と1番目を入れ替えて、間に"_"を付けなおし、拡張子も付けなおす
        MsgBox tmp(1) & "_" & tmp(0) & 拡張子

    End Sub

(もこな2) 2018/12/15(土) 20:21


もなこ2様

上記、コードありがとうございます。

A6セルファイル名が、入っていて変更後のファイル名をB6セルへ
書き出し最終行までという場合はどうすれば良いのでしょうか?

 For f = 6 To Cells(Rows.Count, 1).End(xlUp).Row

を、追加して MySTRを Cells(f,2)  と、変更してみたのですが
何かが違くて動きません。

(だいちゃん) 2018/12/17(月) 09:13


 Sub
  ↓
 End Sub
 Function
  ↓
 End Function
 どちらにしても
最初から最後までアップしてみてください。
エラー箇所(黄色(多分、変えてなければ^^;)くなっている行)
と
エラー番号、エラーメッセージも教えていただけるとたくさんアドバイスが
有るかもです。
でわ
(隠居じーさん) 2018/12/17(月) 09:56

 こんにちは ^^
他にももっとスマートな方法はあるかと思いますが
もこな2さんの案もお借りして。。。
新規にマクロを記述するBOOKを処理するBOOKと同じフォルダに作成
同フォルダ配下に一つサブフォルダを作成して名前変更後のファイルを
移動。。。
みたいな感じですと下記のような一案でも出来るかと
ログ、いらなければ、はぶいてください。^^;

 変数宣言
1 ループカウンター
2 変更前ファイル名
3 変更後ファイル名
4 このブックの現在のパス
5 変更後に格納するパス
6 新規作成フォルダ名
7 ファイル名を入れ替える為の配列用
など

 作業するパス設定
 一番左端のシートの使用済セルを全て消去
 一番左端のシートのA1の値(項目名)を設定
 一番左端のシートのB1の値(項目名)を設定
 'MyNewFileというフォルダが在るか調べる(名前はなんでもお好みで^^;)
 フォルダが存在しなければMyNewFileフォルダを作成。
 ファイル名を変更後に移動する先のパスを設定(MyNewFileに)
 最初にまだファイル名が変更されず残っているファイル名を取得
 (変更前、変更後、ファイル名)処理のログ出力用セルの最初の行を設定。
 ループ開始
 この(マクロの有る)ブックは処理対象から外す。
 拡張子から左のファイル名を_で二つに分割し配列に格納
 分割した二つの文字列を最初と最後を入れ替えて_でつなげ、拡張子も付け、変数に格納
 変更前ファイル名書き出し
 変更後ファイル名書き出し
 書き出しセルの行に1を加算(次の行)
 ファイル名を変更後、新規フォルダへ移動
 残りのファイル名を取得
 OSに一時処理を返す(すべてのメッセージを処理)
 残りのファイル名が空白になる(無くなる)までループ(繰り返す)する
 使用した全列幅を最適化
 以上です。
 でわ
(隠居じーさん) 2018/12/17(月) 12:55

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.