
こんにちは、VBA初心者です。
同一フォルダ内のエクセルファイルの指定した複数シートのみ、
一括でPDF化するマクロを組みたいと考えております。
以下で「同一フォルダの一括PDF」までは実施できたのですが、
『指定したシートのみPDF化』が中々できません。。
(具体的には「シート名」を複数指定して、その指定したシートのみPDF化するイメージです。
例えば、ファイルにある「表紙」「見積」「請求書」「メモ」という4つシートがあるなかで、
「表紙」「見積」を指定する)
もし詳しい方がいらっしゃったら、ご教示いただけると幸いです。
よろしくお願いいたします。
---------------------------
Sub convertToPdf()
Dim buf As String
Dim cnt As Long
Dim files() As String
Dim rc As Integer
Dim item As Variant
Dim fullname As String
Dim fullnamePdf As String
Dim objExcel As Object 'Excel.Application
Dim objBook As Object 'Excel.Workbook
Dim objFs As Object 'Scripting.FilesystemObject
Set objFs = CreateObject("Scripting.FilesystemObject")
buf = Dir(ThisWorkbook.Path & "\*.xlsx")
cnt = 0
Do While buf <> ""
ReDim Preserve files(cnt)
files(cnt) = buf
cnt = cnt + 1
buf = Dir()
Loop
If cnt = 0 Then
MsgBox (".xlsxファイルが見つからないため終了します。")
Else
rc = MsgBox(".xlsxファイルが" & cnt & "件見つかりました。一括変換処理を行いますか?", vbYesNo + vbQuestion, "確認")
If rc = vbYes Then
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
For Each item In files()
fullname = ThisWorkbook.Path & "\" & item
fullnamePdf = ThisWorkbook.Path & "\" & objFs.GetBaseName(item) & ".pdf"
Set objBook = objExcel.Workbooks.Open(fullname, , True)
objBook .ExportAsFixedFormat 0, fullnamePdf
objBook.Close (False)
Set objBook= Nothing
Next item
objExcel.Quit
Set objExcel = Nothing
MsgBox ("処理が完了しました。")
Else
MsgBox ("処理を中断しました。")
End If
End If
Set objFs = Nothing
End Sub
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
> Set objBook = objExcel.Workbooks.Open(fullname, , True)
> objBook .ExportAsFixedFormat 0, fullnamePdf
↓ ↓ ↓
Set objBook = objExcel.Workbooks.Open(fullname, , True)
objBook.Worksheets(Array("表紙", "見積")).Select
objBook.ActiveSheet.ExportAsFixedFormat 0, fullnamePdf

No.2
- 回答日時:
現行ではbook1.xlsxがあるとbook1.pdfを作成していますが、
「表紙」「見積」のシートをPDF化すると別々のファイルになってしまいます。(シート単位でPDF化する為)
それでも良ければ、可能です。book1_表紙.pdfとbook1_見積もり.pdfのようなファイルができます。
1つのPDFファイル内に「表紙」「見積」の内容を格納したいということであれば、NO1の方が書かれているように
ページ指定するしかないかと。(予めの指定ページに収まるように表紙シートと見積もりシートをセットしておく必要がありますが)
No.1
- 回答日時:
>『指定したシートのみPDF化』が中々できません
objBook .ExportAsFixedFormat 0, fullnamePdf
がブックのPDF化だけど
説明には
object.ExportAsFixedFormat ( type [, filename, quality, includedocproperties, ignoreprintareas, from, to, openafterpublish, fixedformatextclassptr ] )
fromとtoでページ指定が出来るらしいから
印刷したいページを一番、2番に移動したらいいんじゃない?
マクロの記録でいけるんじゃないかな?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IFステートの中にWithステート...
-
【VBA】指定した検索条件に一致...
-
エクセルのマクロでアクティブ...
-
別のシートを参照して計算する方法
-
コンボボックスとオートフィル...
-
Excelマクロ 変数に代入した条...
-
エクセルのマクロで条件一致の...
-
VBA FIND next複数の条件
-
excelのマクロで該当処理できな...
-
実行時エラー'1004': WorkSheet...
-
マクロを使って、シート印刷完...
-
vbaエクセルマクロ RemoveDupli...
-
VBA オートフィルター繰り返し
-
実行時エラー1004「Select メソ...
-
【変更】ファイルを閉じてダイ...
-
VBAで指定シート以外の選択
-
エクセル・マクロ シートの非...
-
Excelマクロのエラーを解決した...
-
シートが保護されている状態で...
-
セルのコピーで「オブジェクト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
エクセルVBA Ifでシート名が合...
-
実行時エラー1004「Select メソ...
-
VBA 存在しないシートを選...
-
エクセルで通し番号を入れてチ...
-
VBA 検索して一致したセル...
-
XL:BeforeDoubleClickが動かない
-
VBA 指定した回数分、別シート...
-
VBAマクロでシートコピーした新...
-
シートが保護されている状態で...
-
ブック名、シート名を他のモジ...
-
【VBA】全ての複数シートから指...
-
別のシートから値を取得するとき
-
ExcelのVBAのマクロで他のシー...
-
Excel チェックボックスにチェ...
おすすめ情報