[[20210121142219]] 『フォルダ内のブック全体をPDFにしたい』(たま) >>BOT

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『フォルダ内のブック全体をPDFにしたい』(たま)

 フォルダの中にある、大量のエクセルブックを毎月手作業でPDFに変換しています。
 手順としては、CTRL+P ⇒ エクスポート ⇒ PDF/XPSの作成 ⇒ オプション ⇒ ブック全体
 という流れです。
 これを100回程度繰り返しています。
 ボタン一つで片付く方法はありませんか?
 教えてください。よろしくお願いします!

< 使用 Excel:Excel2011(Mac)、使用 OS:Windows8 >


 Macの事はと表記の仕方はわかりませんがWindows8でExcel2011(Mac)って使えるのですか
 解決はしませんが
 印刷用プリンターの標準をMicrosoftのPDFプリンターに設定しておいて
 印刷するファイルを全て選択して印刷をすると全てPDFにしようとはしますが
 ブック一つ一つに名前を付けて保存する必要があります(保存場所選択して名前を付けてOKボタン押さないと次に進みません)
 MicrosoftのPDFプリンターだといちいち名前を付けないとだめですがAcrobatなどのプリンターだと
 ブックの名前のまま保存できます(保存場所選択してOKボタン押さないとだめですが)
 AcrobatのPDFプリンターが入っていれば右クリックなどでAdobePDFに変換やAcrobatで結合などもできますが
 マクロなどの事はわかりませんがそのあたりが自動で出来れば解決できそうなのかな?

(なるへそ) 2021/01/21(木) 18:07


 マイクロソフト以外のフリーのPDFやいきなりPDFなどの簡易PDF作成ソフトのPDFプリンターは
 試していないので挙動はわかりませんが
 名前を付けて保存するときにブック名がAcrobatのPDFの時みたいに最初から入っていれば
 OKボタンを押すだけなのでエクスポートしてPDF作成するより作業工数は少なくなるのではないでしょうか
(なるへそ) 2021/01/22(金) 12:05

ご返信ありがとうございました。
< 使用 Excel:Excel2011(Mac) は間違いでした。
すみません。
(たま) 2021/01/23(土) 16:55

解決したのでしょうか?

(マナ) 2021/01/23(土) 18:48


マナ様 
解決といいますか、こちらとしてはマクロとかVBAのお話になるのかと
思っていたので、保存方法やプリンターのご説明をいただき、少し考えておりました。

(たま) 2021/01/24(日) 01:10


 自分の仕事にも役立ちそうだったので、作ってみました。
 テキストファイルに以下のコードをコピペして、XLS2PDF.VBS とか拡張子を VBSにして保存します。
 このファイルにエクセルのファイルやらフォルダやらをドラッグドロップするとPDFに変換されます。
 無口なスクリプトなので、注意してください。

   '=== XLS2PDF.VBS  ブック全体をPDF化 ===
   Const FormatType = 0    ' 0:PDF 1:XPS
   Const fileext = ".pdf"  '
   Const Quality = 0       ' 0: standard  1:minimum
   Dim FSO 
   Dim xlApp

   Sub xls2pdf(File)
      Dim WB
      If isEmpty(xlApp) Then
         Set xlApp = CreateObject("Excel.Application")
         xlApp.DisplayAlerts = False
      End If 
      pdffilename = File.ParentFolder & "\" & FSO.GetBaseName(File) & fileext
      Set WB = xlApp.Workbooks.Open( File.Path )
      On Error Resume Next
           WB.ExportAsFixedFormat FormatType , pdffilename , Quality 
      On Error Goto 0
      WB.Close False
   End Sub

   Function lsXLSFile( File )
      lsXLSFile = "XLS" = Ucase(Left(FSO.GetExtensionName(File) , 3))
   End Function

   Sub Main()

      Set FSO = CreateObject("Scripting.FileSystemObject")
      For Each Arg in Wscript.Arguments
         Select Case True
            Case FSO.FileExists(Arg)
               Set File = FSO.GetFile(Arg)
               If lsXLSFile(File) Then Call xls2pdf(File)
            Case FSO.FolderExists(Arg)
               For Each File In FSO.GetFolder(Arg).Files
                  If lsXLSFile(File) Then Call xls2pdf(File)
               Next
         End Select
      Next

      On Error Resume Next
         xlApp.Quit
         Set xlApp = Nothing
         Set FSO = Nothing
      On Error Goto 0

   End Sub

   If Wscript.Arguments.Count = 0 Then Quit
   Call Main()
   '=== ここまで ===
(´・ω・`) 2021/01/25(月) 15:13

(´・ω・`)様

まさにこれって感じです。
仕事が断然早くなりそうです。本当にありがとうございました!
また教えてください!
私も勉強します。

(たま) 2021/01/26(火) 21:42


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.