多数のPDFの帳票をExcel（や他のいろいろな何か）に変換できるスクリプトを書いてみました。

#変換したいと思った理由
事務の業務では、PDFで帳票や書類やなにかが届きます。
その帳票をExcelに変換して、中身をチェックしたりいろんなことをします。
変換作業はAdobeAcrobatでやっています。

[PDFをExcelに変換する方法(Adobeの公式サイト)](https://helpx.adobe.com/jp/acrobat/using/exporting-pdfs-file-formats.html)

でもこれをたくさんファイルがあるときにやるのはたいへんだし、時間もかかるので
フォルダに置いてあるたくさんのPDFの帳票をいっぺんに変換してくれないかなあ
と思ったのです。

#作ったもの（PDFファイルをExcelに変換する）
このvbsファイルを置いたフォルダにPDFがあったら、それを全部Excelに変換します。
変換済のPDFは「済」、変換したExcelファイルは「excel」フォルダに入ります。
いろいろ見い見い書いたので、たぶん無駄が多いかも……

```VB
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
<?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じゃなくてお金のかかるほう）のライセンスを持ってないとできないです。