XML活用講座

PDFからWordに変換する





概要

今回は、PDFファイル(*.pdf)をMicrosoft Wordのファイル(*.docx)に変換する方法をご紹介します。
Wordでは、PDFファイルを開いて編集したり、Wordファイルとして別名保存することができます。
この『PDFファイルを開く』『別名保存する』という操作を、スクリプトを使用して自動で行う方法を説明します。

 

PDFをWordに変換するスクリプト

簡単なVBスクリプトのサンプルは、以下のとおりです。

メモ帳などのエディターにソースコードをコピーして、「PDF2DOCX.vbs」などのファイル名で保存します。

使い方も簡単で、作成したスクリプトファイルのアイコンに、PDFファイルをドラッグ・アンド・ドロップするだけです。
例えば、「abc.pdf」という名前のファイルをドラッグ・アンド・ドロップした場合、「abc.pdf.docx」というファイルが作成されます。

!Note
  1. バックグランドで起動させるため、Wordの画面は表示されません。
  2. PDFをWordで開く際に、確認ダイアログが表示されるのは、Wordの仕様によるものです。
Dim FSO, wShell, dPath, rPath, wPath

If wscript.arguments.count > 0 Then
	If CreateObject("Scripting.FileSystemObject").FileExists ( wscript.arguments.item(0) ) = True Then
		Call main ( wscript.arguments.item(0) )
	End If
End If
Sub main(f)
	Dim oWord, oDoc
	Set oWord = CreateObject("Word.Application")
	oWord.Visible = FALSE
	oWord.Application.DisplayAlerts = FALSE
	oWord.DisplayAlerts = FALSE
	sExt  = LCase(MID(f, InStrRev(f, ".") + 1))
	If sExt = "pdf" Then
		Set oDoc = oWord.Documents.OpenNoRepairDialog(f)
		oWord.ActiveDocument.SaveAs f & ".docx", 12
	End If
	oDoc.Close
	Set oDoc = Nothing
	oWord.Quit
	Set oWord = Nothing
End Sub

上記のスクリプトは次のリンクからダウンロードできます。

pdf2word1.vbs

 

なお、上記のIf文を以下のように変更すると、PDFファイル(*.pdf)はWordファイル(*.docx)へ、Wordファイル(*.docx)はPDFファイル(*.pdf)へと、それぞれ変換できます。また、旧形式のWordファイル(*.doc)は新形式のWordファイル(*.docx)に変換できます。
 

Dim FSO, wShell, dPath, rPath, wPath

If wscript.arguments.count > 0 Then
	If CreateObject("Scripting.FileSystemObject").FileExists ( wscript.arguments.item(0) ) = True Then
		Call main ( wscript.arguments.item(0) )
	End If
End If
Sub main(f)
	Dim oWord, oDoc
	Set oWord = CreateObject("Word.Application")
	oWord.Visible = FALSE
	oWord.Application.DisplayAlerts = FALSE
	oWord.DisplayAlerts = FALSE
	sExt  = LCase(MID(f, InStrRev(f, ".") + 1))
	If sExt = "pdf" Then
		Set oDoc = oWord.Documents.OpenNoRepairDialog(f)
		oWord.ActiveDocument.SaveAs f & ".docx", 12
	ElseIf sExt = "docx" Then
		Set oDoc = oWord.Documents.OpenNoRepairDialog(f)
		oWord.ActiveDocument.SaveAs f & ".pdf", 17
	ElseIf sExt = "doc" Then
		Set oDoc = oWord.Documents.OpenNoRepairDialog(f)
		oWord.ActiveDocument.SaveAs f & "x", 12
	End If
	oDoc.Close
	Set oDoc = Nothing
	oWord.Quit
	Set oWord = Nothing
End Sub

 

!Note
レイアウトの再現性は元データの作り方やバージョンに依存します。ご利用結果について、当社は一切の責任を負いません。

 

上記のスクリプトは次のリンクからダウンロードできます。

pdf2word2.vbs

 

ライセンスについて

Microsoft Wordは、サーバー上ではなく、クライアントサイドでエンドユーザー自身が手動操作することを前提としたアプリケーションです。そのため、エラーなどのダイアログが表示される場合など、すべて対話スタイルよる手動操作で対応することを前提として開発されています。したがって、今回のようにプログラムから自動実行させる使い方は、サポートされていない場合が多くなっています。

ライセンスについても、以下のMicrosoft社のサイトで『サーバーサイド オートメーションを使用して、ライセンス認証されていないワークステーションに Office 機能を提供することは、ソフトウェア ライセンス条項 (EULA) では認められていません。』と記載されています。

https://support.microsoft.com/ja-jp/help/257757/considerations-for-server-side-automation-of-office

今回ご紹介したサンプルコードについてもクライアントサイドでの利用のみとなりますので、ご注意ください。

 

!Note
ご利用結果について、当社は一切の責任を負いません。

 



ページTOPへ