変換したいと思った理由
事務の業務では、PDFで帳票や書類やなにかが届きます。
その帳票をExcelに変換して、中身をチェックしたりいろんなことをします。
変換作業はAdobeAcrobatでやっています。
でもこれをたくさんファイルがあるときにやるのはたいへんだし、時間もかかるので
フォルダに置いてあるたくさんのPDFの帳票をいっぺんに変換してくれないかなあ
と思ったのです。
作ったもの(PDFファイルをExcelに変換する)
このvbsファイルを置いたフォルダにPDFがあったら、それを全部Excelに変換します。
変換済のPDFは「済」、変換したExcelファイルは「excel」フォルダに入ります。
いろいろ見い見い書いたので、たぶん無駄が多いかも……
Option Explicit
Dim rtnCode 'As String
Dim objFS 'As FileSystemObject
set objFS = CreateObject("Scripting.FileSystemObject")
Dim filepath 'As String
filepath = objFS.getParentFolderName(WScript.ScriptFullName)
Dim myFolder 'As Scripting.Folder
Set myFolder = objFS.GetFolder(filepath)
Dim myFolderFiles 'As Scripting.Files
Set myFolderFiles = myFolder.Files
Dim myFolderFile 'As Scripting.File
For Each myFolderFile In myFolderFiles
'PDFファイルなら変換する(ちがうやつはとばす)
If objFS.GetExtensionName(myFolderFile) = "pdf" Then
rtnCode = PDFexport(myFolderFile.Name, filepath, "xlsx")
End If
Next
Set objFS = Nothing
MsgBox "終わりです"
'PDF→Excel
Function PDFexport(ByVal fileName, ByVal path, ByVal ext)
Dim objJS 'As Object
Dim fullpath 'As String
Dim fullpathPDF 'As String
Dim fullpathExl 'As String
fullpath = path & "\" & fileName
fullpathPDF = path & "\済\"
fullpathExl = path & "\excel\" & fileName
Dim savefileName 'As String
Dim exportFilter 'As String
Const exportFilterxlsx = "com.adobe.acrobat.xlsx"
With CreateObject("AcroExch.PDDoc")
If .Open(fullpath) = True Then
Set objJS = .GetJSObject
savefileName = Replace(fullpathExl, ".pdf", ".xlsx")
exportFilter = exportFilterxlsx
If objFS.fileExists(savefileName) = "" Then '同名のファイルがexcelフォルダに既にあったら削除(変換後ファイル)
objFS.DeleteFile(savefileName)
End If
objJS.saveAs savefileName, exportFilter
.Close
If objFS.fileExists(fullpathPDF & filename) = "" Then '同名のファイルが済フォルダに既にあったら削除(変換元PDF)
objFS.DeleteFile(fullpathPDF & filename)
End If
objFS.MoveFile fullpath, fullpathPDF '処理済のPDFは済フォルダへ移動
End If
End With
Set objJS = Nothing
End Function
Excel以外のファイル形式にも変換する方法
AdobeAcrobatのメニューにはいろいろなファイル形式に変換できるメニューがあるので
Excelだけではなくて、いろんな形式に変換できるはずで
それには上の「exportFilter」のところに、Excelじゃない形式を指定すればよくて……
その形式ってどこかに一覧になってないかなあ
と思ったら、自分のPCの中にありました。
C:\Program Files\Adobe\Acrobat 2015\Acrobat\ExportTask.xml
<?xml version='1.0' encoding='UTF-8'?>
<ExportTask Version="1.0.0">
<Menu ID="MenubarMenu">
<ItemSeparator/>
<Menu ID="avSaveAsWordSubmenu">
<MenuItem ID="avExportFormat_MSWORD_07" Filter="com.adobe.acrobat.docx"/>
<MenuItem ID="avExportFormat_MSWORD_97" Filter="com.adobe.acrobat.doc"/>
</Menu>
<Menu ID="avSaveAsSpreadheetSubmenu">
<MenuItem ID="avExportFormat_Excel" Filter="com.adobe.acrobat.xlsx"/>
<MenuItem ID="avExportFormat_XMLSpreadsheet" Filter="com.adobe.acrobat.spreadsheet"/>
</Menu>
<MenuItem ID="avExportFormat_PowerPoint" Filter="com.adobe.acrobat.pptx"/>
<Menu ID="avSaveAsImage">
<MenuItem ID="avExportFormat_JPEG" Filter="com.adobe.acrobat.jpeg"/>
<MenuItem ID="avExportFormat_JPEG2K" Filter="com.adobe.acrobat.jp2k"/>
<MenuItem ID="avExportFormat_TIFF" Filter="com.adobe.acrobat.tiff"/>
<MenuItem ID="avExportFormat_PNG" Filter="com.adobe.acrobat.png"/>
</Menu>
<MenuItem ID="avExportFormat_HTML" Filter="com.adobe.acrobat.html"/>
<ItemSeparator/>
<MenuItem ID="avExportFormat_RTF" Filter="com.adobe.acrobat.rtf"/>
<ItemSeparator/>
<MenuItem ID="avExportFormat_EPS" Filter="com.adobe.acrobat.eps"/>
<MenuItem ID="avExportFormat_PS" Filter="com.adobe.acrobat.ps"/>
<ItemSeparator/>
<MenuItem ID="avExportFormat_ACCTEXT" Filter="com.adobe.acrobat.accesstext"/>
<MenuItem ID="avExportFormat_TEXT" Filter="com.adobe.acrobat.plain-text"/>
<ItemSeparator/>
<MenuItem ID="avExportFormat_XML" Filter="com.adobe.acrobat.xml-1-00"/>
</Menu>
<ExportTask/>
備考
この変換のスクリプトはAdobeのAPIを使うので
Acrobat(Readerじゃなくてお金のかかるほう)のライセンスを持ってないとできないです。