
エクセルVBAにおいて、印刷範囲を指定して印刷を行いたいと考えていますがうまくいきません。
例えば、Range("A1:W2")とRange("A4:W4")の範囲で1ページ印刷を行い、Range("A1:W2")とRange("A5:W5")の範囲で2ページ目の印刷、Range("A1:W2")とRange("A6:W10")で3ページ目の印刷を行う・・
というように、データが存在するだけ上記のような印刷を行いたいと考えています。
ちなみに、Range("A1:W2")の部分は見出しなので必ず印刷を行います。
また、印刷の改ページ条件はF列の項目がキーとなっており、この項目のキー値が変わった場合に改ページ印刷されます。
(1ページの印刷内容:見出し+F列の値が同じセルまで)
分かりづらい部分がありましたら再度補足しますので、回答の方よろしくお願いします。
No.4ベストアンサー
- 回答日時:
貼り付けありがとう
やはりバージョンによって 設定が微妙に違うようでね
>どうやら、ページ設定の拡大/縮小が100%になっているのが原因で、
>toPage.Zoom = 60(拡大/縮小を60%とした)
>と設定しましたが、マクロの内容がページ設定に反映されないのです。
多分その後に FitToPagesWide FitToPagesTall が入ってたら そちらが優先されたのかな?
(私の方はうまく行ってたのですが)
ズームが入っているときは
FitToPagesWide FitToPagesTall
をコピーしたらだめなのかなぁ?
最後の方を 下記のように修正してもらえません?
if fromPage.Zoom = false then
toPage.Zoom = fromPage.Zoom
toPage.FitToPagesWide = fromPage.FitToPagesWide
toPage.FitToPagesTall = fromPage.FitToPagesTall
else
toPage.Zoom = fromPage.Zoom
end if
できました!!
よく見ましたら、ページ設定を行った後にRestAllPageBreaksを行ってました。
せっかく設定したのに、また改ページの解除を行っていたため、うまくいきませんでした。
多くの回答本当にありがとうございます。
また何かありましたらよろしくお願いします。
No.3
- 回答日時:
まいどです 1行で書けるかな?と思ったのですが
わかりませんでした 誰かしってるかなぁ?
insatu001() の最後の行に
call PageCopy
として End Sub の後に下記を貼り付けてください。
Sub PageCopy()
Set fromPage = Sheets("sheet1").PageSetup
Set toPage = ActiveSheet.PageSetup
toPage.PrintArea = fromPage.PrintArea
toPage.PrintTitleRows = fromPage.PrintTitleRows
toPage.PrintTitleColumns = fromPage.PrintTitleColumns
toPage.LeftHeader = fromPage.LeftHeader
toPage.CenterHeader = fromPage.CenterHeader
toPage.RightHeader = fromPage.RightHeader
toPage.LeftFooter = fromPage.LeftFooter
toPage.CenterFooter = fromPage.CenterFooter
toPage.RightFooter = fromPage.RightFooter
toPage.LeftMargin = fromPage.LeftMargin
toPage.RightMargin = fromPage.RightMargin
toPage.TopMargin = fromPage.TopMargin
toPage.BottomMargin = fromPage.BottomMargin
toPage.HeaderMargin = fromPage.HeaderMargin
toPage.FooterMargin = fromPage.FooterMargin
toPage.PrintHeadings = fromPage.PrintHeadings
toPage.PrintGridlines = fromPage.PrintGridlines
toPage.PrintComments = fromPage.PrintComments
toPage.CenterHorizontally = fromPage.CenterHorizontally
toPage.CenterVertically = fromPage.CenterVertically
toPage.Orientation = fromPage.Orientation
toPage.Draft = fromPage.Draft
toPage.PaperSize = fromPage.PaperSize
toPage.FirstPageNumber = fromPage.FirstPageNumber
toPage.Order = fromPage.Order
toPage.BlackAndWhite = fromPage.BlackAndWhite
toPage.Zoom = fromPage.Zoom
toPage.FitToPagesWide = fromPage.FitToPagesWide
toPage.FitToPagesTall = fromPage.FitToPagesTall
End Sub
↑↑↑ここまで↑↑
Excelのバージョンが違っていたら 抜けている設定があるかも
しれないので 一応
下記のことをしてもらえませんか?
ツール -> マクロ 新しいマクロの記憶
ファイル -> ページ設定
でダイアログがでますので 色々いじって OKを押す
ツール -> マクロ -> 記録終了
ツール -> マクロ -> VisualBasicEditor で
記録されたマクロを 返答してもらえませんか?
この回答への補足
>ツール -> マクロ -> VisualBasicEditor で
>記録されたマクロを 返答してもらえません
>か?
以下のようになりました。
With ActiveSheet.PageSetup
.PrintTitleRows = "$1:$2"
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = "$A$1:$W$29"
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0.590551181102362)
.BottomMargin = Application.InchesToPoints(0.393700787401575)
.HeaderMargin = Application.InchesToPoints(0.393700787401575)
.FooterMargin = Application.InchesToPoints(0.196850393700787)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
.PrintErrors = xlPrintErrorsDisplayed
End With
End Sub
必要な項目だけを設定し、なんとかできました。
しかし、困ったことに印刷の範囲がうまく設定できません。
FrmSheetでは1ページ目にA列からW列まで印刷範囲となっていますが、TgtSheetは1ページ目にA列からN列、2ページ目にO列からW列となってしまいます。
印刷ページをどのようにすればFrmSheetと合わせることができるのでしょうか?
よろしくお願いします。
追加です。
どうやら、ページ設定の拡大/縮小が100%になっているのが原因で、
toPage.Zoom = 60(拡大/縮小を60%とした)
と設定しましたが、マクロの内容がページ設定に反映されないのです。
なぜでしょうか??
分かりましたら回答の方よろしくお願いします。
No.2
- 回答日時:
#1 の訂正 です ごめんなさい
× 印刷範囲を $1:$2 としてください。
○ 行のタイトルを $1:$2 としてください。
ところで ソートはしてあるの? 不要?
不要だったら 途中からにしてください
Sub insatu001()
' Sort
Rows("3:" & ActiveSheet.UsedRange.Rows.Count).Select
Application.CutCopyMode = False
Selection.Sort Key1:=Range("F3"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin
' ソートしてあったら とか しなくて良い場合 ここから
oldkey = ActiveSheet.Cells(3, 6).Text
' 最終行まで ループ
For ii = 3 To ActiveSheet.UsedRange.Rows.Count
'キーが変わったか?
If oldkey <> ActiveSheet.Cells(ii, 6).Text Then
'改ページを入れる
Rows(ii).Select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
'キーの入れ替え
oldkey = ActiveSheet.Cells(ii, 6).Text
End If
Next
End Sub
この回答への補足
こんにちは。
毎度ありがとうございます。
キーごとに印刷ページを分けることができました。
ありがとうございます。
ちなみに、印刷するのはTgtSheetの方で、コピー元のFrmSheetのページ設定や印刷範囲を全てコピーすることは可能なのでしょうか?
知っていましたら教えてください。
お願いします。
No.1
- 回答日時:
こんばんは こないだのやつの続きですね
まずは
ファイル-> ページ設定
シートのタブで一番上の
印刷範囲を $1:$2 としてください。
あとは VBAで F列のキーが変わったら 改ページを入れる
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
だけですよ もしわからなかったら言ってくださいね
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像生成AIのプロンプトの作り...
-
vba クリップボードクリアにつ...
-
Pythonで仮想通貨の自動売買が...
-
Geminiフォーム 画像生成で 人...
-
覚えることが少ないプログラミ...
-
AIの登場でプログラマーたちが...
-
Google ColaboでGUI作成
-
pip --versionがエラーになる
-
pythonの実行に関する質問
-
パイソンのソースコードをChatG...
-
Python 3.12.2 か一番最新のパ...
-
CSVファイルの複数行削除
-
GoogleAppsScript文字列置換の...
-
Webサイト内に埋め込んだmp4動...
-
HTMLソースが表示のページのも...
-
【GAS】特定文字の削除について
-
数学、プログラミング、物理、...
-
OS入ってる機器のソフト・アプ...
-
MOVEコマンドでサブフォルダー...
-
AIがプログラムする時代のプロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
画像生成AIのプロンプトの作り...
-
Geminiフォーム 画像生成で 人...
-
CSVファイルの複数行削除
-
数学、プログラミング、物理、...
-
pip --versionがエラーになる
-
Python... 環境設定 初心者です...
-
pythonの実行に関する質問
-
Python 3.12.2 か一番最新のパ...
-
OS入ってる機器のソフト・アプ...
-
パイソンのソースコードをChatG...
-
Google ColaboでGUI作成
-
VBAでパワーシェルを実行したい...
-
HTMLソースが表示のページのも...
-
ネットワークフォルダの中身を...
-
Pythonのエラーメッセージをコ...
-
Webサイト内に埋め込んだmp4動...
-
google Colabでmatplotlibの描...
-
初心者powershellのPS1ファイル...
-
Pythonについて。
おすすめ情報