
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
--------------------------------------------------------------------------
No.1ベストアンサー
- 回答日時:
こんにちは
原因はプリンターの差異や、デフォルトの環境設定の違いなどと推測されます。
ご提示のように毎回個別に印刷設定する方法でも可能とは思いますが、設定情報はシートの情報として記憶されていますので、シートをコピーした際にも引き継がれます。
ですので、事前に「様式」シートの印刷設定で
・印刷範囲を「A1:H40」に設定
・「シートを1ページに印刷」に設定(=自動拡大・縮小)
に手動で設定しておけば済むのではないでしょうか?
なお、ご提示のコードのエラーの原因は、ご提示では、
>worksheet.Zoom ~~
等となっていますけれど、正しくは
worksheet.PageSetup.Zoom ~~
です。(他の属性設定も同様)
このため「プロパティがありません」のエラーになると推測されます。
https://learn.microsoft.com/ja-jp/office/vba/api …
ありがとうございます。
VBAのコードについてですが,ご教示いただいたように修正すると動きました。
「シートを1ページに印刷」の設定(=自動拡大・縮小)はしていましたが,端末によっては2ページになってしまいました。(改ページの設定でも1ページしていました)
しかし,印刷範囲の設定はしていなかったので,明日,別の端末で試してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ExcelVBA】値を変更しながら連続でPDFを作成し,ファイル名を自動で付して出力するコード 6 2024/07/16 17:12
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) 【ExcelVBA】値を変更しながら連続でPDFを作成し,それらを結合した状態で出力するコード 3 2024/05/20 10:43
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) VBAに関して 2 2023/11/09 20:57
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2024/06/18 09:20
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel VBAで値を変えながら、pdf出力したい
Visual Basic(VBA)
-
[Excel VBA]特定の条件で文字を削除&残す処理をするファイルを作成したいです
Visual Basic(VBA)
-
【マクロ】フォルダ内にあるPDFを合体させるには?有料版adobe必要?
Excel(エクセル)
-
-
4
VBA 入力箇所指定方法
Visual Basic(VBA)
-
5
エクセル タブの下のメニューを選択 実行するコード
Visual Basic(VBA)
-
6
【ExcelVBA】5万行以上のデータ比較の効率的な処理方法について
Visual Basic(VBA)
-
7
【ExcelVBA】dictionaryの重複判断の基準(セル結合だと違う値として認識される)
Visual Basic(VBA)
-
8
VBAでセルの書式を変えずに文字列を置換する方法をご教示ください
Visual Basic(VBA)
-
9
Excelのマクロについて教えてください。
Visual Basic(VBA)
-
10
エクセルvbaの対象セルに色をつける 例えば a日付 b種類 c値段 dその他 にんじん 50 ぴー
Visual Basic(VBA)
-
11
Visualbasicの現状について教えてください
Visual Basic(VBA)
-
12
Excel マクロについて詳しい方、ご教示ください。 『行数が毎回変わる元データの、A列に「1」と入
Visual Basic(VBA)
-
13
修正依頼:【VBA】 結合セルに複数画像とファイル名一括挿入する方法
Visual Basic(VBA)
-
14
VB.net 文字列から日付型へ変更したい
Visual Basic(VBA)
-
15
EXCEL vbaでシート上に配置したボタンの移動については
Visual Basic(VBA)
-
16
エクセル マクロVBAについて教えてください。
その他(Microsoft Office)
-
17
考えた式の戻り値が期待通りにならない
Excel(エクセル)
-
18
Excelについて教えてください 横向きの表を並び替えたいのですが上手く行きません。 例えば 1 5
Excel(エクセル)
-
19
8:40までの出勤は全て8:30にする関数を教えて下さい!!
Excel(エクセル)
-
20
エクセルVBAのブックを開く方法 例えば [20241001] [20241002] [202410
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
エクセルのマクロについて教え...
-
VBAでCOPYを繰り返すと、処理が...
-
エクセルの改行について
-
Excelマクロで使うVBAコードを...
-
ダブルクリックで貼り付けた画...
-
【マクロ】開いているブックの...
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードと数式につ...
-
【マクロ】変数を使った、文字...
-
エクセルのVBAコードについて教...
-
ワードの図形にマクロを登録で...
-
【マクロ】値を渡されたプロシ...
-
【マクロ】モジュール変数の記...
-
Vba FileSystemObject オブジェ...
-
VBAの質問(Msgboxについて)です
-
Excelのマクロについて教えてく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
【マクロ】並び替えの範囲が、...
-
エクセルの改行について
-
エクセルのマクロについて教え...
-
vb.net(vs2022)のtextboxのデザ...
-
VBAでCOPYを繰り返すと、処理が...
-
VBA ユーザーフォーム ボタンク...
-
エクセルのVBAコードと数式につ...
-
エクセルのVBAコードについて教...
-
[VB.net] ボタン(Flat)のEnable...
-
【マクロ】変数を使った、文字...
-
改行文字「vbCrLf」とは
-
質問58753 このコードでうまく...
-
【マクロ】シートの変数へ入れ...
-
ワードの図形にマクロを登録で...
-
算術演算子「¥」の意味について
おすすめ情報