[[20041207142934]] 『VBAで複数のシートに印刷設定』(ぴら) ページの最後に飛ぶ

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

 

『VBAで複数のシートに印刷設定』(ぴら)

今日は3度目の質問です。

VBAで複数のSheetに対して(12枚)印刷設定をしています。
すべてのSheetを選択し、印刷設定をしたのですが、結果が思わしくありません。印刷設定は複数のSheetには不可能なのでしょうか?
何か複数のSheetに対して一括で設定できる方法はないですか?

教えてください。
お願いします。


 >結果が思わしくありません。
 これだけでは、状況が良く判りません。どのように思わしくないのか、どのようにしたいのかを
 もう少し具体的に教えていただいたほうが回答が付きやすいですよ^^
 (川野鮎太郎)

川野鮎太郎さん
返信をありがとうございます。
SHEETを複数選択した後にフォントのサイズ設定、印刷設定の処理をプログラムに書いたのですが、最初に選んだSheetだけが印刷設定の処理がされていて、その他はぜんぜん設定されていません。

フォントサイズと印刷設定は、With,ENDWithで設定しています。withで設定したものそれぞれにこのSheetの選択が必要なんでしょうか?
教えてください。

(ぴら)


 >withで設定したものそれぞれにこのSheetの選択が必要なんでしょうか?
 当然、対象となる親オブジェクトを指定しないとダメですよ。
 指定を省略すると規定のシートだけが対象になります。 
  (INA)


INAさん返信ありがとうございます。

再度すべてのSheetを指定しなおして印刷設定をしてみました(with手前にSelectを入れました。)が結果は同じでした。
withの下は、これだけの指示をしています。これが原因なのでしょうか?

With ActiveSheet.PageSetup

        .LeftHeader = ""
        .CenterHeader = "≪&A≫/&D Updated"
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = "&P/&N"
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.18)
        .RightMargin = Application.InchesToPoints(0.17)
        .TopMargin = Application.InchesToPoints(0.4)
        .BottomMargin = Application.InchesToPoints(0.39)
        .HeaderMargin = Application.InchesToPoints(0.19)
        .FooterMargin = Application.InchesToPoints(0.16)
        .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
    End With

教えていただけると助かります。
お願いします。
(ぴら)


 全てのシートなら以下のようにしたら良いのかな・・・。

 For Each Sh In WorkSheets

   処理

 Next Sh

 ※Activeで指定したら文字通りアクティブなシートしか処理されません。
 (川野鮎太郎)

 割り込み失礼します。
複数シート選択状況での作業は記録はされますが、選択シート全てに反映されない
ことが多いようです。複数シート選択してセルに入力すると通常は選択シート全ての
同位置セルへ値が入力されますが、これを記録して実行してもアクティブシートにし
か反映されません。
初心者の頃はどうあがいても記録だけでは突破できなかったので、ループ処理の勉強
しました。
(本格的にVBAの勉強を始めたきっかけになった問題だったので、懐かしくて
つい書き込んでしまいました。)
(みやほりん)


みやほりんさん、川野さん、INAさん

返信をありがとうございました。
そうなんです、みやほりんさんの言うようにどうあがいてもだめでした・・・・
みやほりんさんがループで処理をした内容は、Sheet名を指定しなくても処理できるのでしょうか?
何度もすみません。
お手すきの時に教えていただけると助かります。

(ぴら)


 dim i as long 
 for i = 1 to worksheets.count
    msgbox worksheets(i).name
 next i

 と、

 dim ws as worksheet 
 For Each ws In WorkSheets
   msgbox ws.name
 Next Sh

 のどちらでも、ループでブック内の全ワークシートを処理できますよ。

  (INA)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.