office365を使っている者です。
以前,この掲示板でExcel VBAで連続でPDFを作製し,それらを結合した状態でPDFで出力するコードを以下のとおり教えていただいた者です。
結合する前のデータ1件につき1ページでPDFが作成されるように設定を加えたいと思い,質問させていただきます。
--------------------------------------------------------------
Sub 連続PDF作成()
Dim stK, stY, stD
Dim startN, endN, i As Long
Const AA = "A1:H40" ' ← コピー(転記)対象のセル範囲
Const fileName = "hoge" ' ← 作成するPDFファイル名
Set stK = Worksheets("回答")
Set stY = Worksheets("様式")
startN = stK.Range("I2").Value
endN = stK.Range("I3").Value
If Application.CountBlank(stK.Range("I2:I3")) > 0 Or _
Not (IsNumeric(startN) And IsNumeric(endN)) Then _
MsgBox "無効な入力です": Exit Sub
Application.ScreenUpdating = False
Application.DisplayAlerts = False
stY.Copy
With ActiveWorkbook
Set stD = ActiveSheet
For i = startN To endN
stK.Range("A5").Value = stK.Cells(i + 9, 1).Value
stD.Copy after:=.Worksheets(.Worksheets.Count)
.Worksheets(.Worksheets.Count).Range(AA).Value = stY.Range(AA).Value
Next i
stD.Delete
.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & "\" & fileName
.Close False
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
------------------------------------------------------------------------
「様式」シートの内容を新しいシートとしてコピーして,値だけにして,それを順番に結合していくという内容になっています。「様式」シート1件のデータ(変数 i でコントロールしています)につき1ページでPDFを作成したいのですが,上のコードだと端末の環境によっては2ページになってしまうことがあります。
そこで,以下のようにPageSetupのコードを「stD.Copy after:=.Worksheets(.Worksheets.Count)
.Worksheets(.Worksheets.Count).Range(AA).Value = stY.Range(AA).Value」と「Next i」の間に入れてみたのですが,デバックで止まってしまいます。(実行時エラー「438」です)
どのようにすれば,問題なく動くようになるのかご教示願います。
---------------------------------------------------------------------
.Worksheets(.Worksheets.Count).Range(AA).Value = stY.Range(AA).Value
.Worksheets(.Worksheets.Count).PageSetup
.Worksheets(.Worksheets.Count).Zoom = False '拡大/縮小の指定を無しにする
.Worksheets(.Worksheets.Count).FitToPagesWide = 1 '1ページに収める(横)
.Worksheets(.Worksheets.Count).FitToPagesTall = 1 '1ページに収める(縦)
.Worksheets(.Worksheets.Count).CenterHorizontally = True '真ん中に配置(横)
.Worksheets(.Worksheets.Count).CenterVertically = True '真ん中に配置(縦)
Next i
--------------------------------------------------------------------------
- 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
- 今の自分の気分スタンプを選ぼう!
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんにちは
原因はプリンターの差異や、デフォルトの環境設定の違いなどと推測されます。
ご提示のように毎回個別に印刷設定する方法でも可能とは思いますが、設定情報はシートの情報として記憶されていますので、シートをコピーした際にも引き継がれます。
ですので、事前に「様式」シートの印刷設定で
・印刷範囲を「A1:H40」に設定
・「シートを1ページに印刷」に設定(=自動拡大・縮小)
に手動で設定しておけば済むのではないでしょうか?
なお、ご提示のコードのエラーの原因は、ご提示では、
>worksheet.Zoom ~~
等となっていますけれど、正しくは
worksheet.PageSetup.Zoom ~~
です。(他の属性設定も同様)
このため「プロパティがありません」のエラーになると推測されます。
https://learn.microsoft.com/ja-jp/office/vba/api …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル タブの下のメニューを...
-
【VBA】値を変更しながら連続で...
-
VB.net(VB)で、フォームにExcel...
-
VBA実行後に元のセルに戻りたい
-
Web画面の文字をVB6で取得したい
-
【ExcelVBA】インデックスが有...
-
配列のペースト出力結果の書式...
-
vbaにてseleniumを使用したedge...
-
Vba UserformからExcelシートの...
-
サブフォルダに格納されている...
-
VBA レジストリの値の読み方に...
-
VBA 別ブックからコピペしたい...
-
Excel VBA 定義されたプロージ...
-
vba 別ブックに転記
-
2つのマクロでチェックボックス...
-
Outlookの「受信日時」「件名」...
-
ExcelVBAのFindFirstエラ...
-
Excel_VBAについて質疑です。(...
-
【ExcelVBA】値を変更しながら...
-
Excel 範囲指定スクショについ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 別ブックからコピペしたい...
-
Vba ファイル書き込み時に書き...
-
Excel_VBAについて質疑です。(...
-
VBAの間違い教えて下さい
-
VBA コードどこがおかしいですか?
-
VBA 円グラフ 特定条件に一致し...
-
VBA 別ブックから条件に合うも...
-
pdfファイルの複数添付 引数の型
-
【ExcelVBA】インデックスが有...
-
ExcelVBAマクロで実行した時の疑問
-
Vba UserformからExcelシートの...
-
VBA初心者です。次のVBAコード...
-
Outlookの「受信日時」「件名」...
-
Excel 範囲指定スクショについ...
-
vbs ブック共有を解除
-
配列のペースト出力結果の書式...
-
Excel VBAで値を変えながら、pd...
-
VB.net(VB)で、フォームにExcel...
-
vbaにてseleniumを使用したedge...
-
ExcelVBA シート名を複数セルか...
おすすめ情報