3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-10-24

変換したいと思った理由

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

PDFをExcelに変換する方法(Adobeの公式サイト)

でもこれをたくさんファイルがあるときにやるのはたいへんだし、時間もかかるので
フォルダに置いてあるたくさんの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じゃなくてお金のかかるほう)のライセンスを持ってないとできないです。

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?