重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

既にサイトで公開されているマクロに、「特定セルの名前を呼び出し」マクロを作りたい状況です
  
  
「ファイル1」の「ねこ」シートのC4には わんこ1 と入力する
「ファイル2」の「ねこ」シートのC4には わんこ2 と入力する
※ファイル1、ファイル2はいずれもファイル名(拡張子名もあり)


「ファイル名を取得」マクロを実行すると
変更前ファイル名の一覧に
ファイル1 
ファイル2

が表示される。
         →ここまでは既存シートで可能


________________________
ここで、B2に 特定のシートのセルを入力できるようにする  例:ねこ!C4 
「特定セルの名前を呼び出し」マクロを実行すると
変更後後ファイル名の一覧に
わんこ1.xlsm
わんこ2.xlsm

が表示される。※拡張子以外の名前だけ変更する。
________________________

上記の線で囲んだ実行マクロの計算式はどのようなものになりますでしょうか?
サイトにあるマクロのURLは下記のとおりです。
http://excel-macro.com/change_filename/

A 回答 (2件)

No.1です。



質問文にあったリンク先ファイルがアクティブな状態で、No.1のマクロを実行してもらえればわかりますが、所定のセルに変更後ファイル名を書き込むようにしています。

あと必要なのは、下記になります。
・No.1で提示したマクロのフォルダ取得、ファイル取得の部分を削除する
・既存のマクロとNo.1のマクロをつなぎ合わせる
・既存のマクロとNo.1のマクロの変数名を統一する
    • good
    • 0

こんな感じでしょうか?


pathはリネームしたいファイルの保管先フォルダ名を記入する必要があります。

-------------------
Sub file_rename()

Dim path, fso, file, files
Dim file_new As String
Dim i As Single
Dim wb As Workbook
Dim file_ext

path = "C:/Users/xxxxxx/フォルダ名/" 'リネームしたいファイルの保管先フォルダ名を記入する
Set fso = CreateObject("Scripting.FileSystemObject")
Set files = fso.GetFolder(path).files

'フォルダ内の全ファイルについて処理
For Each file In files

'ファイルを開いてブックとして取得
file_ext = fso.GetExtensionName(file)
Set wb = Workbooks.Open(file)

'ブックに対する処理
Cells(2, "b") = "=ねこ!C4"
file_new = Cells(2, "b") & "." & file_ext

'保存せずに閉じる
Call wb.Close(SaveChanges:=False)

'リネーム
Name file As path & "\" & file_new

'ファイル名書き込み
Cells(i + 5, "b") = file_new
i = i + 1
Next file

End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
私の説明が稚拙で大変わかりづらい中、本当に感謝いたします。
イメージとしては、サイトにあるマクロでその都度フォルダを指定できるようなので
そのマクロを活かしつつ、指定したフォルダの中のファイル全部について、
それぞれのファイルの●●シートの▲セルの数値には規則的に名前が入っているので、
その名前をファイル名にしたいというイメージです。
マクロの構文を変えずに、たとえばこのサイトにあるマクロのB2セルに●●シート!▲セルと入力するだけで、
このサイトのマクロで指定したフォルダの中の全部のファイルの●●シート!▲セルに入力されたファイル名に
変えるということは難しいでしょうか?
わかりづらくて申し訳ありません。。

お礼日時:2020/06/03 00:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!