[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA初心者の為、印刷範囲設定』(おもひろ)
いつもお世話になっております。
マクロで、印刷範囲設定〜余白等を記憶したのですが、
Range("A1:AB46").Select
ActiveSheet.PageSetup.PrintArea = "$A$1:$AB$46"
↑のコードで、印刷範囲設定にならないのですが、
何違っているのでしょうか?
教えて頂きたいです。宜しくお願い致します。
< 使用 Excel:Excel2016、使用 OS:Windows11 >
>印刷範囲設定にならない というのはどのように確認されていますか?
イミディエイトウインドウに ?ActiveSheet.PageSetup.PrintArea と入力したら何が返りますか? (最初の?は出力命令なので必要です)
(xyz) 2024/12/19(木) 13:42:16
お世話になっております。
すいません、VBAが分からないので、ただマクロ記録したままです。
印刷範囲設定してから、余白とヘッダー消しなどしてます。
(長い分、すいません)
確認は、マクロしてから、印刷プレビューみても、範囲設定になっていないので。
不必要なコード有ったら、削除もして頂きたいです。
宜しくお願い致します。
Range("A1:AB46").Select
Print ActiveSheet.PageSetup.PrintArea = "$A$1:$AB$46"
Application.PrintCommunication = False With ActiveSheet.PageSetup .PrintTitleRows = "" .PrintTitleColumns = "" End With Application.PrintCommunication = True ActiveSheet.PageSetup.PrintArea = "" Application.PrintCommunication = False With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .LeftMargin = Application.InchesToPoints(0.708661417322835) .RightMargin = Application.InchesToPoints(0.708661417322835) .TopMargin = Application.InchesToPoints(0.748031496062992) .BottomMargin = Application.InchesToPoints(0.748031496062992) .HeaderMargin = Application.InchesToPoints(0.31496062992126) .FooterMargin = Application.InchesToPoints(0.31496062992126) .PrintHeadings = False .PrintGridlines = False .PrintComments = xlPrintNoComments .PrintQuality = 600 .CenterHorizontally = True .CenterVertically = False .Orientation = xlPortrait .Draft = False .PaperSize = xlPaperB4 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = 1 .PrintErrors = xlPrintErrorsDisplayed .OddAndEvenPagesHeaderFooter = False .DifferentFirstPageHeaderFooter = False .ScaleWithDocHeaderFooter = True .AlignMarginsHeaderFooter = True .EvenPage.LeftHeader.Text = "" .EvenPage.CenterHeader.Text = "" .EvenPage.RightHeader.Text = "" .EvenPage.LeftFooter.Text = "" .EvenPage.CenterFooter.Text = "" .EvenPage.RightFooter.Text = "" .FirstPage.LeftHeader.Text = "" .FirstPage.CenterHeader.Text = "" .FirstPage.RightHeader.Text = "" .FirstPage.LeftFooter.Text = "" .FirstPage.CenterFooter.Text = "" .FirstPage.RightFooter.Text = "" End With Application.PrintCommunication = True End Sub
(おもひろ) 2024/12/19(木) 13:52:27
>ActiveSheet.PageSetup.PrintArea = ""
↑ ここでなぜかクリアしてますね。
その行を削除したら最初の設定が生きてくると思います。
(まっつわん) 2024/12/19(木) 14:03:51
既に指摘があります。
追加です。 >Print ActiveSheet.PageSetup.PrintArea = "$A$1:$AB$46" これは何でしょうか。どうやって作ったのですか? Printは余計ですが。
(xyz) 2024/12/19(木) 14:09:53
出来ました。すごいですね。感動してます。
何故、クリアしたのか、どうやって作ったのかは、すいません、分かりません。
ただ、記録したのみですが、余計な事してましたね。
助かりました!!!!ありがとうございました!!!!
(おもひろ) 2024/12/19(木) 14:19:32
Sub Macro1()
Application.PrintCommunication = False
With ActiveSheet.PageSetup '印刷範囲の指定 .PrintArea = "$A$1:$AB$46" 'ヘッダーの設定クリア .LeftHeader = "" .CenterHeader = "" .RightHeader = "" 'フッターの設定クリア .LeftFooter = "" .CenterFooter = "" .RightFooter = "" '余白の設定 .LeftMargin = Application.InchesToPoints(0.708661417322835) .RightMargin = Application.InchesToPoints(0.708661417322835) .TopMargin = Application.InchesToPoints(0.748031496062992) .BottomMargin = Application.InchesToPoints(0.748031496062992) .HeaderMargin = Application.InchesToPoints(0.31496062992126) .FooterMargin = Application.InchesToPoints(0.31496062992126)
.PrintHeadings = False '行列番号の印刷 .PrintGridlines = False 'セルの枠線の印刷 .PrintComments = xlPrintNoComments 'コメントの印刷 .PrintQuality = 600 '印刷の品質 .CenterHorizontally = True '水平の中央寄せ .CenterVertically = False '垂直の中央寄せ .Orientation = xlPortrait '用紙の縦使いか横使い .Draft = False '簡易印刷 .PaperSize = xlPaperB4 '用紙サイズ .FirstPageNumber = xlAutomatic '先頭ページ番号 .Order = xlDownThenOver 'ページ番号の縦横の優先順位 .BlackAndWhite = False '白黒印刷 .Zoom = False '拡大縮小 .FitToPagesWide = 1 '横を1ページに納める .FitToPagesTall = 1 '縦を1ページに納める .PrintErrors = xlPrintErrorsDisplayed 'エラー時の表示の抑制 .OddAndEvenPagesHeaderFooter = False 'ヘッダー・フッター、奇数/偶数ページ別指定 .DifferentFirstPageHeaderFooter = False '先頭ページの別指定 '以下ヘッダー・フッターの細かい設定 .ScaleWithDocHeaderFooter = True .AlignMarginsHeaderFooter = True .EvenPage.LeftHeader.Text = "" .EvenPage.CenterHeader.Text = "" .EvenPage.RightHeader.Text = "" .EvenPage.LeftFooter.Text = "" .EvenPage.CenterFooter.Text = "" .EvenPage.RightFooter.Text = "" .FirstPage.LeftHeader.Text = "" .FirstPage.CenterHeader.Text = "" .FirstPage.RightHeader.Text = "" .FirstPage.LeftFooter.Text = "" .FirstPage.CenterFooter.Text = "" .FirstPage.RightFooter.Text = "" End With Application.PrintCommunication = True End Sub (まっつわん) 2024/12/19(木) 14:51:35
出来ました。
コメント付きで、非常に非常に助かります。(ペコリ)
余談ですが、推し活じゃないですが、このサイトのスペシャリスト様に
キュンキュンしてしまいます。
どうしたら、こんな頭脳をお持ちなのか。
私の業務は、殆どこのサイトのお陰で、時短になっております。
ありがとうございました!!!!!
(おもひろ) 2024/12/19(木) 15:17:11
私って、こうなんだよね。。。(後だしが多い)
度々、申し訳ございません。
↑コード貼り付けましたが、ヘッダー名が残っているのです。
何か、足りないですか?
ヘッダー名だけ、消したいです。
よろしくお願いいたします。
(おもひろ) 2024/12/19(木) 15:37:28
調べる方法を知っているかどうかの違いじゃないですかね?
自分で調べられたらさらに時短?になるかと思います。
エクセルVBAの情報は、大体ネットで調べて用が足ります。
ところで、ヘッダー名ってなんですか?
設定のとこ見ても、
ネットで検索しても、
どれのことかわかりませんでした。
(まっつわん) 2024/12/20(金) 07:41:54
↓にあるように、 Application.PrintCommunication に関するなんらかの不具合が混入しているようです。 https://answers.microsoft.com/ja-jp/msoffice/forum/all/excel2010vba%E3%81%A7applicationprintcommunication/a86372d9-e576-4690-8beb-cd192f9da0d2
Application.PrintCommunication を使わずに、 Sub test() With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" End With End Sub とすればいいでしょう。
# Application.PrintCommunication は、もともと処理効率を高めるために導入されたものと記憶するが、 # 挙動がおかしいのであれば、それは打っちゃっておいてください。 # 単にヘッダーを修正するくらいなら、それを使うまでも無いのです。 (xyz) 2024/12/20(金) 08:09:29
おはようございます。
朝から、自分なりに試行錯誤してましたが、なかなかヘッダー消えないです。
この印刷は、本社から来てる出勤簿を、毎年社内用に変更して、人数分印刷しなくてはいけない作業
なんです。年に1度なので、余白、サイズ等を直す作業に手間取り、新しい人が入ったら、その都度
又印刷。
XYZ様のコード入れたみましたが、応答なしになってしまいました。
ヘッダー手動で消した方が早いですかね。
色々自分で方法探してみます。
ありがとうございました!!
(おもひろ) 2024/12/20(金) 08:44:06
先ほどのコードですが、応答なしと表示されましたが、
ヘッダー消えてました。
重いのか、時間掛かっている感じなのですが、何とか消えてました。
ありがとうございました。
(おもひろ) 2024/12/20(金) 08:53:32
ページの設定は時間が数秒かかるので、
設定項目は出来るだけ少なくした方がいいかも知れません。
Option Explicit
'試しにヘッダーをセット
Sub test1()
With ActiveSheet.PageSetup .CenterHeader = "&P/&N" .RightHeader = "&B&D" End With End Sub
'ページ設定リセット
Sub test2()
Dim PSetUp As PageSetup Dim m As Double Dim n As Double Set PSetUp = ActiveSheet.PageSetup m = Application.CentimetersToPoints(2.2) n = Application.CentimetersToPoints(1.6)
'Application.PrintCommunication = False With PSetUp .PrintArea = ActiveSheet.UsedRange.Address .CenterHeader = "" .RightHeader = "" .PaperSize = xlPaperB4 .Orientation = xlPortrait .LeftMargin = m .RightMargin = n .TopMargin = m .BottomMargin = n .CenterHorizontally = True .CenterVertically = False .FitToPagesTall = 1 End With 'Application.PrintCommunication = True End Sub
(まっつわん) 2024/12/20(金) 14:14:52
ならば、、、
>.PrintArea = ActiveSheet.UsedRange.Address
↑ここ、印刷範囲を上手く自動で再設定できるといいかもですね。。。
(まっつわん) 2024/12/20(金) 14:43:13
度々、ありがとうございます。
私なりに、コードを見直してみまして
要らないかな?と思うものは、消してみました。
Sub 出勤簿2()
With ActiveSheet.PageSetup '印刷範囲の指定 .PrintArea = "$A$1:$AB$46" 'ヘッダーの設定クリア .CenterHeader = "" '余白の設定 ' 左余白:1.8cm .LeftMargin = Application.CentimetersToPoints(1.8) ' 右余白:1.8cm .RightMargin = Application.CentimetersToPoints(1.8) ' 上余白:1.9cm .TopMargin = Application.CentimetersToPoints(1.9) ' 下余白:1.9cm .BottomMargin = Application.CentimetersToPoints(1.9) ' ヘッダ余白:0.8cm .HeaderMargin = Application.CentimetersToPoints(0.8) ' フッタ余白:0.8cm .FooterMargin = Application.CentimetersToPoints(0.8)
.PrintHeadings = False '行列番号の印刷 .PrintGridlines = False 'セルの枠線の印刷 .PrintComments = xlPrintNoComments 'コメントの印刷 .PrintQuality = 600 '印刷の品質 .CenterHorizontally = True '水平の中央寄せ .CenterVertically = False '垂直の中央寄せ .Orientation = xlPortrait '用紙の縦使いか横使い .Draft = False '簡易印刷 .PaperSize = xlPaperB4 '用紙サイズ .FirstPageNumber = xlAutomatic '先頭ページ番号 .Order = xlDownThenOver 'ページ番号の縦横の優先順位 .BlackAndWhite = False '白黒印刷 .Zoom = False '拡大縮小 .FitToPagesWide = 1 '横を1ページに納める .FitToPagesTall = 1 '縦を1ページに納める .PrintErrors = xlPrintErrorsDisplayed 'エラー時の表示の抑制 .OddAndEvenPagesHeaderFooter = False 'ヘッダー・フッター、奇数/偶数ページ別指定 .DifferentFirstPageHeaderFooter = False '先頭ページの別指定
End With Application.PrintCommunication = True End Sub
けど、まだ時間掛かっています。
けど、ヘッダーは、消えてます♪
(おもひろ) 2024/12/20(金) 14:48:00
お返事ありがとうございます。
又、削除してみました。
Sub 出勤簿2()
With ActiveSheet.PageSetup '印刷範囲の指定 .PrintArea = "$A$1:$AB$46" 'ヘッダーの設定クリア .CenterHeader = "" '余白の設定 ' 左余白:1.8cm .LeftMargin = Application.CentimetersToPoints(1.8) ' 右余白:1.8cm .RightMargin = Application.CentimetersToPoints(1.8) ' 上余白:1.9cm .TopMargin = Application.CentimetersToPoints(1.9) ' 下余白:1.9cm .BottomMargin = Application.CentimetersToPoints(1.9) ' ヘッダ余白:0.8cm .HeaderMargin = Application.CentimetersToPoints(0.8) ' フッタ余白:0.8cm .FooterMargin = Application.CentimetersToPoints(0.8)
.CenterHorizontally = True '水平の中央寄せ .CenterVertically = False '垂直の中央寄せ .PaperSize = xlPaperB4 '用紙サイズ .FitToPagesWide = 1 '横を1ページに納める .FitToPagesTall = 1 '縦を1ページに納める
End With Application.PrintCommunication = True End Sub
若干、早くなったかなと思います。
ありがとうございました。
(おもひろ) 2024/12/20(金) 15:14:56
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.