<?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>Word操作 | VBA・GAS・Pythonで仕事を楽しく効率化</title>
	<atom:link href="https://officevba.info/category/excelvba/word%E6%93%8D%E4%BD%9C/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</generator>

<image>
	<url>https://officevba.info/wp-content/uploads/2017/04/cropped-Excel_1-32x32.jpg</url>
	<title>Word操作 | 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>
		<item>
		<title>ExcelVBAでWordファイルをPDF化する</title>
		<link>https://officevba.info/excelvbawordtopdf/</link>
					<comments>https://officevba.info/excelvbawordtopdf/#respond</comments>
		
		<dc:creator><![CDATA[okumasahito]]></dc:creator>
		<pubDate>Mon, 29 Jun 2020 14:04:09 +0000</pubDate>
				<category><![CDATA[Word操作]]></category>
		<category><![CDATA[ExcelVBA]]></category>
		<category><![CDATA[PDF出力]]></category>
		<guid isPermaLink="false">http://officevba.info/?p=2147</guid>

					<description><![CDATA[目次 ファイルの数が多いと面倒な作業をVBAで自動化Excelのシートに対象のファイルを書き出す今回使用するワークシート作成したExcelVBAコードと実行手順について①ファイル名一覧の取得②PDFとして出力する際のファ [&#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-4" checked><label class="toc-title" for="toc-checkbox-4">目次</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">Excelのシートに対象のファイルを書き出す</a></li><li><a href="#toc3" tabindex="0">今回使用するワークシート</a></li><li><a href="#toc4" tabindex="0">作成したExcelVBAコードと実行手順について</a><ol><li><a href="#toc5" tabindex="0">①ファイル名一覧の取得</a></li><li><a href="#toc6" tabindex="0">②PDFとして出力する際のファイル名の記入</a></li><li><a href="#toc7" tabindex="0">③一覧に記載されているWordファイルを順にPDFとして出力する</a></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">ファイルの数が多いと面倒な作業をVBAで自動化</span></h2>
<p>最近仕事でWordのファイルを大量にPDFに変更する必要がありました。<br />
1つ2つくらいのファイルなら手作業で済ませるのですが、今回は50件行う必要があり、また他のタイミングでも継続的に業務として発生することが決まっていました。</p>
<p>そこで、（サラリーマンらしくこの作業は本当に必要あるのかは考えるのをやめて）VBAで自動化の方法を考えてみました。</p>
<h2><span id="toc2">Excelのシートに対象のファイルを書き出す</span></h2>
<p>WordのVBAは使いにくいですし、もともと大量のファイルを処理することが前提でしたので、ExcelのワークシートとExcelVBAを使用することにしています。</p>
<p>私の経験上この組み合わせはExcelのファイルを操作するだけでなく、色々な業務で使いやすいと思います。<br />
手順は下記の3ステップを想定しています。</p>
<li>①Excelのシートに対象とするファイル名とパスを書きだす</li>
<li>②出力するPDFのファイル名を設定する</li>
<li>③対象となるWordのファイルを開いて順にPDF化する</li>
<h2><span id="toc3">今回使用するワークシート</span></h2>
<p>今回使用するワークシートは下記の通りです。<br />
対象ファイルを特定のフォルダにまとめて格納しておけば一括でファイル名を取得できるようにしています。</p>
<p><a href="https://officevba.info/wp-content/uploads/2020/06/VBA148.jpg"><img decoding="async" src="https://officevba.info/wp-content/uploads/2020/06/VBA148-300x82.jpg" alt="" width="300" height="82" class="alignnone size-medium wp-image-2150" srcset="https://officevba.info/wp-content/uploads/2020/06/VBA148-300x82.jpg 300w, https://officevba.info/wp-content/uploads/2020/06/VBA148-700x192.jpg 700w, https://officevba.info/wp-content/uploads/2020/06/VBA148-768x211.jpg 768w, https://officevba.info/wp-content/uploads/2020/06/VBA148.jpg 1255w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<h2><span id="toc4">作成したExcelVBAコードと実行手順について</span></h2>
<h3><span id="toc5">①ファイル名一覧の取得</span></h3>
<p>まず①Wordファイル一覧を一括取得するExcelVBAコードは下記の通りです。<br />
実行するとファイルの選択ダイアログが開き、対象ファイルの一つを選択するとそのフォルダにあるWordファイルのパスとファイル名をA列に記入します。</p>
<div class="VBACode">Sub Wordファイル名一覧取得()<br />
<br />
<span class="VBA_Tab1">Dim FolderName As String  <span class="VBA_Comment">’文字列を入れる変数として「FolderName」を使う</span></span><br />
<span class="VBA_Tab1">Dim index As Integer  <span class="VBA_Comment">’数字を入れる変数として「index」を使う</span></span><br />
<span class="VBA_Tab1">Dim FileName As String  <span class="VBA_Comment">’文字列を入れる変数として「FileName」を使う</span></span><br />
<span class="VBA_Tab2">FolderName = Application.GetOpenFilename <span class="VBA_Comment">’ダイアログを用いて選択したファイルのパスをFolderNameとする①</span></span><br />
<span class="VBA_Tab1">Dim i</span><br />
<br />
<span class="VBA_Tab1">If FolderName = &#8220;False&#8221; Then  <span class="VBA_Comment">’FolderNameが選択されていなければ作業を終了する</span></span><br />
<span class="VBA_Tab2">Exit Sub</span><br />
<span class="VBA_Tab1">End If</span><br />
<br />
<span class="VBA_Tab1"><span class="VBA_Comment">’今のフォルダ名には選択したファイル名含まれているので、ファイル名の部分を切り取る作業。</span></span><br />
<span class="VBA_Tab1">index = InStrRev(FolderName, &#8220;&#8221;)  <span class="VBA_Comment">’フォルダ名部分の文字数をカウントする</span></span><br />
<span class="VBA_Tab1">FolderName = Left(FolderName, index) <span class="VBA_Comment">’ カウントした文字数までの部分を切り取ってフォルダ名とする</span></span><br />
<span class="VBA_Tab1">FileName = Dir(FolderName &#038; &#8220;*docx&#8221;)  <span class="VBA_Comment">’ フォルダの中に含まれるファイルを取り出す</span></span><br />
<span class="VBA_Tab1">i = 2</span><br />
<br />
<span class="VBA_Tab1">Do While FileName <> &#8220;&#8221;  <span class="VBA_Comment">’ ファイルがなくなるまで繰り返す</span></span><br />
<span class="VBA_Tab2">ThisWorkbook.ActiveSheet.Cells(i, 1) = FolderName &#038; FileName <span class="VBA_Comment">’ 変更を行う</span></span><br />
<span class="VBA_Tab2">i = i + 1</span><br />
<span class="VBA_Tab1">FileName = Dir() <span class="VBA_Comment">’</span></span><br />
<span class="VBA_Tab1">Loop</span><br />
<br />
End Sub</div>
<h3><span id="toc6">②PDFとして出力する際のファイル名の記入</span></h3>
<p>出力先フォルダとファイル名はC列に入力してから出力を開始します。<br />
ExcelのSubstitute関数やVBAのReplace関数を使って自動で表記することも可能です。</p>
<p>一例ですが、デスクトップにある「Wordファイル」というフォルダから同じくデスクトップにある「PDFファイル」というフォルダに拡張子以外の部分を同じファイル名で出力する場合にはC2セルに下記のように関数を入力しておきます。<br />
（「.docx」を「.pdf」に置換、「Wordファイル」を「PDFファイル」に置換しているだけです。）</p>
<li>=SUBSTITUTE(SUBSTITUTE(A2,&#8221;.docx&#8221;,&#8221;.pdf&#8221;),&#8221;Wordファイル&#8221;,&#8221;PDFファイル&#8221;)</li>
<h3><span id="toc7">③一覧に記載されているWordファイルを順にPDFとして出力する</span></h3>
<p>WordファイルをPDFとして出力するコードは下記の通りです。<br />
実行するとC列に記載したフォルダ・ファイル名でPDFが出力されます。</p>
<div class="VBACode">Sub Wordファイル一括PDF変換()<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 />
<br />
<span class="VBA_Tab1">i = 2</span><br />
<br />
<span class="VBA_Tab1">Do While Cells(i, 1) <> &#8220;&#8221; <span class="VBA_Comment">’ ファイルがなくなるまで繰り返す</span></span><br />
<span class="VBA_Tab2">FileName = Cells(i, 1)</span><br />
<span class="VBA_Tab2">Set objDoc = objWord.Documents.Open(FileName)</span><br />
<span class="VBA_Tab3">objDoc.ExportAsFixedFormat OutputFileName:=Cells(i, 3), ExportFormat:=wdExportFormatPDF</span><br />
<span class="VBA_Tab2">objDoc.Close</span><br />
<span class="VBA_Tab2">Set objDoc = Nothing</span><br />
<span class="VBA_Tab2">i = i + 1</span><br />
<span class="VBA_Tab1">Loop</span><br />
<br />
<span class="VBA_Tab1">objWord.Quit</span><br />
<span class="VBA_Tab1">Set objWord = Nothing</span><br />
<br />
End Sub</div>
]]></content:encoded>
					
					<wfw:commentRss>https://officevba.info/excelvbawordtopdf/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelVBAでWordの文章を編集する</title>
		<link>https://officevba.info/excelvba-wordoperation/</link>
					<comments>https://officevba.info/excelvba-wordoperation/#respond</comments>
		
		<dc:creator><![CDATA[okumasahito]]></dc:creator>
		<pubDate>Sun, 16 Dec 2018 05:58:25 +0000</pubDate>
				<category><![CDATA[Word操作]]></category>
		<guid isPermaLink="false">http://officevba.info/?p=1617</guid>

					<description><![CDATA[目次 ExcelでWordを操作するExcelでWordを操作する際の準備今回作成したExcelVBAの概要Wordファイルを差し込み印刷のように作成していくExcelVBAサンプルコード Excelで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-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ExcelでWordを操作する</a></li><li><a href="#toc2" tabindex="0">ExcelでWordを操作する際の準備</a></li><li><a href="#toc3" tabindex="0">今回作成したExcelVBAの概要</a></li><li><a href="#toc4" tabindex="0">Wordファイルを差し込み印刷のように作成していくExcelVBAサンプルコード</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">ExcelでWordを操作する</span></h2>
<p>Wordで少しずつ異なるたくさんの文書を作成する必要に迫られ、何とかExcelVBAを使って簡単にできないか考えてみました。<br />
あまり使用頻度は高くないかもしれませんが、せっかく作成してみたのでご紹介します。</p>
<h2><span id="toc2">ExcelでWordを操作する際の準備</span></h2>
<p>ExcelVBAを使ってWordを操作するには参照設定をする必要があります。<br />
VBEの画面で「ツール」→「参照設定」→「Microsoft Word 〇〇 Object Library」にチェックを入れるようにしてください。</p>
<p><a href="https://officevba.info/wp-content/uploads/2018/12/337ec7c63f9d46e6f17412d929812160.jpg"><img fetchpriority="high" decoding="async" src="https://officevba.info/wp-content/uploads/2018/12/337ec7c63f9d46e6f17412d929812160-300x226.jpg" alt="119-1参照設定" width="300" height="226" class="alignnone size-medium wp-image-1607" srcset="https://officevba.info/wp-content/uploads/2018/12/337ec7c63f9d46e6f17412d929812160-300x226.jpg 300w, https://officevba.info/wp-content/uploads/2018/12/337ec7c63f9d46e6f17412d929812160-320x242.jpg 320w, https://officevba.info/wp-content/uploads/2018/12/337ec7c63f9d46e6f17412d929812160.jpg 518w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<h2><span id="toc3">今回作成したExcelVBAの概要</span></h2>
<p>今回作成したExcelVBAはWordの差し込み印刷のようなイメージしています。<br />
テンプレートファイルの該当部分の文字を指定したものに置き換え、新たなファイルをどんどん作成していくツールとなっています。</p>
<p>差し込み印刷と異なる部分は2点です。</p>
<li>①差し込み元になるデータを含むExcelから起動できる</li>
<li>②データレコード1件につき1つずつファイルを作成する</li>
<p>差し込み印刷の設定・使い方を知らない人でも簡単に使えることをイメージして作成しました。<br />
（何となく自由度が低い気がして、私もあまり詳しく使いこなせていません。）</p>
<p>またWordの場合は通常、単語の位置・文字数・段落などで場所を指定するのですが、Excelのセルと異なり文字を入力すると位置が変わります。</p>
<p>私は下記のように入力項目に<>をつけて挿入する目印にしています。</p>
<p><a href="https://officevba.info/wp-content/uploads/2018/12/9e271c6fee2ed0bfe227d9339f5a28cd.jpg"><img loading="lazy" decoding="async" src="https://officevba.info/wp-content/uploads/2018/12/9e271c6fee2ed0bfe227d9339f5a28cd-300x255.jpg" alt="119-2Excel表" width="300" height="255" class="alignnone size-medium wp-image-1608" srcset="https://officevba.info/wp-content/uploads/2018/12/9e271c6fee2ed0bfe227d9339f5a28cd-300x255.jpg 300w, https://officevba.info/wp-content/uploads/2018/12/9e271c6fee2ed0bfe227d9339f5a28cd-768x652.jpg 768w, https://officevba.info/wp-content/uploads/2018/12/9e271c6fee2ed0bfe227d9339f5a28cd-700x594.jpg 700w, https://officevba.info/wp-content/uploads/2018/12/9e271c6fee2ed0bfe227d9339f5a28cd-320x272.jpg 320w, https://officevba.info/wp-content/uploads/2018/12/9e271c6fee2ed0bfe227d9339f5a28cd.jpg 1089w" sizes="(max-width: 300px) 100vw, 300px" /></a><a href="https://officevba.info/wp-content/uploads/2018/12/8ed7a38ba5403a6c5cd36f8c9b04377a.jpg"><img loading="lazy" decoding="async" src="https://officevba.info/wp-content/uploads/2018/12/8ed7a38ba5403a6c5cd36f8c9b04377a-300x276.jpg" alt="119-3Wordテンプレート" width="300" height="276" class="alignnone size-medium wp-image-1609" srcset="https://officevba.info/wp-content/uploads/2018/12/8ed7a38ba5403a6c5cd36f8c9b04377a-300x276.jpg 300w, https://officevba.info/wp-content/uploads/2018/12/8ed7a38ba5403a6c5cd36f8c9b04377a-768x705.jpg 768w, https://officevba.info/wp-content/uploads/2018/12/8ed7a38ba5403a6c5cd36f8c9b04377a-700x643.jpg 700w, https://officevba.info/wp-content/uploads/2018/12/8ed7a38ba5403a6c5cd36f8c9b04377a-320x294.jpg 320w, https://officevba.info/wp-content/uploads/2018/12/8ed7a38ba5403a6c5cd36f8c9b04377a.jpg 1091w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<h2><span id="toc4">Wordファイルを差し込み印刷のように作成していくExcelVBAサンプルコード</span></h2>
<p>Excelで記入した表に従って、項目を入力していくExcelVBAコードになります。<br />
項目はいくつあっても入力できる仕様になっています。</p>
<div class="VBACode">Declare Sub Sleep Lib &quot;kernel32&quot; (ByVal dwMilliseconds As Long)<br />
<br />
Sub Wordテンプレートに入力()<br />
<br />
<span class="VBA_Tab1">Dim FSO As Object</span><br />
<span class="VBA_Tab2">Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)</span><br />
<span class="VBA_Tab1">If FSO.FolderExists(ThisWorkbook.Path &amp; &quot;作成_案内&quot;) = False Then</span><br />
<span class="VBA_Tab2">FSO.CreateFolder ThisWorkbook.Path &amp; &quot;作成_案内&quot;</span><br />
<span class="VBA_Tab1">End If</span><br />
<br />
<span class="VBA_Tab1">Set FSO = Nothing</span><br />
<br />
<span class="VBA_Tab1">Dim wdApp As Object</span><br />
<span class="VBA_Tab2">Set wdApp = CreateObject(&quot;Word.Application&quot;)</span><br />
<span class="VBA_Tab1">Dim i, k</span><br />
<span class="VBA_Tab1">With wdApp</span><br />
<br />
<span class="VBA_Tab1">i = 2</span><br />
<span class="VBA_Tab1">Do Until Cells(i, 1) = &quot;&quot;</span><br />
<br />
<span class="VBA_Tab2">k = 1</span><br />
<span class="VBA_Tab2">Do Until Cells(i, k) = &quot;&quot;</span><br />
<br />
<span class="VBA_Tab3">.Visible = True</span><br />
<span class="VBA_Tab3"><span class="VBA_Comment">’このファイルと同じフォルダにあるテンプレートファイルを開く</span></span><br />
<span class="VBA_Tab3">.Documents.Open (ThisWorkbook.Path &amp; &quot;案内_テンプレート.docx&quot;)</span><br />
<span class="VBA_Tab3">Sleep 1000 <span class="VBA_Comment">’①待ち時間を入れないとエラーになる場合があります</span></span><br />
<br />
<span class="VBA_Tab3">With .ActiveDocument.Content.Find</span><br />
<span class="VBA_Tab4">.Text = &quot;&lt;&quot; &amp; Cells(1, k).Text &amp; &quot;&gt;&quot;</span><br />
<span class="VBA_Tab4">.Execute Replace:=wdReplaceAll, replacewith:=Cells(i, k).Text</span><br />
<span class="VBA_Tab3">End With</span><br />
<br />
<span class="VBA_Tab2">k = k + 1</span><br />
<span class="VBA_Tab2">Loop</span><br />
<br />
<span class="VBA_Tab2"><span class="VBA_Comment">’②Excelセル内の改行をWordの改行に揃える</span></span><br />
<span class="VBA_Tab2">With .ActiveDocument.Content.Find</span><br />
<span class="VBA_Tab3">.Text = vbLf</span><br />
<span class="VBA_Tab3">.Execute Replace:=wdReplaceAll, replacewith:=vbCr</span><br />
<span class="VBA_Tab2">End With</span><br />
<br />
<span class="VBA_Tab2">.Documents(.Documents.Count).SaveAs2 Filename:=ThisWorkbook.Path &amp; &quot;作成_案内案内_&quot; &amp; Replace(Replace(Cells(i, 2), &quot; &quot;, &quot;&quot;), &quot;　&quot;, &quot;&quot;) &amp; &quot;.docx&quot;</span><br />
<span class="VBA_Tab2">.Documents(.Documents.Count).Close</span><br />
<br />
<span class="VBA_Tab1">i = i + 1</span><br />
<span class="VBA_Tab1">Loop</span><br />
<span class="VBA_Tab1"></span><br />
<span class="VBA_Tab1">End With</span><br />
<span class="VBA_Tab1">wdApp.Quit</span><br />
<span class="VBA_Tab1">Set wdApp = Nothing</span><br />
<br />
End Sub</div>
<p>作成するのに工夫が必要だったポイントは下記2点です。</p>
<li>①Wordのファイルを開いて操作を始めるのに同期がうまくいかないのか、エラーになることがあります。</li>
<p>他のサイトでも書いている人がいましたが、Sleepを入れて待機時間を作ると解決できました。</p>
<li>②ExcelとWordの改行の文字が異なります。</li>
<p>Excelは「vbLf」、Wordは「vbCr」もしくは「Chr(11)」ですのでこの部分の変更は最後に行う必要があります。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://officevba.info/excelvba-wordoperation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
