<?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>「実行時エラー&#039;9&#039;:インデックスが有効範囲にありません」  |  独学エクセル塾</title>
	<atom:link href="https://dokugakuexcel.com/tag/%E3%80%8C%E5%AE%9F%E8%A1%8C%E6%99%82%E3%82%A8%E3%83%A9%E3%83%BC9%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9%E3%81%8C%E6%9C%89%E5%8A%B9%E7%AF%84%E5%9B%B2%E3%81%AB%E3%81%82/feed/" rel="self" type="application/rss+xml" />
	<link>https://dokugakuexcel.com</link>
	<description>初心者から中級者までシステム・関数・VBAを伝授します</description>
	<lastBuildDate>Mon, 17 Oct 2022 13:59:24 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://dokugakuexcel.com/wp-content/uploads/2021/06/cropped-cropped-image-66-1-32x32.jpg</url>
	<title>「実行時エラー&#039;9&#039;:インデックスが有効範囲にありません」  |  独学エクセル塾</title>
	<link>https://dokugakuexcel.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">194648711</site>	<item>
		<title>【マクロVBAエラー】ブックをCloseで閉じれない「インデックスが有効範囲にありません」原因対処法</title>
		<link>https://dokugakuexcel.com/%e3%80%90%e3%83%9e%e3%82%af%e3%83%advba%e3%82%a8%e3%83%a9%e3%83%bc%e3%80%91%e3%83%96%e3%83%83%e3%82%af%e3%82%92close%e3%81%a7%e9%96%89%e3%81%98%e3%82%8c%e3%81%aa%e3%81%84%e3%80%8c%e3%82%a4%e3%83%b3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2580%2590%25e3%2583%259e%25e3%2582%25af%25e3%2583%25advba%25e3%2582%25a8%25e3%2583%25a9%25e3%2583%25bc%25e3%2580%2591%25e3%2583%2596%25e3%2583%2583%25e3%2582%25af%25e3%2582%2592close%25e3%2581%25a7%25e9%2596%2589%25e3%2581%2598%25e3%2582%258c%25e3%2581%25aa%25e3%2581%2584%25e3%2580%258c%25e3%2582%25a4%25e3%2583%25b3</link>
					<comments>https://dokugakuexcel.com/%e3%80%90%e3%83%9e%e3%82%af%e3%83%advba%e3%82%a8%e3%83%a9%e3%83%bc%e3%80%91%e3%83%96%e3%83%83%e3%82%af%e3%82%92close%e3%81%a7%e9%96%89%e3%81%98%e3%82%8c%e3%81%aa%e3%81%84%e3%80%8c%e3%82%a4%e3%83%b3/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[matsu]]></dc:creator>
		<pubDate>Sat, 03 Sep 2022 16:07:29 +0000</pubDate>
				<category><![CDATA[エラー対策]]></category>
		<category><![CDATA[マクロVBA応用・便利技]]></category>
		<category><![CDATA[エラー]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[マクロ]]></category>
		<category><![CDATA[close]]></category>
		<category><![CDATA[「実行時エラー&#039;9&#039;:インデックスが有効範囲にありません」]]></category>
		<guid isPermaLink="false">https://dokugakuexcel.com/?p=3380</guid>

					<description><![CDATA[マクロVBAの機能の１つに「Close」という機能が存在します。使用方法としてはブックを閉じる際に使用します。 別のブックから数値を参照したりなと、ブックを経由する場合はよく使用する機能です。しかし、使用方法を誤るとエラ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>マクロVBAの機能の１つに<span class="marker-under"><strong>「Close」</strong></span>という機能が存在します。<br>使用方法としては<strong><span class="marker-under">ブックを閉じる</span></strong>際に使用します。</p>



<p>別のブックから数値を参照したりなと、ブックを経由する場合はよく使用する機能です。<br>しかし、使用方法を誤るとエラーが発生し、閉じることができません。</p>



<p>そこで今回は<strong><span class="marker-under-red">ブックを閉じる際に発生するエラーに対しての原因と対処法</span></strong>を紹介します。<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">&#x2b1b;︎通常のブックの閉じ方</a></li><li><a href="#toc2" tabindex="0">&#x2b1b;︎closeのエラーの原因と対処法</a><ol><li><a href="#toc3" tabindex="0">・「実行時エラー&#8217;9&#8242;:インデックスが有効範囲にありません」について</a></li><li><a href="#toc4" tabindex="0">・プログラムが途中で停止、実行中のブックが閉じる</a></li></ol></li><li><a href="#toc5" tabindex="0">&#x2b1b;︎補足　ブックを閉じる際の確認画面を表示させない方法</a></li><li><a href="#toc6" tabindex="0">&#x2b1b;︎まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">&#x2b1b;︎通常のブックの閉じ方</span></h2>



<p>まず、エラー対応の前に<strong><span class="marker-under">通常のブックを閉じる方法</span></strong>を説明します。<br>構文は以下の通りです。</p>



<pre class="wp-block-verse"><strong>Workbooks("<span class="bold-red">ここに閉じたいブック名を記入</span>").Close</strong></pre>



<p>とてもシンプルですね。</p>



<p>では見本で<span class="bold-red">「見本.xlsx」</span>というブックを閉じるプログラムを見ていきましょう。<br>前提として<strong><span class="marker-under-blue">対象のブックが開いてあることが条件</span></strong>となります。</p>



<p>プログラムはこのようになります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Sub ブックを閉じる()</p><p>Workbooks(&#8220;<span class="bold-red">見本.xlsx</span>&#8220;).Close</p><p>End Sub</p></blockquote>



<p>こちらのプログラムで「<span class="bold-red">見本.xlsx</span>」のブックを閉じることができました。<br>結論としてブックを閉じる際に使用する<strong><span class="marker-under-red">「Close」はブック名で指示</span></strong>します。<br>これが原因でエラーが生じる場合もあります。<br>では、ブックを「close」で閉じる際のエラーの原因と対処法を見ていきましょう。</p>



<h2 class="wp-block-heading"><span id="toc2">&#x2b1b;︎closeのエラーの原因と対処法</span></h2>



<h3 class="wp-block-heading"><span id="toc3">・「実行時エラー&#8217;9&#8242;:インデックスが有効範囲にありません」について</span></h3>



<p>こちらはブック名で指定していない可能性があります。<br>よくある原因としては<strong><span class="marker-under-red">フルパスでファイルを開いて、そのフルパスを活用して「close」<br>することでエラーが生じてしまいます</span></strong>。</p>



<p>ではプログラムの例を見ていきましょう。<br>今回は「見本」ブックを開いて、処理を行い、閉じるプログラムです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Sub ブックを閉じる()</p><p>Dim FilePath As String</p><p>FilePath =<span class="bold-red"> &#8220;C:\excel\見本.xlsx&#8221;</span></p><p>Workbooks.Open FilePath</p><p></p><p>&#8216;ここに処理プログラム</p><p></p><p>Workbooks(<span class="bold-red">FilePath</span>).Close</p><p>End Sub</p></blockquote>



<p>一見問題無さそうですが実行したらこのようになります。</p>



<figure class="wp-block-image size-full is-resized"><img fetchpriority="high" decoding="async" src="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-3.png" alt="" class="wp-image-3384" width="373" height="174" srcset="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-3.png 486w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-3-300x140.png 300w" sizes="(max-width: 373px) 100vw, 373px" /></figure>



<p><strong><span class="marker-under-red">「実行時エラー&#8217;9&#8242;:インデックスが有効範囲にありません」というエラーが発生</span></strong>しました。</p>



<p>原因として<strong><span class="marker-under-red">ブックを開く際の参照と閉じる際の参照の違いに問題</span></strong>があります。<br>ブックを開く際の<strong><span class="marker-under">「Open」はフルパス</span></strong>でなければなりませんが<br>ブックを閉じる際の<strong><span class="marker-under">「close」はファイル名</span></strong>でなければなりません。</p>



<p>しかし、パスが繰り返し動作やセルに入力してあるパスを参照する際には<br>プログラムにファイル名は入力できませんよね。</p>



<p>ファイル名が限定される方は次の項目に飛んでください。</p>



<p></p>



<p>使用するのは<strong><span class="marker-under-blue">「Dir」</span></strong>になります。<br>機能としては<strong><span class="marker-under-blue">フルパスからファイル名を取得する</span></strong>ことができます。</p>



<p>では構文を見ていきましょう。</p>



<pre class="wp-block-verse"><strong>ファイル名＝Dir(<span class="bold-blue">フルパス</span>)</strong></pre>



<p>ではこちらを活用したプログラムはこのようになります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Sub ブックを閉じる()</p><p>Dim FilePath As String, CloseFileName</p><p>FilePath = &#8220;C:\excel\見本.xlsx&#8221;</p><p>Workbooks.Open FilePath</p><p></p><p>&#8216;ここに処理プログラム</p><p></p><p>CloseFileName = Dir(<span class="bold-blue">FilePath</span>)<br>Workbooks(CloseFileName).Close</p><p>End Sub</p></blockquote>



<p>それでは実行してみましょう。<br>「CloseFileName = Dir(FilePath)」の部分の変数「CloseFileName」にファイル名が<br>格納できているか見てみましょう。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="525" height="93" src="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-2.png" alt="" class="wp-image-3383" srcset="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-2.png 525w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-2-300x53.png 300w" sizes="(max-width: 525px) 100vw, 525px" /></figure>



<p><span class="marker-under">「C:\excel\見本.xlsx」のフルパスからファイル名のみを抽出できています。</span></p>



<p>これでファイル名で「close」するのでエラーが出なくなります。</p>



<p>また、「close」で設定したファイル名が合っていなくても同様のエラーとなります。</p>



<p>例えば閉じたいブック名に半角のスペースが入っただけでも<br>エラーになってしまいます。</p>



<p>正確なファイル名で「close」の指示ができるようにプログラムを作成してください。</p>



<h3 class="wp-block-heading"><span id="toc4">・プログラムが途中で停止、実行中のブックが閉じる</span></h3>



<p>こちらは実行中のプロシージャ（プログラム)のブックを閉じると<br>起こるエラーとなっています。</p>



<p>例えば、「ファイル A」というファイルからVBAを使用して<br>「ファイルB」というファイルを閉じようとします。</p>



<p>しかし誤って「ファイルA」を閉じるように設定すると<br><strong><span class="marker-under-red">プログラムを実行中のファイルAが閉じてしまうため<br>プログラムが途中で停止してしまう問題が発生します</span></strong>。</p>



<p>なので閉じるファイル名が正確か確認してみてください。</p>



<h2 class="wp-block-heading"><span id="toc5">&#x2b1b;︎補足　ブックを閉じる際の確認画面を表示させない方法</span></h2>



<p>ここからは補足になります。<br>編集したブックを「close」で閉じる指令を実行すると<strong><span class="marker-under">「’対象ファイル名’の変更内容を保存じますか？」</span></strong>というメッセージがでます。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="673" height="211" src="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-1.png" alt="" class="wp-image-3382" srcset="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-1.png 673w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-1-300x94.png 300w" sizes="(max-width: 673px) 100vw, 673px" /></figure>



<p><br>「Workbooks(ファイル名).Save」で１度保存した場合は問題ありませんが、保存しない場合は処理しないといけません。</p>



<p>しかし何度もブックを閉じるプログラムだと毎回確認ボタンを押さないといけないので面倒くさいですよね。<br>そこでブックを閉じる前に<strong><span class="marker-under-blue">「Application.DisplayAlerts = False」</span></strong>を実行することで、確認動作をスルーすることができます。<br>ブックを閉じた後は<strong><span class="marker-under-red">「Application.DisplayAlerts = True」</span></strong>で再度、確認メッセージが出るように設定することをオススメします。</p>



<p>では先ほどのプログラムに織り込んでみましょう。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Sub ブックを閉じる()</p><p>Dim FilePath As String, CloseFileName</p><p>FilePath = &#8220;C:\excel\見本.xlsx&#8221;</p><p>Workbooks.Open FilePath</p><p>&#8216;ここに処理プログラム</p><p>CloseFileName = Dir(FilePath)</p><p><span class="marker-under-blue"><strong>Application.DisplayAlerts = False</strong></span><br>Workbooks(CloseFileName).Close<br><strong><span class="marker-under-red">Application.DisplayAlerts = True</span></strong></p><p>End Sub</p></blockquote>



<p>これで「’対象ファイル名’の変更内容を保存じますか？」の確認メッセージをスルーすることが出来ます。</p>



<h2 class="wp-block-heading"><span id="toc6">&#x2b1b;︎まとめ</span></h2>



<p>いかがだったでしょうか。<br>ブックを経由してデータを取得したり入力したりする際に用いられる<br>「close」ですが、使用方法を間違えるとエラーが生じてしまいます。</p>



<p>ぜひ今回の記事を参考にして<br>エラーが出ないようなプログラムを作成してみてください。</p>



<p>それでは次回の記事でお会いしましょう。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dokugakuexcel.com/%e3%80%90%e3%83%9e%e3%82%af%e3%83%advba%e3%82%a8%e3%83%a9%e3%83%bc%e3%80%91%e3%83%96%e3%83%83%e3%82%af%e3%82%92close%e3%81%a7%e9%96%89%e3%81%98%e3%82%8c%e3%81%aa%e3%81%84%e3%80%8c%e3%82%a4%e3%83%b3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3380</post-id>	</item>
	</channel>
</rss>
