こんにちは、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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
同じ作業を複数のシートに実行...
-
VBA 存在しないシートを選...
-
ユーザーフォームに入力したデ...
-
実行時エラー'1004': WorkSheet...
-
ExcelのVBAのマクロで他のシー...
-
Excelマクロのエラーを解決した...
-
【ExcelVBA】全シートのセルの...
-
実行時エラー1004「Select メソ...
-
excelのマクロで該当処理できな...
-
エクセルのシート名変更で重複...
-
Excel チェックボックスにチェ...
-
VBAで指定シート以外の選択
-
特定の文字を含むシートだけマ...
-
Worksheet_Changeの内容を標準...
-
VBA 最終行まで数式をコピーする
-
IFステートの中にWithステート...
-
Excel VBA で自然対数の関数Ln...
-
エクセルVBA 変数への代入がう...
-
エクセルのマクロについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
XL:BeforeDoubleClickが動かない
-
ExcelVBA シート名を複数セルか...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
【Excel VBA】Worksheets().Act...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報