こんにちは、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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
複数ファイルにある特定のシートを一度に印刷したい
Excel(エクセル)
-
Excel VBA シートを指定してpdf化
Visual Basic(VBA)
-
条件によって印刷するシートを変える方法 EXCEL-VBA
Excel(エクセル)
-
-
4
【Excel】指定したセルの名前でPDFを保存する【VBA】
Visual Basic(VBA)
-
5
フォルダ内のワードファイルをPDFに一括変換するVBA
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
エクセルのマクロについて教え...
-
実行時エラー'1004': WorkSheet...
-
Excelマクロのエラーを解決した...
-
Worksheet_Changeの内容を標準...
-
同じ作業を複数のシートに実行...
-
ブック名、シート名を他のモジ...
-
別のシートを参照して計算する方法
-
特定の文字を含むシートだけマ...
-
excelのマクロで該当処理できな...
-
エクセル・マクロ シートの非...
-
Excelの各シートを色ごとで分類...
-
テキストボックスに入力されて...
-
VBAで大量のファイルをシート名...
-
エクセル Worksheet_Calculate
-
【ExcelVBA】全シートのセルの...
-
『実行時エラー'1001': 'Range...
-
Excel VBAの書き方
-
エクセルのシート名変更で重複...
-
API関数ImmSetConversionStatus...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
VBAで大量のファイルをシート名...
-
ユーザーフォームに入力したデ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
VBA 存在しないシートを選...
-
Excelマクロのエラーを解決した...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
シートが保護されている状態で...
-
実行時エラー1004「Select メソ...
-
【Excel VBA】Worksheets().Act...
-
ブック名、シート名を他のモジ...
-
エクセルのシート名変更で重複...
-
ExcelのVBAのマクロで他のシー...
-
Excel VBA 複数行を数の分だけ...
-
エクセルのマクロについて教え...
-
VBA 最終行まで数式をコピーする
おすすめ情報