<?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>バックアップ | VBA・GAS・Pythonで仕事を楽しく効率化</title>
	<atom:link href="https://officevba.info/tag/%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97/feed/" rel="self" type="application/rss+xml" />
	<link>https://officevba.info</link>
	<description>仕事の役に立つVBA・GAS・Pythonのコードを紹介していきます。</description>
	<lastBuildDate>Sat, 31 Jan 2026 12:16:03 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://officevba.info/wp-content/uploads/2017/04/cropped-Excel_1-32x32.jpg</url>
	<title>バックアップ | VBA・GAS・Pythonで仕事を楽しく効率化</title>
	<link>https://officevba.info</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>VBAの実行前に作成したマクロを別ファイルで保存</title>
		<link>https://officevba.info/savecopyas/</link>
					<comments>https://officevba.info/savecopyas/#respond</comments>
		
		<dc:creator><![CDATA[okumasahito]]></dc:creator>
		<pubDate>Tue, 26 Nov 2024 11:44:42 +0000</pubDate>
				<category><![CDATA[ブックの操作]]></category>
		<category><![CDATA[FSO(FileSystemObject)]]></category>
		<category><![CDATA[SaveCopyAs]]></category>
		<category><![CDATA[バックアップ]]></category>
		<guid isPermaLink="false">https://officevba.info/?p=2541</guid>

					<description><![CDATA[目次 保存する前に動作させたVBAがフリーズ通常のファイルの保存での問題点を解決するSaveCopyAsメソッド実行前にマクロファイルをバックアップとして保存するコードの紹介 保存する前に動作させたVBAがフリーズ 保存 [&#8230;]]]></description>
										<content:encoded><![CDATA[
  <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がフリーズ</a></li><li><a href="#toc2" tabindex="0">通常のファイルの保存での問題点を解決するSaveCopyAsメソッド</a></li><li><a href="#toc3" tabindex="0">実行前にマクロファイルをバックアップとして保存するコードの紹介</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">保存する前に動作させたVBAがフリーズ</span></h2>
<p>保存するのを忘れてVBAコードを実行した結果、Excelがフリーズしてもう一度コードを書きなおすのは多分あるあるだと思うのですが、この間も懲りずにやらかしました。</p>
<p>そこでコード実行時にバックアップを作成するコードを考えてみましたのでご紹介します。</p>
<h2><span id="toc2">通常のファイルの保存での問題点を解決するSaveCopyAsメソッド</span></h2>
<p>ファイルをバックアップ用に保存することを考えた場合、通常の上書き保存（ThisWorkbook.Save）だと「保存前の状況に戻したい」場合に困ることがあります。</p>
<p>また、「名前を付けて保存（ThisWorkbook.SaveAs ○○）」だとコピーの動作後に名前をつけて保存したファイルが現在開いている状態になり、元のファイルは保存前の状態で閉じられた扱いになってしまいます。</p>
<p>理想的には①現在のファイルは保存前の状態で維持しつつ、②作成したツールをバックアップとして保存することで、この挙動をかなえてくれるのがSaveCopyAsメソッドです。<br />
（FileSystemObjectのCopyFileだと以前の保存状態のものをバックアップに保存、今のファイルを新しく保存する運用でSaveCopyAsメソッドとはバックアップファイルと現在のファイルが逆になります。今回はSaveCopyAsメソッドの挙動が想定していたものでしたのでSaveCopyAsメソッドを利用します。）</p>
<h2><span id="toc3">実行前にマクロファイルをバックアップとして保存するコードの紹介</span></h2>
<p>以下のコードをツールに組み込んでおいて、作成したコードの先頭に「Call 実行前にVBAを含むツールファイルを自動保存」の1行を入力しておくことでツールファイルが格納されているフォルダに「backUp」フォルダが作成され、ツールファイルのバックアップが保存されます。</p>
<p>元になるツールファイル自体は保存前の状態、バックアップファイルはツールの動作時の状態になりますので、フリーズしてしまったり、無限ループに陥って強制終了した場合などは「backUp」フォルダ内の直近で作成されたファイルを利用すればすぐに復旧可能です。</p>
<div class="VBACode">
<pre>
Sub 実行前にVBAを含むツールファイルを自動保存()

    Dim fso As Object: Set fso = CreateObject("Scripting.FileSystemObject")
    '参照設定「Microsoft Scripting Runtime」を設定している場合
    'Dim fso As FileSystemObject: Set fso = New FileSystemObject
    
    If Not fso.folderExists(ThisWorkbook.Path &#038; "\backUp") Then
        fso.createFolder (ThisWorkbook.Path &#038; "\backUp")
    End If

    ThisWorkbook.SaveCopyAs (ThisWorkbook.Path &#038; "\backUp\" &#038; Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4) &#038; Format(Now, "yyyymmdd_hhmmss") &#038; ".xlsm")

End Sub
</pre>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://officevba.info/savecopyas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
