PDFからWordに変換する
概要
今回は、PDFファイル(*.pdf)をMicrosoft Wordのファイル(*.docx)に変換する方法をご紹介します。
Wordでは、PDFファイルを開いて編集したり、Wordファイルとして別名保存することができます。
この『PDFファイルを開く』『別名保存する』という操作を、スクリプトを使用して自動で行う方法を説明します。
PDFをWordに変換するスクリプト
簡単なVBスクリプトのサンプルは、以下のとおりです。
メモ帳などのエディターにソースコードをコピーして、「PDF2DOCX.vbs」などのファイル名で保存します。
使い方も簡単で、作成したスクリプトファイルのアイコンに、PDFファイルをドラッグ・アンド・ドロップするだけです。
例えば、「abc.pdf」という名前のファイルをドラッグ・アンド・ドロップした場合、「abc.pdf.docx」というファイルが作成されます。
| !Note |
|---|
|
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
上記のスクリプトは次のリンクからダウンロードできます。
なお、上記の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 |
|---|
| レイアウトの再現性は元データの作り方やバージョンに依存します。ご利用結果について、当社は一切の責任を負いません。 |
上記のスクリプトは次のリンクからダウンロードできます。
ライセンスについて
Microsoft Wordは、サーバー上ではなく、クライアントサイドでエンドユーザー自身が手動操作することを前提としたアプリケーションです。そのため、エラーなどのダイアログが表示される場合など、すべて対話スタイルよる手動操作で対応することを前提として開発されています。したがって、今回のようにプログラムから自動実行させる使い方は、サポートされていない場合が多くなっています。
ライセンスについても、以下のMicrosoft社のサイトで『サーバーサイド オートメーションを使用して、ライセンス認証されていないワークステーションに Office 機能を提供することは、ソフトウェア ライセンス条項 (EULA) では認められていません。』と記載されています。
https://support.microsoft.com/ja-jp/help/257757/considerations-for-server-side-automation-of-office
今回ご紹介したサンプルコードについてもクライアントサイドでの利用のみとなりますので、ご注意ください。
| !Note |
|---|
| ご利用結果について、当社は一切の責任を負いません。 |

