• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExcelのVBAであるフォルダの中にあるファイルに自動的に名前を付けたい)

ExcelのVBAでファイルに自動的に名前を付ける方法

このQ&Aのポイント
  • ExcelのVBAを使用して、指定したフォルダ内のファイルに自動的に名前を付ける方法をご紹介します。
  • VBAのプログラムを使用して、フォルダ内の各ファイルの名前を変更することができます。
  • シートに書かれている一番小さい数字から大きい数字までをファイル名に付加することができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • kuma3f
  • ベストアンサー率63% (28/44)
回答No.2

ANo.1のkuma3fです。 補足ですが、私の勘違いでファイル名に"【"が使えないとしていましたが使えますのですみません。 先のコードの"#"を"【"に変えてください。 変更後の名前 = "#" & テーブル最大値 & "#" & 文字列 ↓ 変更後の名前 = "【" & テーブル最大値 & "】" & 文字列 変更後の名前 = "#" & テーブル最小値 & "-" & テーブル最大値 & "#" & 文字列 ↓ 変更後の名前 = "【" & テーブル最小値 & "-" & テーブル最大値 & "】" & 文字列 また、先のコードはシート名がAファイルが「A-S1」、Bファイルが「B-S1」のようにされていましたのでシート名にファイル名が含まれているものを対象にしています。 もし、ファイル名とシート名に関連性がないのでしたら先のコードの 「If シート名 Like 文字列 & "*" Then」と「End If」を削除してください。(削除することで全シートが対象になります) For Each シート In Workbooks(対象ファイル).Sheets 'シート検索 シート.Activate シート名 = ActiveWorkbook.ActiveSheet.Name 文字列 = Left(対象ファイル, Len(対象ファイル) - 4) 'If シート名 Like 文字列 & "*" Then         ←削除してください シート数 = シート数 + 1 テーブル(シート数) = Workbooks(対象ファイル).Sheets(シート名).Range("A1") If テーブル最小値 > テーブル(シート数) Then テーブル最小値 = テーブル(シート数) End If If テーブル最大値 < テーブル(シート数) Then テーブル最大値 = テーブル(シート数) End If 'End If                           ←削除してください Next シート

mnakayoshi
質問者

お礼

あーわかりました すごく助かりました 本当に本当にありがとうございました 長いコードをありがとうございます 大変勉強になりました

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • kuma3f
  • ベストアンサー率63% (28/44)
回答No.1

思われていることと違っていましたらすみませんが、次のコードを新規Bookのマクロに貼り付けて、そのBookを変換したいファイルのあるフォルダーの中に自由な名前をつけて保存し、保存したBookを開いてそのマクロを実行してみてください。 既存のファイルを壊してはいけないので、必ず、コピーしたフォルダー内でテスト的に行ってみてください。 新規BooKを開く  ↓ メニューバーの「ツール」→「マクロ」→「マクロ」をクリック  ↓ マクロのダイアログが表示されたらマクロ名に自由に名前を入力してください。(例:変換)  ↓ 名前を入力しましたら、「作成」をクリック  ↓ Microsoft Visual Basicの画面が開きますのでSub 変換()の下に次のコードをコピーして貼り付けてください。 '<定義> Dim パス名, 当ファイル, 当ファイル名, 対象ファイル, 変更後の名前, シート名, 文字列 As String Dim テーブル最小値, テーブル最大値, テーブル(256) As String Dim ファイル数, シート数 As Long Dim シート As Worksheet '<処理> Application.ScreenUpdating = False パス名 = ActiveWorkbook.Path & "\" 当ファイル = ActiveWorkbook.Name 当ファイル名 = パス名 & 当ファイル Sheets("sheet1").Cells.ClearContents With Application.FileSearch 'ファイルの検索 .NewSearch .LookIn = パス名 .Filename = "*.xls" .SearchSubFolders = True If .Execute() > 0 Then For ファイル数 = 1 To .FoundFiles.Count If 当ファイル名 <> .FoundFiles(ファイル数) Then Sheets("sheet1").Cells(ファイル数, 1) = .FoundFiles(ファイル数) Workbooks.Open Filename:=.FoundFiles(ファイル数) 'ファイルのOPEN 対象ファイル = ActiveWorkbook.Name シート数 = 0 テーブル最小値 = 999 テーブル最大値 = 0 For Each シート In Workbooks(対象ファイル).Sheets 'シート検索 シート.Activate シート名 = ActiveWorkbook.ActiveSheet.Name 文字列 = Left(対象ファイル, Len(対象ファイル) - 4) If シート名 Like 文字列 & "*" Then シート数 = シート数 + 1 テーブル(シート数) = Workbooks(対象ファイル).Sheets(シート名).Range("A1") If テーブル最小値 > テーブル(シート数) Then テーブル最小値 = テーブル(シート数) End If If テーブル最大値 < テーブル(シート数) Then テーブル最大値 = テーブル(シート数) End If End If Next シート If テーブル最小値 = テーブル最大値 Then 変更後の名前 = "#" & テーブル最大値 & "#" & 文字列 Else 変更後の名前 = "#" & テーブル最小値 & "-" & テーブル最大値 & "#" & 文字列 End If Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:=パス名 & 変更後の名前 & ".xls" '保存 Application.DisplayAlerts = True ActiveWorkbook.Close False 'ファイルのCLOSE End If Next End If End With Application.ScreenUpdating = True MsgBox "変換が終了しました。" '****コピー貼り付けはここまで **** Microsoft Visual Basicの画面を×で閉じます  ↓ この新規Bookを変換したいファイルのフォルダー内に名前をつけて保存します  ↓ 保存したらこのBookを開く  ↓ Excel画面のメニューバーの「ツール」→「マクロ」→「マクロ」をクリック  ↓ 先ほど名前を付けたマクロ(変換)を選択して「実行」をクリック 作成されると思います。 ファイル名に"【"が使用できませんので"#"にしています。(「【100-102】A」は「#100-102#A」になります。)

すると、全ての回答が全文表示されます。

関連するQ&A