<?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://dokugakuexcel.com/tag/%E4%BB%96%E3%83%96%E3%83%83%E3%82%AF/feed/" rel="self" type="application/rss+xml" />
	<link>https://dokugakuexcel.com</link>
	<description>初心者から中級者までシステム・関数・VBAを伝授します</description>
	<lastBuildDate>Sun, 16 Oct 2022 14:19:08 +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>他ブック  |  独学エクセル塾</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】別・他のブックのマクロ・プロシージャを実行する方法！ブックが閉じてあっても対応可能</title>
		<link>https://dokugakuexcel.com/%e3%80%90%e3%83%9e%e3%82%af%e3%83%advba%e3%80%91%e5%88%a5%e3%83%bb%e4%bb%96%e3%81%ae%e3%83%96%e3%83%83%e3%82%af%e3%81%ae%e3%83%9e%e3%82%af%e3%83%ad%e3%83%bb%e3%83%97%e3%83%ad%e3%82%b7%e3%83%bc/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2580%2590%25e3%2583%259e%25e3%2582%25af%25e3%2583%25advba%25e3%2580%2591%25e5%2588%25a5%25e3%2583%25bb%25e4%25bb%2596%25e3%2581%25ae%25e3%2583%2596%25e3%2583%2583%25e3%2582%25af%25e3%2581%25ae%25e3%2583%259e%25e3%2582%25af%25e3%2583%25ad%25e3%2583%25bb%25e3%2583%2597%25e3%2583%25ad%25e3%2582%25b7%25e3%2583%25bc</link>
					<comments>https://dokugakuexcel.com/%e3%80%90%e3%83%9e%e3%82%af%e3%83%advba%e3%80%91%e5%88%a5%e3%83%bb%e4%bb%96%e3%81%ae%e3%83%96%e3%83%83%e3%82%af%e3%81%ae%e3%83%9e%e3%82%af%e3%83%ad%e3%83%bb%e3%83%97%e3%83%ad%e3%82%b7%e3%83%bc/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[matsu]]></dc:creator>
		<pubDate>Tue, 20 Sep 2022 14:58:05 +0000</pubDate>
				<category><![CDATA[基礎知識]]></category>
		<category><![CDATA[マクロVBA]]></category>
		<category><![CDATA[実行]]></category>
		<category><![CDATA[Application.Run]]></category>
		<category><![CDATA[他ブック]]></category>
		<category><![CDATA[別ブック]]></category>
		<guid isPermaLink="false">https://dokugakuexcel.com/?p=3500</guid>

					<description><![CDATA[マクロVBAを実行するにあたり、モジュールやシート、ブックなど様々な場所にマクロを記録・作成することができます。 通常だと、マクロを実行する際には対象のシートに記入してあるプログラム（プロシージャ）を実行すると思いますが [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>マクロVBAを実行するにあたり、モジュールやシート、ブックなど様々な場所に<br>マクロを記録・作成することができます。</p>



<p>通常だと、マクロを実行する際には対象のシートに記入してあるプログラム（プロシージャ）を実行すると思いますが、<br><strong><span class="marker-under">「別ブックのマクロを実行したい」</span></strong>という場面があったとします。</p>



<p>今回はそのような場合に対応できる「別ブックのマクロを実行する方法」についてまとめています。</p>



<p><strong><span class="marker-under">対象のブックを開いていなくても実行できる</span></strong>ので是非参考にしてみてください。</p>



<p>それでは見ていきましょう。</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;︎忙しい人向けのコピぺ用プログラム</a></li><li><a href="#toc3" tabindex="0">&#x2b1b;︎別・他のブックに記録されているマクロを実行する</a></li><li><a href="#toc4" tabindex="0">&#x2b1b;︎実行後のファイルを閉じる方法について</a></li><li><a href="#toc5" tabindex="0">&#x2b1b;︎補足資料</a></li><li><a href="#toc6" tabindex="0">&#x2b1b;︎公式の説明</a></li><li><a href="#toc7" tabindex="0">&#x2b1b;︎まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">&#x2b1b;︎構文の仕組み</span></h2>



<pre class="wp-block-verse"><strong><span class="fz-20px">Application.Run "'<span class="bold-red">マクロが入っているブックのフルパス</span>'!<span class="bold-blue">モジュール名</span>.<span class="bold-green">実行したいマクロ名称</span>"</span></strong></pre>



<p><span class="bold-red">フルパス</span>とは<strong><span class="marker-under-red">ファイルの保存先の情報＋ファイル名</span></strong>になります。<br>例えば「PC内のローカルディスクCの中の検証用ファイルの中のブックA.xlsxm」の場合は<br>「C:\検証ファイル\ブックA.xlsm」のようになります。</p>



<h2 class="wp-block-heading"><span id="toc2">&#x2b1b;︎忙しい人向けのコピぺ用プログラム</span></h2>



<pre class="wp-block-verse">Sub ブックAのプログラムを実行()

Dim FilePath, ModuleName, ProgramName, FileName

<span class="bold-red">FilePath</span> = "マクロが入っているブックのフルパス"
<span class="bold-blue">ModuleName</span> = "モジュール名"
<span class="bold-green">ProgramName</span> = "実行したいマクロ名称"
FileName = Dir(FilePath)

Application.Run "'" &amp; FilePath &amp; "'!" &amp; ModuleName &amp; "." &amp; ProgramName

Application.DisplayAlerts = False
Workbooks(FileName).Close
Application.DisplayAlerts = True
End Sub</pre>



<h2 class="wp-block-heading"><span id="toc3">&#x2b1b;︎別・他のブックに記録されているマクロを実行する</span></h2>



<p>では実際に別・他のブックに記録されているマクロを実行してみましょう。</p>



<p>再度構文を見てみましょう。</p>



<pre class="wp-block-verse"><strong><span class="fz-20px">Application.Run "'<span class="bold-red">マクロが入っているブックのフルパス</span>'!<span class="bold-blue">モジュール名</span>.<span class="bold-green">実行したいマクロ名称</span>"</span></strong></pre>



<p>では見本を元に構文に当てはめていきたいと思います。</p>



<p>まず、見本として「<span class="bold-red">ローカルディスクC内の検証用ファイルのブックA</span>」というファイルにある「<span class="bold-blue">Module1</span>」の「<span class="bold-green">文字の入力</span>」というマクロがあったとします。</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="240" src="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-70-1024x240.png" alt="" class="wp-image-3501" srcset="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-70-1024x240.png 1024w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-70-300x70.png 300w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-70-768x180.png 768w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-70.png 1026w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>「文字の入力」というマクロの内容はこのようなものです。</p>



<pre class="wp-block-verse"><strong>Sub <span class="bold-green">文字の入力</span>()
Cells(1, 1) = "このプログラムはブックAの文字の入力というプログラムです"
End Sub</strong></pre>



<p>簡単ですね。<br>A1に「このプログラムはブックAの文字の入力というプログラムです」と入力するプログラムです。</p>



<p>まず、構文の「マクロが入っているブックのフルパス」から埋めていきましょう。</p>



<p><span class="bold-red">フルパス</span>とはファイルの<strong><span class="marker-under-red">保存先の情報＋ファイル名</span></strong>になります。<br>例えば「PC内のローカルディスクCの中の検証用ファイルの中のブックA.xlsx 」の場合は<br>「<strong><span class="marker-under-red">C:\検証ファイル\ブックA.xlsm</span></strong>」のようになります。</p>



<p>次に構文の「<span class="bold-blue">モジュール名</span>」についてです。<br>こちらに関してはプログラムをどこに記録しているか指定します。<br>通常のデフォルトであれば「Module」のあとに数値が入力されてありますが、<br>名前をつけている場合もありますよね。</p>



<p>今回の見本では「<strong><span class="marker-under-blue">Module1</span></strong>」が対象となります。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="238" src="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-71-1024x238.png" alt="" class="wp-image-3502" srcset="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-71-1024x238.png 1024w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-71-300x70.png 300w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-71-768x179.png 768w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-71.png 1027w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>最後に構文の「<span class="bold-green">実行したいマクロ名</span>」をみていきましょう。<br>こちらは簡単です。実行したい「プロシージャ名」を入力するのですが、<br>「Sub」の後に続く文字が対象です。</p>



<p>見本では「文字の入力」というプロシージャ名なので「<strong><span class="bold-green">文字の入力</span></strong>」が当てはまります。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="238" src="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-72-1024x238.png" alt="" class="wp-image-3503" srcset="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-72-1024x238.png 1024w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-72-300x70.png 300w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-72-768x179.png 768w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-72.png 1027w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>ではプログラムに落とし込んでみましょう。<br>今回は「ブックB」というファイルにプログラムを入力したいと思います。</p>



<p>ではプログラムが入っている「ブックA」を閉じた状態でプログラムを実行してみます。<br>結果はこのようになりました。</p>



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



<p>A1に「このプログラムはブックAの文字の入力というプログラムです」と入力されています。<br>このことから自動で「ブックA」を開いて、「文字の入力」というプログラムが実行されたことがわかります。</p>



<p>このように「フルパス」「モジュール」「マクロ名」を入力して別・他のブックのマクロを<br>実行することができました。</p>



<h2 class="wp-block-heading"><span id="toc4">&#x2b1b;︎実行後のファイルを閉じる方法について</span></h2>



<p>先程のプログラムは実行すると、<strong><span class="marker-under">呼び出したマクロを管理しているファイルが開いたまま</span></strong>になります。<br>見本では「ブックA」を開いて実行しているので「ブックA」が開いたままです。</p>



<p>そのまま開いたブックを活用する場合は問題ありませんが、<br>多くの場合はプログラムを実行した後は閉じるのではないかなと思います。</p>



<p>そこで<strong><span class="marker-under">プログラム実行後は使用したブックを閉じるプログラム</span></strong>を紹介します。</p>



<p>まず、ポイントととして<strong><span class="marker-under-red">ブックを閉じる際はファイル名のみ</span></strong>となります。<br>つまり先程フルパスで入力した中からファイル名を抜き出す必要があります。</p>



<p>そこで使用するのが<strong><span class="marker-under-red">「Dir」</span></strong>になります。<br>Dirについて詳しく確認したい場合は下記記事を参考にしてみてください☟</p>



<p><a href="https://dokugakuexcel.com/%e3%80%90%e3%83%9e%e3%82%af%e3%83%advba%e3%80%91dir%e9%96%a2%e6%95%b0%e3%81%a7%e6%8c%87%e5%ae%9a%e3%83%95%e3%82%a9%e3%83%ab%e3%83%80%e3%81%8b%e3%82%89%e5%af%be%e8%b1%a1%e3%83%95%e3%82%a1%e3%82%a4/">【マクロVBA】Dir関数で指定フォルダから対象ファイル・ブックが存在するか確認、処理する！一覧も可 ► 独学エクセル塾 (dokugakuexcel.com)</a></p>



<p>では使用方法を見てみましょう。</p>



<pre class="wp-block-verse"><strong><span class="bold-red">変数</span> = Dir(<span class="bold-green">フルパス</span>)</strong></pre>



<p>これで変数にファイル名のみ抽出することができます。<br>では先程のプログラムに合わせてみましょう。</p>



<p>結果はこのようになります。</p>



<pre class="wp-block-verse">Sub ブックAのプログラムを実行()
Dim FileName As String
<span class="bold-red">FileName</span> = Dir("<span class="bold-green">C:\検証ファイル\ブックA.xlsm</span>")
Application.Run "'C:\検証ファイル\ブックA.xlsm'!Module1.文字の入力"
Application.DisplayAlerts = False
Workbooks(<span class="bold-red">FileName</span>).Close
Application.DisplayAlerts = True
End Sub</pre>



<p>これにより、プログラム実行で使用したブックは閉じて終了することができます。</p>



<p>「Application.DisplayAlerts 」はブックを閉じる際に確認のメッセージボックスが表示されるので<br>表示させないように「False」にします。ブックを閉じた後は通常の状態に戻すため<br>「True」にしています。</p>



<h2 class="wp-block-heading"><span id="toc5">&#x2b1b;︎補足資料</span></h2>



<p>今回した構文は<br>Application.Run &#8220;&#8216;マクロが入っているブックのフルパス&#8217;!モジュール名.実行したいマクロ名称&#8221;<br>のように<strong><span class="marker-under">「フルパス」を使用</span></strong>していました。</p>



<p>しかし、<strong><span class="marker-under-red">指定フォルダに入れている場合や既に対象ブックが開いている場合は<br>ファイル名のみでも機能</span></strong>します。</p>



<p>ただ、問題が1つあります。<br>例えばあるフォルダに入っている「ブックA」というブックと、デスクトップに保存されている「ブックA」などの<br>ように、<strong><span class="marker-under">ファイル名が重複する可能性</span></strong>があります。<br>フォルダ内での同じ名前のブックは保存できませんが、フォルダが異なる場合は同じ名前のブック名で保存できます。</p>



<p>上記を踏まえるとやはり<strong><span class="marker-under">フルパスでの指定が確実</span></strong>だと思います。</p>



<p>ちなみにファイル名のみのプログラムで読み取るブックに優先順位があるか調査しましたが、<br>規則性は見られませんでした。</p>



<h2 class="wp-block-heading"><span id="toc6">&#x2b1b;︎公式の説明</span></h2>



<p>わかりやすいように説明したため公式と使用する語句が異なりますが<br>マイクロソフト公式の説明については下記のリンクを参照してください。☟</p>



<p><a href="https://learn.microsoft.com/ja-jp/office/vba/api/access.application.run">Application.Run メソッド (Access) | Microsoft Learn</a></p>



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



<p>いかがだったでしょうか。<br>本内容を活用すると他のブックのマクロを実行できるようになります。</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%80%91%e5%88%a5%e3%83%bb%e4%bb%96%e3%81%ae%e3%83%96%e3%83%83%e3%82%af%e3%81%ae%e3%83%9e%e3%82%af%e3%83%ad%e3%83%bb%e3%83%97%e3%83%ad%e3%82%b7%e3%83%bc/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3500</post-id>	</item>
	</channel>
</rss>
