こんにちは、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ランキング
-
excelのマクロで該当処理できな...
-
別のシートから値を取得するとき
-
別のシートを参照して計算する方法
-
同じ作業を複数のシートに実行...
-
実行時エラー1004「Select メソ...
-
XL:BeforeDoubleClickが動かない
-
ユーザーフォームに入力したデ...
-
ブック名、シート名を他のモジ...
-
IFステートの中にWithステート...
-
【VBA】シート名に特定文字が入...
-
特定の文字を含むシートだけマ...
-
【ExcelVBA】全シートのセルの...
-
エクセルのシート名変更で重複...
-
シートが保護されている状態で...
-
Excelマクロのエラーを解決した...
-
VB6.0でEXCELにシートを追加したい
-
エクセル VBA シートのコピー
-
VBAです。ユーザーフォームの表...
-
指定文字が含まれるシートを削...
-
【Excel VBA】Worksheets().Act...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
同じ作業を複数のシートに実行...
-
ブック名、シート名を他のモジ...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのシート名変更で重複...
-
XL:BeforeDoubleClickが動かない
-
シートが保護されている状態で...
-
Excel VBA 複数行を数の分だけ...
-
実行時エラー1004「Select メソ...
-
【Excel VBA】Worksheets().Act...
-
Excelマクロのエラーを解決した...
-
エクセル・マクロ シートの非...
-
VBAで同じシート名のコピー時は...
-
ExcelのVBAのマクロで他のシー...
-
【VBA】色のついたシート名を取得
おすすめ情報