[[20241219133203]] 『VBA初心者の為、印刷範囲設定』(おもひろ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『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


XYZ様

お世話になっております。

すいません、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


まっつわん様、xyz様

出来ました。すごいですね。感動してます。

何故、クリアしたのか、どうやって作ったのかは、すいません、分かりません。
ただ、記録したのみですが、余計な事してましたね。

助かりました!!!!ありがとうございました!!!!
(おもひろ) 2024/12/19(木) 14:19:32


試してないけどこんな感じだろうと思われます。
分からない単語はヘルプやネットで調べてみましょう。。。。
(設定項目が多すぎて途中でギブアップ^^;)
不要なものは消していいと思いますが、
解らなければ、そのままで。。。
EvenPage ってのが偶数ページ、
FirstPage ってのが先頭ページ
の意味っぽいので、ヘッダー・フッターを使わないなら、
削除してよいかも。。。

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

まっつわん様、XYZ様

おはようございます。
朝から、自分なりに試行錯誤してましたが、なかなかヘッダー消えないです。

この印刷は、本社から来てる出勤簿を、毎年社内用に変更して、人数分印刷しなくてはいけない作業
なんです。年に1度なので、余白、サイズ等を直す作業に手間取り、新しい人が入ったら、その都度
又印刷。

XYZ様のコード入れたみましたが、応答なしになってしまいました。

ヘッダー手動で消した方が早いですかね。

色々自分で方法探してみます。
ありがとうございました!!

(おもひろ) 2024/12/20(金) 08:44:06


XYZ様

先ほどのコードですが、応答なしと表示されましたが、
ヘッダー消えてました。

重いのか、時間掛かっている感じなのですが、何とか消えてました。
ありがとうございました。
(おもひろ) 2024/12/20(金) 08:53:32


なるほど。。。。
Application.PrintCommunication = False
を書くとヘッダーがクリアできませんね。(他も不具合あるかも?)

ページの設定は時間が数秒かかるので、
設定項目は出来るだけ少なくした方がいいかも知れません。

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


設定とか思ったより遅いので
変更するところ以外デフォルトでいいのならいらない
そういう所は、マクロ記録で何度か設定を変更して比較してみて自分で確認する
(デフォルト) 2024/12/20(金) 14:56:54

デフォルト様

お返事ありがとうございます。
又、削除してみました。

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.