<?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>連番 | nujonoa_blog</title>
	<atom:link href="https://nujonoa.com/tag/%e9%80%a3%e7%95%aa/feed/" rel="self" type="application/rss+xml" />
	<link>https://nujonoa.com</link>
	<description>人生に役立つデータ集</description>
	<lastBuildDate>Sun, 31 Jan 2021 01:22:26 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://nujonoa.com/wp-content/uploads/2019/04/cropped-DSC00976-e1554456145409-32x32.jpg</url>
	<title>連番 | nujonoa_blog</title>
	<link>https://nujonoa.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【VBA】SaveAsでファイルに連番を追加し重複を防ぐ方法</title>
		<link>https://nujonoa.com/create-and-save-serial-numbers/</link>
					<comments>https://nujonoa.com/create-and-save-serial-numbers/#respond</comments>
		
		<dc:creator><![CDATA[nujonoa]]></dc:creator>
		<pubDate>Sun, 31 Jan 2021 01:15:16 +0000</pubDate>
				<category><![CDATA[マクロVBA]]></category>
		<category><![CDATA[vba]]></category>
		<category><![CDATA[フォルダ]]></category>
		<category><![CDATA[ファイル]]></category>
		<category><![CDATA[SAVEAS]]></category>
		<category><![CDATA[連番]]></category>
		<guid isPermaLink="false">http://nujonoa.com/?p=8705</guid>

					<description><![CDATA[VBAでSaveAsを使う際に、上書き保存するとそのままエクセルが落ちる現象が散見されました。 そこで、今回は、保存先フォルダに同一の名前が含まれるファイルがあった場合に、連番を付けて登録するプログラムを作成しました。  [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>VBAでSaveAsを使う際に、上書き保存するとそのままエクセルが落ちる現象が散見されました。</p>



<p>そこで、今回は、保存先フォルダに同一の名前が含まれるファイルがあった場合に、<br>連番を付けて登録するプログラムを作成しました。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">【VBA】SaveAsでファイルに連番を追加し重複を防ぐ方法</a></li><li><a href="#toc2" tabindex="0">プログラムの説明</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">【VBA】SaveAsでファイルに連番を追加し重複を防ぐ方法</span></h2>



<p>SaveAsでファイルを保存する際に、<br>連番を追加し重複を防いで保存するプログラムを下記に示します。<br>※ダブルクリックでコピーできます。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: vb; title: ; notranslate">
Sub ファイルに連番を付けて保存()

Application.ScreenUpdating = False

'保存先フォルダを選択*開始**************************************
  MsgBox &quot;保存先フォルダを選択&quot;
  Dim folderPath As Variant
  With Application.FileDialog(msoFileDialogFolderPicker)
  .InitialFileName = &quot;C:\Users\&quot;
   If .Show = 0 Then
     MsgBox &quot;キャンセルボタンをクリックしました。&quot;
     Exit Sub
   End If
   folderPath = .SelectedItems(1)
  End With
'保存先フォルダを選択*終了**************************************

'保存名を入力*開始***************************************************
FileName = Application.InputBox(Prompt:=&quot;名前を入力してください。&quot; &amp; vbLf &amp; vbLf, Type:=2, _
           Default:=ActiveSheet.Name &amp; &quot;_&quot; &amp; Year(Now) &amp; Month(Now) &amp; Day(Now))
   If FileName = False Then
     MsgBox &quot;キャンセルボタンをクリックしました。&quot;
     Exit Sub
   End If
'保存名を入力*終了***************************************************
   
'名前のダブり確認*開始***************************************************
        fn = &quot;*&quot; + FileName + &quot;*&quot;
        fnd = Dir(folderPath + &quot;\&quot; + fn, vbNormal)
        I = 0
        'ファイルがない場合
        If (fnd = &quot;&quot;) Then
            GoTo CONTINUE1
        'ファイルがあった場合
        Else
        Do While fnd &lt;&gt; &quot;&quot;
           fnd = Dir '次のファイル
           I = I + 1
        Loop
        End If
        FileName = FileName &amp; &quot;(&quot; &amp; I &amp; &quot;)&quot;

CONTINUE1:

'名前のダブり確認*終了***************************************************

FName = folderPath &amp; &quot;\&quot; &amp; FileName

'ファイルの保存***************************************************
    Worksheets.copy
    ActiveWorkbook.SaveAs _
    FileName:=FName, _
    FileFormat:=xlOpenXMLWorkbook
　'ファイルを閉じる
  Application.DisplayAlerts = False
    ActiveWorkbook.Close
  Application.DisplayAlerts = True

'ファイルの保存終了***************************************************


Application.ScreenUpdating = True

 
End Sub
</pre></div>


<h2 class="wp-block-heading"><span id="toc2">プログラムの説明</span></h2>



<p>プログラムの肝は、この部分になります。<br>Dir(ファイルパス)関数で、ファイルの存在を確認し、<br>もしファイルがあった場合、連番の数字を繰り上げていく形になります。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: vb; title: ; notranslate">
'名前のダブり確認*開始***************************************************
        fn = &quot;*&quot; + FileName + &quot;*&quot;
        fnd = Dir(folderPath + &quot;\&quot; + fn, vbNormal)
        I = 0
        'ファイルがない場合
        If (fnd = &quot;&quot;) Then
            GoTo CONTINUE1
        'ファイルがあった場合
        Else
        Do While fnd &lt;&gt; &quot;&quot;
           fnd = Dir '次のファイル
           I = I + 1
        Loop
        End If
        FileName = FileName &amp; &quot;(&quot; &amp; I &amp; &quot;)&quot;

CONTINUE1:

'名前のダブり確認*終了***************************************************
</pre></div>


<p>fnでファイル名を含むすべてのファイルを検索していますが、</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: vb; title: ; notranslate">
        fn = &quot;*&quot; + FileName + &quot;.Xls*&quot;
</pre></div>


<p>とすると、エクセルのファイルだけを検出して避けることが可能です。</p>



<p>あとは、名前野田ぶりを無くしたので、ファイルを保存して終了です。<br>Worksheets.copy<br>の後に何もつけないと、新しいブックにコピーされますので、<br>SaveAsで保存して終了です。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: vb; title: ; notranslate">
FName = folderPath &amp; &quot;\&quot; &amp; FileName

'ファイルの保存***************************************************
    Worksheets.copy
    ActiveWorkbook.SaveAs _
    FileName:=FName, _
    FileFormat:=xlOpenXMLWorkbook
　'ファイルを閉じる
  Application.DisplayAlerts = False
    ActiveWorkbook.Close
  Application.DisplayAlerts = True

'ファイルの保存終了***************************************************

</pre></div>


<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://nujonoa.com/create-and-save-serial-numbers/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
