prntRange
シート名、範囲 ( )、方向 ( ) を取得して結果を印刷するように VBA コードをセットアップしましたが、prntOrient
VBA がページ設定のコマンドを無視しているようです。ここに簡単なスニペットがあります:
For x = 1 To numPages
Worksheets("Printing").Activate
prntSheet = Cells(6 + (x - 1), 1)
prntRange = Cells(6 + (x - 1), 2)
prntOrient = Cells(6 + (x - 1), 3)
Application.StatusBar = "Printing " & prntSheet & "..."
Worksheets(prntSheet).Activate
With ActiveSheet.PageSetup
.PrintArea = False
If prntOrient = "Portrait" Then
.Orientation = xlPortrait
Else
.Orientation = xlLandscape
End If
.PrintArea = prntRange
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
...
そして、これがテーブルの例です:
Sheet Name Range Orientation
Example A1:J56 Portrait
Example A1:J80 Landscape
prntRange
Range からprntOrient
プル、Orientation からプル
基本的に私が探しているのは、Example の範囲の縦向きバージョンと、A1:J56
Example の範囲の横向きバージョンですA1:J80
。横向きバージョンは、1 ページに収まるように指示されているにもかかわらず、2 ページとして印刷されます。これは、最初のエントリがそこにあるかどうか、および Excel で印刷設定を手動でリセットしたかどうかに関係なく発生します。
上記の 4 つのコマンドのほぼすべての順列を試してみましたが、順序によって違いはないようです。設定.PrintArea = False
は、印刷領域をリフレッシュするのに役立つかもしれないと思っていましたが、そうではないと思います。これらの手順を手動で行っても、問題なく目的の形式に変換できますが、このマクロの目的は、その必要がないようにすることです。
誰かが私が見逃しているものを知っていますか?
前もって感謝します!
編集:より正確なタイトル。
編集 2: 人々の要求ごとの詳細、申し訳ありません!
編集 3: コードを展開して変数の割り当てを表示する