掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VB−エクセルでシート複数選択時の印刷について (ID:107717)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
VBAでのコーディングノウハウで回答させていただきます。 VBでもおそらくそのまま活用できると思いますが確認してませんので。。。 シートの選択の方法ですが、シート名で指定するほか、インデックス番号や オブジェクト名でも指定できます。 インデックス番号はシートの並び順の番号で、EXCELで見たときに左側のシートから 順番に1,2,・・・と振られています。 オブジェクト名は特に指定しなければ、シートを作成した順に Sheet1、Sheet2・・・とつけられていくようです。 で、複数シートに同じ設定をするときなどはインデックス番号で ループするのが手っ取り早いです。 例:シート1〜5を順に選択 For i =1 to 5 sheets(i).select Next i 例:シート1と3を同時選択 sheets(Array(1,3)).select 全シート選択する場合は、単に sheets.select でできます。印刷も同様です。(.selectを.PrintOutに置き換えるだけ) コード①について。 EXCELの操作で「シート全選択(もしくは複数選択)」→「ページ設定」 とすると、選択したシート全てにページ設定の設定内容が反映されます。 この操作をマクロの自動作成で記録すると、たしかにコード①のような マクロを作ってくれます。 しかしこのマクロ、実際に実行してもアクティブシートにしかページ設定が 反映されません。 > Sheets("s1").Activate > With ActiveSheet.PageSetup となっているからです。 選択されているシートに一括でページ設定する方法は私も知りません。 私は個々にループして設定をいれる方法で対応しています。 例:全シートにページ設定 For Each sh In Sheets With sh.PageSetup .Orientation = xlPortrait End With Next sh 指定のページ(例えば2と3)にのみページ設定をする場合は、最初の1行を For Each sh In Sheets(Array(2, 3)) のようにしてあげればOKです。 コード②については、どのようにしてモジュールが呼ばれているか 詳細が不明なのですが、シート単位でモジュールに渡しているので シート単位での印刷になっているんじゃないでしょうか? 複数シートまとめてページ設定・印刷するのであれば、引数として もらうのはSheetではなくworkbookであり、対象とする全シートの インデックス番号だと思います。 仮にgl_XlsAppが現在使用しているworkbookを使い、そこにある全シートを 設定・印刷するのであれば、現状のロジックを応用して以下のようにすれば できるのではないかと思います。 #机上論であって、申し訳ないですがVBでの動作確認はしていません(滝汗 Function XlsPrintSheets(ByVal Tateyoko As Integer, ByVal Saizu As Integer) As Boolean On Error GoTo errorHandler Dim Sh as As excel.Sheets XlsPrintSheets = False For Each Sh in gl_XlsApp.Sheets With Sh.PageSetup .Orientation = Tateyoko '印刷向き .PaperSize = Saizu '用紙サイズ End With Next Sh gl_XlsApp.Sheets.PrintOut '全印刷 XlsPrintSheets = True Exit Function errorHandler: Call ErrorHandling End Function 以上、ながながと書きましたがお役に立てれば幸いです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.