m0r1_39’s blog

個人的な備忘録。誰かの参考になれば。

Excel/Word/PowerPointファイルを一括PDF変換

Excel/Word/PowerPointファイルを一括でPDFに変換するスクリプトのメモ。

Acrobatとかフリーソフトとか使えればいいんですけどね。

使えない場合にExcel/Word/PowerPointさえあれば一括でPDFに変換できるVBSスクリプト

対象ファイルをVBSスクリプトファイルにドロップ。

複数ファイルのドロップも可。

進捗をIEを使って表示する。

ファイル名は任意。

 

■VBSスクリプトファイル

Option Explicit
Call Main()

Sub Main()
  Const XLS2PDF = 0
  Const DOC2PDF = 17
  Const PPT2PDF = 32
  Dim myFname, myOffice, myArgNum, i, myIE

  myArgNum = Wscript.Arguments.Count

  If myArgNum = 0 Then
    Wscript.Echo "変換したいファイルを本スクリプトにドロップしてください。"
    Exit Sub
  End If

  '進捗表示用のIEオブジェクトを生成
  Set myIE = WScript.CreateObject("InternetExplorer.Application")
  myIE.Navigate "about:blank"
  While myIE.busy: Wend
  While myIE.Document.readyState <> "complete": DoEvents : Wend
  myIE.AddressBar = False
  myIE.ToolBar = False
  myIE.StatusBar = False
  myIE.Height = 150
  myIE.Width = 500
  myIE.Visible = True

  i = 1
  For Each myFname In Wscript.Arguments
    Set myOffice = GetObject(myFname)
    myIE.Document.body.innerHTML = "【進捗】" & i & " / " & myArgNum & "

【処理ファイル】" & myOffice.Name & "" If myOffice.Application = "Microsoft PowerPoint" Then myOffice.SaveAs GetFNameFromFStr(myOffice.FullName)+".pdf", PPT2PDF Elseif myOffice.Application = "Microsoft Excel" Then myOffice.ExportAsFixedFormat XLS2PDF , GetFNameFromFStr(myOffice.FullName)+".pdf" Elseif myOffice.Application = "Microsoft Word" Then myOffice.SaveAs GetFNameFromFStr(myOffice.FullName)+".pdf", DOC2PDF End If myOffice.Close i = i + 1 Next myIE.Quit Wscript.Echo "完了" End Sub Function GetFNameFromFStr(sFileName ) Dim sFileStr' As String Dim lFindPoint 'As Long Dim lStrLen' As Long lFindPoint = InStrRev(sFileName, ".") sFileStr = Left(sFileName, lFindPoint - 1) GetFNameFromFStr = sFileStr End Function