dポイントプレゼントキャンペーン実施中!

やりたいことは何点かあります。
1.PDFの保存用のファイルを作成
2.作成したファイル名は生成した月の名前が自動で生成される
3.保存するPDFは複数sheet

sheet一枚の場合は問題なく希望の結果が実行できたのですが
複数sheetを1枚のPDFにしたい場合にどうしてもうまくいきません。
構文エラーやらオブジェクトが必要ですとでます。
array関数を使用すればいいとは思うのですが、どこを修正すればよいか教えていただけたら幸いです。

エラー箇所
※Set ws = Sheets(Array("Sheet3", "Sheet4", "Sheet5")).Select
エラーメッセージ : オブジェクトが必要です。
仕事で時間短縮したいです。どうかよろしくお願いいたします。

Sub 自動PDF保存()
Dim ws As Worksheet
Dim filepath As String
Dim pdfname As String
※Set ws = Sheets(Array("Sheet3", "Sheet4", "Sheet5")).Select
filepath = ThisWorkbook.Path & "\" & Format(Date, "yyyymm")
pdfname = "kitkat"

With ws.PageSetup
'倍率クリア
.Zoom = False
'横方向1ページ
.FitToPagesWide = 1
'縦方向1ページ
.FitToPagesTall = 1
'水平方向中央
.CenterHorizontally = True
'上マージン1㎝
.TopMargin = Application.CentimetersToPoints(1)
'下マージン1㎝
.BottomMargin = Application.CentimetersToPoints(1)

End With


'フォルダ生成
If Dir(filepath, vbDirectory) = "" Then
MkDir filepath
End If

'PDF出力
ws.ExportAsFixedFormat _
Type:=xlTypePDF, Filename:=filepath & "\" & pdfname & ".pdf"

End Sub

A 回答 (2件)

No.1の者です。



すみません、できない様です。
文字列として、変数に入れておいて、それを参照する形になる様です。
Dim ws_Names As Variant
ws_Names = Array("Sheet3", "Sheet4", "Sheet5")
Worksheets(ws_Names).Select

https://www.relief.jp/docs/excel-vba-select-shee …
https://www.moug.net/tech/exvba/0040032.html
    • good
    • 0

こんばんは。



※Set ws = Sheets(Array("Sheet3", "Sheet4", "Sheet5")).Select
たぶんですが、Selectが余計だと思います。
    • good
    • 0
この回答へのお礼

おはようございます。
アドバイスありがとうございます。
.selectを削除して実行しますと、実行時エラーの18「型が一致しません」とでてしまいます(´;ω;`)コードで何かが足りないのでしょうか。

お礼日時:2022/02/03 09:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!