<?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>PDF | VBA・GAS・Pythonで仕事を楽しく効率化</title>
	<atom:link href="https://officevba.info/tag/pdf/feed/" rel="self" type="application/rss+xml" />
	<link>https://officevba.info</link>
	<description>仕事の役に立つVBA・GAS・Pythonのコードを紹介していきます。</description>
	<lastBuildDate>Sat, 31 Jan 2026 12:18:58 +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>PDF | VBA・GAS・Pythonで仕事を楽しく効率化</title>
	<link>https://officevba.info</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Wordファイルの特定のページをPDF化するExcelVBA</title>
		<link>https://officevba.info/excelvbawordtopdf2/</link>
					<comments>https://officevba.info/excelvbawordtopdf2/#respond</comments>
		
		<dc:creator><![CDATA[okumasahito]]></dc:creator>
		<pubDate>Sun, 19 Jul 2020 05:44:03 +0000</pubDate>
				<category><![CDATA[Word操作]]></category>
		<category><![CDATA[ExcelVBA]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[Word]]></category>
		<guid isPermaLink="false">http://officevba.info/?p=2165</guid>

					<description><![CDATA[目次 Word→PDFの繰り返しを自動化して楽にするWordファイルを分割してPDFにする手順作成したExcelワークシート作成したExcelVBAコード1.対象ファイルの取得（①）2.連続PDF化の実行（④） Word [&#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">Word→PDFの繰り返しを自動化して楽にする</a></li><li><a href="#toc2" tabindex="0">Wordファイルを分割してPDFにする手順</a></li><li><a href="#toc3" tabindex="0">作成したExcelワークシート</a></li><li><a href="#toc4" tabindex="0">作成したExcelVBAコード</a><ol><li><a href="#toc5" tabindex="0">1.対象ファイルの取得（①）</a></li><li><a href="#toc6" tabindex="0">2.連続PDF化の実行（④）</a></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">Word→PDFの繰り返しを自動化して楽にする</span></h2>
<p>以前に<a href="https://officevba.info/excelvbawordtopdf/">WordをPDFにするExcelVBAのコード</a>をご紹介しましたが、その時のコードはWordファイルの全ページをPDFにするものでした。</p>
<p>今回は同僚から「300ページくらいあるWordの一つのファイルを3-4ページ位ごとに分割してPDFにするのに何か楽にする方法がないか」と相談があり、負担を軽くするためのコードをk考えてみました。</p>
<h2><span id="toc2">Wordファイルを分割してPDFにする手順</span></h2>
<p>今回のツールもExcelVBAを使用して作成することにしました。<br />
まず対象となるWordファイルを開いて、指定したページごとに区切ってPDF化していくのを繰り返すフローを想定しています。</p>
<p>全ページをPDF化してそこからPDFファイルを分割する方法も考えましたが、PDFを分割するソフトが必要なのと、VBAでの完全自動化が難しそうだったのでやめました。<br />
（他のプログラムだと簡単にできるのかもしれませんが。）</p>
<h2><span id="toc3">作成したExcelワークシート</span></h2>
<p>今回作成したツールを使用するために必要な情報は下記のようにワークシートに記載するようにしています。</p>
<p>①対象フォルダ名・対象ファイル名を取得し、②変更後のPDFファイル名を記入、③印刷の開始位置、終了位置を必要な行だけ記入して、④PDF出力すると元ファイルと同じフォルダに作成したPDFファイルが格納されるフローとなります。</p>
<p><a href="https://officevba.info/wp-content/uploads/2020/07/vba150.jpg"><img decoding="async" src="https://officevba.info/wp-content/uploads/2020/07/vba150-300x76.jpg" alt="vba150" width="300" height="76" class="alignnone size-medium wp-image-2164" srcset="https://officevba.info/wp-content/uploads/2020/07/vba150-300x76.jpg 300w, https://officevba.info/wp-content/uploads/2020/07/vba150-700x178.jpg 700w, https://officevba.info/wp-content/uploads/2020/07/vba150-768x195.jpg 768w, https://officevba.info/wp-content/uploads/2020/07/vba150.jpg 1059w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<h2><span id="toc4">作成したExcelVBAコード</span></h2>
<h3><span id="toc5">1.対象ファイルの取得（①）</span></h3>
<p>対象ファイルをパス含めて手入力しても良いのですが、手間なのでファイルを選択すると自動で記入されるようにしてみました。<br />
下記のコードを実行すると、選択したファイルについて、A2セルにフォルダ名・A4セルにファイル名が入ります。</p>
<div class="VBACode">Sub Wordファイル名パス取得()<br />
<br />
<span class="VBA_Tab1">Dim FolderName As String</span><br />
<span class="VBA_Tab1">Dim FileName As String  <span class="VBA_Comment">’文字列を入れる変数として「FileName」を使う</span></span><br />
<span class="VBA_Tab2">FileName = Application.GetOpenFilename <span class="VBA_Comment">’ダイアログを用いて選択したファイルのフルパスを取得</span></span><br />
<br />
<span class="VBA_Tab1">FolderName = Left(FileName, InStrRev(FileName, &#8220;&#8221;) － 1)  <span class="VBA_Comment">’フォルダ名とファイル名に分離</span></span><br />
<span class="VBA_Tab1">FileName = Mid(FileName, InStrRev(FileName, &#8220;&#8221;) + 1)</span><br />
<br />
<span class="VBA_Tab1">ThisWorkbook.ActiveSheet.Cells(2, 1) = FolderName  <span class="VBA_Comment">’セルに記入</span></span><br />
<span class="VBA_Tab1">ThisWorkbook.ActiveSheet.Cells(4, 1) = FileName</span><br />
<br />
End Sub</div>
<h3><span id="toc6">2.連続PDF化の実行（④）</span></h3>
<p>連続PDF化のコードは下記の通りです。</p>
<p>実行前に②出力するファイル名を指定することと、③PDF化対象のページを指定しておく必要があります。</p>
<div class="VBACode">Sub wordファイルページ指定して印刷()<br />
<br />
<span class="VBA_Tab1">Dim objWord As Word.Application</span><br />
<span class="VBA_Tab2">Set objWord = CreateObject(&#8220;Word.Application&#8221;)</span><br />
<span class="VBA_Tab2">objWord.Visible = True</span><br />
<br />
<span class="VBA_Tab1">Dim objDoc As Word.Document</span><br />
<br />
<span class="VBA_Tab1">Dim FileName As String</span><br />
<span class="VBA_Tab1">Dim i</span><br />
<span class="VBA_Tab1">Dim 出力FileName As String</span><br />
<br />
<span class="VBA_Tab1"><span class="VBA_Comment">’出力ファイル名の設定</span></span><br />
<span class="VBA_Tab1"><span class="VBA_Comment">’拡張子が記入されていてもなくても対応できるように一旦削除</span></span><br />
<br />
<span class="VBA_Tab1">出力FileName = Cells(2, 1) &#038; &#8220;&#8221; &#038; Cells(4, 1)</span><br />
<span class="VBA_Tab1">出力FileName = Replace(出力FileName, &#8220;.pdf&#8221;, &#8220;&#8221;)</span><br />
<br />
<span class="VBA_Tab1">FileName = Cells(2, 1) &#038; &#8220;&#8221; &#038; Cells(4, 1)</span><br />
<span class="VBA_Tab1">Set objDoc = objWord.Documents.Open(FileName)</span><br />
<br />
<span class="VBA_Tab1">i = 7</span><br />
<span class="VBA_Tab1">Do While Cells(i, 1) <> &#8220;&#8221; <span class="VBA_Comment">’ 印刷対象のページがなくなるまで実行</span></span><br />
<span class="VBA_Tab3">objDoc.ExportAsFixedFormat OutputFileName:=出力FileName &#038; &#8220;-&#8221; &#038; Format(i － 6, &#8220;000&#8221;) &#038; &#8220;.pdf&#8221;, ExportFormat:=wdExportFormatPDF, _</span><br />
<span class="VBA_Tab5">    Range:=wdExportFromTo, From:=Cells(i, 1), To:=Cells(i, 3)</span><br />
<span class="VBA_Tab1">i = i + 1</span><br />
<span class="VBA_Tab1">Loop</span><br />
<br />
<span class="VBA_Tab1">objDoc.Close</span><br />
<span class="VBA_Tab1">Set objDoc = Nothing</span><br />
<br />
<span class="VBA_Tab1">objWord.Quit</span><br />
<span class="VBA_Tab1">Set objWord = Nothing</span><br />
<br />
End Sub</div>
<p>「ExportAsFixedFormat」の引数「Range」「From」「To」を指定することで印刷（PDF化）範囲を設定します。<br />
設定内容は下記の通りです。</p>
<li>Range:=wdExportFromTo　範囲指定の場合この記述が必須になります。</li>
<li>From:=Cells(i, 1)　各行の設定開始ページ</li>
<li>To:=Cells(i, 3)　 各行の設定終了ページ</li>
]]></content:encoded>
					
					<wfw:commentRss>https://officevba.info/excelvbawordtopdf2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
