<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>一括置換 - プログラミングで遊ブログ</title>
	<atom:link href="https://lemon818.com/tag/%e4%b8%80%e6%8b%ac%e7%bd%ae%e6%8f%9b/feed/" rel="self" type="application/rss+xml" />
	<link>https://lemon818.com</link>
	<description>現役システムエンジニアが趣味でプログラミングする自由気ままなブログ</description>
	<lastBuildDate>Tue, 28 Jun 2022 23:43:49 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>	<item>
		<title>Excelでできる！複数のファイル名を一括置換するツール！</title>
		<link>https://lemon818.com/filename_bulk_replace/</link>
		
		<dc:creator><![CDATA[Take]]></dc:creator>
		<pubDate>Sat, 05 Jun 2021 01:52:34 +0000</pubDate>
				<category><![CDATA[Excel]]></category>
		<category><![CDATA[業務で役立つExcelマクロ]]></category>
		<category><![CDATA[vba]]></category>
		<category><![CDATA[エクセル]]></category>
		<category><![CDATA[ファイル名]]></category>
		<category><![CDATA[マクロ]]></category>
		<category><![CDATA[一括置換]]></category>
		<category><![CDATA[複数]]></category>
		<guid isPermaLink="false">https://lemon818.com/?p=4644</guid>

					<description><![CDATA[&#160; 「手作業でファイル名をちまちま変更するの超めんどくさくないですか？」 &#160; 私はある日、お客さんから「100ファイル近くのExcelファイルのファイル名を手作業で変更してくれ～」っていう依頼がありま…]]></description>
										<content:encoded><![CDATA[<p>&nbsp;</p>
<div class="sc_frame_wrap solid yellow">
<div class="sc_frame ">
<div class="sc_frame_text"><span style="color: #000000;">「<strong>手作業でファイル名をちまちま変更するの</strong><span style="color: #ff0000;"><strong>超めんどくさくない</strong></span><strong>ですか？</strong>」</span></div>
</div>
</div>
<p>&nbsp;</p>
<p>私はある日、お客さんから「100ファイル近くのExcelファイルのファイル名を手作業で変更してくれ～」っていう依頼がありました。</p>
<p>具体的には「ファイル名_v1.2.xlsx」→「ファイル名_v1.3.xlsx」にしてくれ～～っていう内容です。</p>
<p>&nbsp;</p>
<p>もちろん、ファイル数が少ないなら手でやったほうが速いと思いますが、</p>
<p>毎回、100ファイル近くを手作業でやるのにどれだけ時間がかかるか・・</p>
<p>しかし仕事をしていれば、<strong><span style="color: #ff0000;">少なからずそんなめんどくさい作業をすることがある</span></strong>と思います。</p>
<p>&nbsp;</p>
<p>そこでこの度はExcel をつかって<span style="color: #0000ff;"><strong>ボタン一つ</strong></span><strong><span style="color: #0000ff;">でファイル名を一括置換するツール</span>を作りました！</strong></p>
<p>&nbsp;</p>
<p><img fetchpriority="high" decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2021/06/replaceFile.gif" alt="" width="1106" height="452" class="aligncenter wp-image-5753" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>このツールは Excel Vba というプログラミングで作成されています。</p>
<p>この記事では「<strong>Excelでできる複数のファイル名を一括置換するツール</strong>」の使い方と作り方をご紹介します！</p>
<p>&nbsp;</p>
<div>
<p>※ いつものようにつくったのも共有しときますので、よければどうぞ（ブック保護、シート保護はかかってます）。</p>
<p>※ 2022/06 機能追加しました！！50000ファイルまで置換可能！実行中画面の追加実装など！よければインストールどうぞ！</p>
<p>&nbsp;</p>
<div class="button frame block green"><a class="midium" href="https://lemon818.com/wp/wp-content/uploads/2022/06/replaceFileName_ver1.1.xlsm">Excelでできる複数のファイル名を一括置換するツール</a></div>
<p>&nbsp;</p>
<h2>ファイル名を一括置換するツールの使い方</h2>
</div>
<p>この「Excelでできる複数のファイル名を一括置換するツール」では以下の用に使います。</p>
<p>&nbsp;</p>
<div class="sc_frame_wrap orange">
<div class="sc_frame ">
<div class="sc_frame_text">
<div class="sc_designlist ol square solid orange">
<ol>
<li>「検索ボタン」を押下しリネームしたいファイル一覧を取得します。</li>
<li>ファイル名（置換後）列にファイル名を入力します。</li>
<li>「一括置換」ボタンでファイル名が変更できます。</li>
</ol>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<h3>「検索ボタン」を押下してリネームしたいファイル一覧を取得</h3>
<p>まず「検索ボタン」を押下します。</p>
<p>&nbsp;</p>
<p><img decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename1.png" alt="" width="664" height="242" class="aligncenter size-full wp-image-5758" srcset="https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename1.png 664w, https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename1-300x109.png 300w" sizes="(max-width: 664px) 100vw, 664px" /></p>
<p>&nbsp;</p>
<p>すると下記のようなダイアログが表示されるので、ファイル名を変換したいファイルが配架されているフォルダを選択します。</p>
<p>このときファイル名が表示されませんが、問題ありません。</p>
<p>&nbsp;</p>
<p><img decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename2.png" alt="" width="941" height="530" class="aligncenter size-full wp-image-5759" srcset="https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename2.png 941w, https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename2-300x169.png 300w, https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename2-768x433.png 768w" sizes="(max-width: 941px) 100vw, 941px" /></p>
<p>&nbsp;</p>
<p>これにてB列とＣ列にファイル名とフォルダ名がそれぞれ出力されます。</p>
<p>ファイル名、フォルダ名を手入力しても問題ないですが、<span style="color: #ff0000;"><strong>入力し間違えないようにする必要があります。</strong></span></p>
<p>&nbsp;</p>
<h3>ファイル名（置換後）列にファイル名を入力</h3>
<p>ファイル名（置換後）列にファイル名を入力します。</p>
<p>このツールではファイル名（置換前）→ファイル名（置換後）のようにファイルがリネーム（名前が変更）されます。</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename3.png" alt="" width="1031" height="441" class="aligncenter wp-image-5760" srcset="https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename3.png 1204w, https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename3-300x128.png 300w, https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename3-1024x438.png 1024w, https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename3-768x329.png 768w" sizes="auto, (max-width: 1031px) 100vw, 1031px" /></p>
<p>&nbsp;</p>
<p>ファイル名（置換後）列に入力後、チェック列（E列）の値がOKになっていれば問題なしです。</p>
<p>なおチェック列がOK以外の値の場合は<span style="color: #ff0000;"><strong>ファイル名置換処理が実行されません。</strong></span></p>
<p>&nbsp;</p>
<h4>チェック列がＯK以外のケース</h4>
<p>チェック列では入力した値に誤りがあるかどうかをチェックします。</p>
<div class="sc_frame_wrap orange">
<div class="sc_frame ">
<div class="sc_frame_text">
<div class="sc_designlist ol square solid orange">
<ol>
<li><span style="color: #ff0000;">ファイル名（置換後）列に重複している項目がないか</span></li>
<li><span style="color: #3366ff;">ファイル名（置換前）列とファイル名（置換後）列で同じ値がないか</span></li>
</ol>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<p>もし上記項目を満たした場合、下記画面のようにエラーメッセージが表示されるようになっています。</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename6.png" alt="" width="785" height="200" class="aligncenter size-full wp-image-5765" srcset="https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename6.png 785w, https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename6-300x76.png 300w, https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename6-768x196.png 768w" sizes="auto, (max-width: 785px) 100vw, 785px" /></p>
<p>&nbsp;</p>
<p>※ なおこのエラーメッセージはH列（非表示列）に入力していますので、H列は消さないようにお願いします！</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename7.png" alt="" width="461" height="278" class="aligncenter size-full wp-image-5767" srcset="https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename7.png 461w, https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename7-300x181.png 300w" sizes="auto, (max-width: 461px) 100vw, 461px" /></p>
<p>&nbsp;</p>
<h3>「一括置換」ボタンでファイル名が変更</h3>
<p>最後に「一括置換」ボタンを押下します。</p>
<p>すると下記のような処理完了メッセージが表示されます。</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename4.png" alt="" width="883" height="492" class="aligncenter size-full wp-image-5761" srcset="https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename4.png 883w, https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename4-300x167.png 300w, https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename4-768x428.png 768w" sizes="auto, (max-width: 883px) 100vw, 883px" /></p>
<p>&nbsp;</p>
<p>フォルダを確認しに行くと<strong><span style="color: #3366ff;">ファイル名が一括置換されていることが確認できます！</span></strong></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename5.png" alt="" width="813" height="408" class="aligncenter size-full wp-image-5762" srcset="https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename5.png 813w, https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename5-300x151.png 300w, https://lemon818.com/wp/wp-content/uploads/2021/06/excel-rename5-768x385.png 768w" sizes="auto, (max-width: 813px) 100vw, 813px" /></p>
<p>&nbsp;</p>
<p>以上がこのツールの使い方です。</p>
<p>続いてはこのツールの使い方を説明します。</p>
<p>&nbsp;</p>
<div>
<h2>ファイル名を一括置換するツールの作り方（Excel Vba）</h2>
<p><strong><span style="color: #ff0000;">ここからプログラミングの少し難しい話になります！</span></strong></p>
<p>&nbsp;</p>
<p>今回は「<strong>Excelでできる複数のファイル名を一括置換するツール</strong>」を作るうえで下記のような Excel VBA コードを作成しました。</p>
</div>
<p>このコードを Excel の開発タブ→ Visual Basic で表示されるエディタに貼り付ければOKです。</p>
<p>※ 開発タブがない場合は下記ページを参考にしてください。</p>
<div class="sc_getpost"><a class="clearfix" href="https://lemon818.com/vba_start/" ><div class="sc_getpost_thumb post-box-thumbnail__wrap"><img loading="lazy" decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2018/10/8e3b6f7cb40cde9b9f4399d6869f96f9-1.png" width="702" height="356"></div><div class="title">３分でできる！Excel VBA の開発を行うために必要な事前準備</div><div class="date">2018.11.14</div><div class="substr">いまから 「vba を始めたいけれど、Excel で何をどうやってすればいいかわからない」という悩みはありませんか？ 本ページでは vba をどうやってはじめるか３分以内に終わる方法を解説します。 v...</div></a></div>
<p>&nbsp;</p>
<div>
<pre class="crayon-plain-tag">'=================================================================================
' 複数ファイル名を一括置換マクロ
'=================================================================================

Const SEARCH_WORD = "\*.*"

Const CELL_PRINT_COL = 2
Const CELL_PRINT_ROW = 2
Const CELL_SEARCH_WORD = "B3"


' ファイル一覧取得
Sub getFileList()

    Application.ScreenUpdating = False

    Dim folderName
    Dim lastRow
    
    folderName = getFolderName()
    fileList = Dir(folderName &amp; SEARCH_WORD)
    
    ' 最終行取得
    If Cells(CELL_PRINT_ROW + 1, CELL_PRINT_COL) = "" Then
        lastRow = CELL_PRINT_ROW + 1
    Else
        lastRow = Cells(CELL_PRINT_ROW, CELL_PRINT_COL).End(xlDown).Row
    End If
    
    Do While fileList &lt;&gt; ""
                
        Cells(lastRow, CELL_PRINT_COL) = folderName
        Cells(lastRow, CELL_PRINT_COL + 1) = fileList
        lastRow = lastRow + 1
        fileList = Dir()
        
    Loop
    
    Application.ScreenUpdating = True
    
End Sub


' ファイル名を一括置換
Sub replaceFile()

    Application.ScreenUpdating = False

    Dim folderName
    Dim beforeFile
    Dim afterFile
    Dim i
    
    On Error Resume Next
    i = CELL_PRINT_ROW + 1
    
    While Cells(i, CELL_PRINT_COL) &lt;&gt; ""
    
        folderName = Cells(i, CELL_PRINT_COL)
        beforeFile = folderName &amp; "\" &amp; Cells(i, CELL_PRINT_COL + 1)
        afterFile = folderName &amp; "\" &amp; Cells(i, CELL_PRINT_COL + 2)
        
        If check(beforeFile, afterFile) And Cells(i, CELL_PRINT_COL + 3) = "OK" Then
            Name beforeFile As afterFile
            Cells(i, CELL_PRINT_COL + 4) = "OK"
        Else
            Cells(i, CELL_PRINT_COL + 4) = "NG"
        End If
    
        i = i + 1
    
    Wend
    
    Application.ScreenUpdating = True
    
    MsgBox "ファイル名を一括置換しました！"
    
End Sub

' 初期化
Sub reset()

    Application.ScreenUpdating = False
    
    Range(Cells(CELL_PRINT_ROW + 1, CELL_PRINT_COL), Cells(Rows.Count, CELL_PRINT_COL + 2)).ClearContents
    Range(Cells(CELL_PRINT_ROW + 1, CELL_PRINT_COL + 4), Cells(Rows.Count, CELL_PRINT_COL + 4)).ClearContents
     
    Application.ScreenUpdating = True

End Sub


' 入力精査
Private Function check(ByVal beforeFile, ByVal afterFile) As Boolean

    If Dir(beforeFile) &lt;&gt; "" And Dir(afterFile) = "" Then
        check = True
    Else
        check = False
    End If
    
End Function


' ダイアログでフォルダ名取得
Private Function getFolderName()

    Dim folderPath As Variant
    
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = 0 Then
            End
        End If
        folderPath = .SelectedItems(1)
    End With
    
    getFolderName = folderPath
  
End Function</pre>
&nbsp;</p>
<p>とりあえず上をコピーすればOKですが、それだとあまりに味気ないので説明します。</p>
<p>まずこのプログラムは以下のような機能があります。</p>
</div>
<p>&nbsp;</p>
<div class="sc_frame_wrap block blue">
<div class="sc_frame_title">このプログラムの機能</div>
<div class="sc_frame ">
<div class="sc_frame_text">
<div class="sc_designlist ol square solid blue">
<ol>
<li>getFileList() ・・・ （リネームする）ファイル一覧を取得</li>
<li>replaceFile() ・・・ ファイル名を一括置換</li>
<li>reset() ・・・  出力シートを初期化</li>
</ol>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<p>今回のツールでの「（リネームする）ファイル一覧を取得」と「ファイル名を一括置換」する方法について説明します。</p>
<p>※ reset（）については割愛します。</p>
<p>&nbsp;</p>
<h3>Excel で（リネームする）ファイル一覧を取得・・・getFileList()</h3>
<p>ファイル一覧を取得する方法は下記になります。</p>
<div class="sc_frame_wrap orange">
<div class="sc_frame ">
<div class="sc_frame_text">
<div class="sc_designlist ol square solid orange">
<ol>
<li>ダイアログでフォルダ名取得</li>
<li>取得したフォルダ名をもとにフォルダ下のファイル一覧を取得</li>
</ol>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<p>フォルダ名取得用のダイアログ画面は Application.FileDialog(msoFileDialogFolderPicker)で取得します。</p>
<p>戻り値として選択したフォルダ名（フルパス）で取得できます。</p>
<p>&nbsp;</p>
<p>その取得したフォルダ名から Dir 関数でファイル一覧を取得し、シートに出力するだけです。</p>
<p>&nbsp;</p><pre class="crayon-plain-tag">' ファイル一覧取得
Sub getFileList()

    Application.ScreenUpdating = False

    Dim folderName
    Dim lastRow
    
    folderName = getFolderName()
    fileList = Dir(folderName &amp; SEARCH_WORD)
    
    ' 最終行取得
    If Cells(CELL_PRINT_ROW + 1, CELL_PRINT_COL) = "" Then
        lastRow = CELL_PRINT_ROW + 1
    Else
        lastRow = Cells(CELL_PRINT_ROW, CELL_PRINT_COL).End(xlDown).Row
    End If
    
    Do While fileList &lt;&gt; ""
                
        Cells(lastRow, CELL_PRINT_COL) = folderName
        Cells(lastRow, CELL_PRINT_COL + 1) = fileList
        lastRow = lastRow + 1
        fileList = Dir()
        
    Loop
    
    Application.ScreenUpdating = True
    
End Sub

' ダイアログでフォルダ名取得
Private Function getFolderName()

    Dim folderPath As Variant
    
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = 0 Then
            End
        End If
        folderPath = .SelectedItems(1)
    End With
    
    getFolderName = folderPath
  
End Function</pre><p>
&nbsp;</p>
<p>&nbsp;</p>
<h3>Excel でファイル名を一括置換・・・replaceFile()</h3>
<p>シートに記述されている置換前後のファイル名を取得し、それらを Name 関数で取得します。</p>
<p>&nbsp;</p>
<div class="sc_frame_wrap block orange">
<div class="sc_frame_title">ポイント！</div>
<div class="sc_frame ">
<div class="sc_frame_text">ファイル名の変更 ・・・ Name 置換前のファイル名 As 置換後のファイル名</div>
</div>
</div>
<p>&nbsp;</p>
<p>このリネーム（ファイル名を変更する）処理は<span style="color: #3366ff;"><strong>一行ずつ</strong></span>実行されます。</p>
<p>このファイル名変更処理をシートの表の（B列）に値が実行されるまで実行します。</p>
<p>&nbsp;</p><pre class="crayon-plain-tag">' ファイル名を一括置換
Sub replaceFile()

    Application.ScreenUpdating = False

    Dim folderName
    Dim beforeFile
    Dim afterFile
    Dim i
    
    On Error Resume Next
    i = CELL_PRINT_ROW + 1
    
    While Cells(i, CELL_PRINT_COL) &lt;&gt; ""
    
        folderName = Cells(i, CELL_PRINT_COL)
        beforeFile = folderName &amp; "\" &amp; Cells(i, CELL_PRINT_COL + 1)
        afterFile = folderName &amp; "\" &amp; Cells(i, CELL_PRINT_COL + 2)
        
        If check(beforeFile, afterFile) And Cells(i, CELL_PRINT_COL + 3) = "OK" Then
            Name beforeFile As afterFile
            Cells(i, CELL_PRINT_COL + 4) = "OK"
        Else
            Cells(i, CELL_PRINT_COL + 4) = "NG"
        End If
    
        i = i + 1
    
    Wend
    
    Application.ScreenUpdating = True
    
    MsgBox "ファイル名を一括置換しました！"
    
End Sub

' 入力精査
Private Function check(ByVal beforeFile, ByVal afterFile) As Boolean

    If Dir(beforeFile) &lt;&gt; "" And Dir(afterFile) = "" Then
        check = True
    Else
        check = False
    End If
    
End Function</pre><p>
&nbsp;</p>
<p>また上記処理では入力したファイル名が正しいかどうかを精査する check 関数も実行しております。</p>
<p>この check関数は下記条件すべてを満たす場合に True、それ以外は False を返します。</p>
<p>&nbsp;</p>
<div class="sc_frame_wrap orange">
<div class="sc_frame ">
<div class="sc_frame_text">
<div class="sc_designlist ol square solid orange">
<ol>
<li>置換前のファイル（B列）が存在するか</li>
<li>置換後のファイル（C列）が存在しないか</li>
<li>チェック列（E列）がOKであるか</li>
</ol>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<div>
<h2>最後に</h2>
<p>&nbsp;</p>
<p>いかがでしたでしょうか？</p>
<p>この記事では「<strong>Excelでできる複数のファイル名を一括置換するツール</strong>」の使い方と作り方について解説しました。</p>
</div>
<p>&nbsp;</p>
<p>このツールさえあれば<span style="color: #3366ff;"><strong>どれだけファイル数が多くてもファイル名の一括置換がラクラクできます！</strong></span></p>
<div>
<p>この記事が読者の何かのお役に立てれば幸いです。</p>
<p>ではでは。</p>
</div>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
