[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『フォルダ内のブック全体を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
(マナ) 2021/01/23(土) 18:48
(たま) 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.