• ベストアンサー

vbaで全てのシートを選択状態にしたい 印刷

マクロの記録で、全てのシートを選択すると、 Sheets(Array("シート1", "シート2")).Select というのが取得できるのですが、 このコードはシート名が増えたり、シート名が変更されると、使えなくなってしまいます。 全てのシートを選択状態にして、印刷をするvbaをしたいのですが、 シートが増えても使えるvbaコードはありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.4

VBAのVBEには式の結果を目視できるウオッチ(見るの英単語)機能があります。 これでお示しいただいた Sheets(Array("シート1", "シート2")) がどの様になっているか を、見られては如何でしょうか? Array(アレー)

ivooweaxcc7
質問者

お礼

ありがとうございました。

その他の回答 (3)

回答No.3

シートのカウンタを使って、Selectを繰り返せばシート対応の処理をしながら印刷できる。 ただ、ワークシートとグラフシート(専用)は別物なので、それぞれの処理を分けたい場合は、少しヤッカイに、、、 Option Explicit Sub WatchOver() Dim kk As Long 'ド~ン、とまとめて選択 Sheets.Select 'チマチマ、と選択 'Sheets.count = Worksheets.count + Charts.Count For kk = 1 To Sheets.Count Sheets(kk).Select '~~~ Next End Sub ExcelVBA でのシートを選択する方法をまとめてみました。 《WorkSheetsコレクション, Charts コレクション, Sheets コレクション》 http://www.nurs.or.jp/~ppoy/access/excel/xlA004.html

ivooweaxcc7
質問者

お礼

ありがとうございました。

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.2

確認できない環境に、今いるのでご容赦を、 ウオッチでアレーしている全体を見ると、 どうなってます? それと同じものって作れそうですか?

ivooweaxcc7
質問者

お礼

「ウオッチでアレー」とはなんでしょうか?

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

>全てのシートを選択状態にして、印刷 sub macro1() activeworkbook.printout end sub でいいです。

ivooweaxcc7
質問者

お礼

それ専用のコードがあったのですね。 助かりました。

関連するQ&A

  • VBAで複数シート選択

    エクセルVBAで複数のシートを選択する場合、 Sheets(Array("AAA", "BBB", "CCC")).Select  と書くと思いますが、マクロを回してみないことにはシート名や枚数が特定できない場合、どのように記述したらいいのでしょうか? たとえば、新たに追加されたSheets(n)~Sheets(n+x)を選択するような場合です。 よろしくお願いします。

  • A~B間にある全てのシートを選択する記述を教えてください

    VBAの基本がまったくわかっていない初心者です。 マクロで、あるブックの左から3つ目のシートが“A”、末尾が“B”という名前のシートで、そのAからB間のシート全てを選択したいのですが、方法が分かりません。自動記述で選択すると、 Sheets(Array("Sheets1","Sheets2")).Select などとなりますが、シートの数も名前も不定ですので名前では指定できません。 このサイトなどで調べて Sheets(Sheets(3):Sheets.Count).Select などとやってみましたがエラーになります。 丸投げで恐縮ですが、記述のしかたを教えていただけないでしょうか。 よろしくお願いいたします。

  • Excel VBAで他のブックを選択する方法を教えてください。

    こんにちは。VBA初心者です。 ブックを2つ開いた状態で、 マクロを保存してあるブック〔Book1〕から、 毎回ブック名が異なる[Book2]の選択されている2枚のシートを新しいブックに(仮Book3)コピーしたいのですが、どのように記述したらよいのでしょうか。(選択されるシートも毎回異なります。) 特に教えていただきたい部分は、 1.マクロが記録されているBOOK1以外のBookを操作する方法。 2.私以外の方が利用する為、Book1に保存したマクロから実行させる予定なのですが、Book1を毎回開いて実行させる方法がベストのやり方なのでしょうか。 マクロの記録では下記の感じになります。 Sub Macro4() Windows.Arrange ArrangeStyle:=xlVertical Windows("Book2.xls").Activate Sheets(Array("Sheet3", "Sheet4")).Select Sheets("Sheet4").Activate Sheets(Array("Sheet3", "Sheet4")).Copy End Sub 宜しくお願い致します。

  • 【Excel】印刷前の設定に戻す

    Excel2003を使用しています。 4シート(9ページ)を作業グループにして、印刷前にセルの塗りつぶしを解除して印刷。印刷終了後、セルの塗りつぶしを元の設定に戻す。 というマクロを作りたく、とりあえず、「新しいマクロの記録」でやってみました。 Sheets(Array("SheetA", "SheetB", "SheetC", "SheetD")).Select Sheets("SheetA").Activate で、コードが始まっていました。(SheetA,B,C,Dはシート名とします) このシート名の部分をシート名ではなく、シート番号で指定したいのですが、どのようにすればいいでしょうか?(単にシート番号に変更しても、エラーが出てしまいましたので。。。) マクロ勉強中でして、『Array』というのも今回初めて目にしました。よろしくお願いします。

  • エクセルのマクロでシートの選択について

    よろしくお願いします WinXP SP3でEXCEL 2003を使用しています ブック名がtest.xls シートが("目次", "1", "2", "3", "4", "5") とあります ここでは仮に"5"までシートがありますが本来は変数であり、n + 1のように扱いたいです 以下のマクロで"目次"以外の全てのシートを選択しました ~~~~~ Sub Macro1() Dim i As Integer i = 2 Sheets(i).Select For i = i To 6 Sheets(i).Select False Next i End Sub ~~~~~ このマクロですとArrayを使わずとも、"目次"以外のシートを選択できますが For i = i To 6 の6を7以上にするとエラー終了します そこで以下の条件にてシートの選択を行いたいのですが方法がわからず困っております 1・シートの数が多くても"目次"以外のシートを全て選択したいです 2・iがシートの数を超えた場合はエラー終了せず、マクロを終了させたいです 3・Sheets(Array( "1", "2", "3", "4", "5")).Select のようなマクロは組みたくないです 大変恐縮ですが、教えていただけますでしょうか できればマクロをVBEにコピー&ペーストするだけで実行できるような 状態にしていただきますと非常に幸いです 何卒、よろしくお願いいたします

  • VBAで全シートを一括選択したい

    VBAを勉強し始めたばかりの初心者です。 エクセルで非表示に切り替えられているシートを 一括で表示に切り替えできるマクロを作成しているのですが 「全シートの選択」方法がわかりません。 ひとつずつのシートなら 下記のマクロでうまくいくのですが・・・ 2行目の「("Sheet3")」を全シートに切り替えれば うまくいくかなって思っているのですけど 方法がわかりません。 よい方法をご存知の方、よろしくご教授願います。 Sub Macro1() Sheets("Sheet3").Visible = True Sheets("Sheet1").Select End Sub

  • エクセルマクロ印刷時にプリンタを指定できますか?

    エクセル2002を使用しています。VBAはまったくわかりません。 マクロの自動登録で印刷を記録すると、通常使うプリンタから 出力されるようですが、LANでプリンタ複数使用可能な環境です ので、いちいち通常使うプリンタを変更するのではなく、マクロ 実行時にプリンタを選択したく思います。  因みに、以下のマクロはSheet1に値を入力し、Sheet1の値をコピー したSheet2を印刷するというマクロです。このマクロのどの部分に コードを付け加えればプリンタをこのマクロ実行時に選択可能でしょうか? もしくはマクロではプリンタを選択できないのでしょうか? どうぞよろしくお願いいたします。 ****************************************************************** Sub 印刷() Sheets("Sheet2").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("Sheet1").Select End Sub *******************************************************************

  • エクセルのVBAでシート名が重なるときの処理 

    お世話になります。 エクセルのVBAにてリストボックスで選択した単語をシート名に 反映させるマクロを作成しました。 が、一度シート名を作ると2回目に同じ単語を選択すると、 デバック?画面になってしまいます。 『同じ名前のシート名は作れません・・・』 希望としては、同じ名前が出たら自動に連番が割り振られる ようなものを希望しています。 マクロの記録で確認しても、やはり同じデバック要画面がでます。 別シートにシート名を反映させて、同じ名前がヒットしたら 文字列を追加して、そのシートに反映し続ける・・・ ようなことは考えられますが、どうも不細工で気が向きません。 もっとスマートな考えがあれば教えていただきたく よろしくお願いします。 参考に作ったVBAを下記します。 これだと、途中でシートを削除してしまうと デバック画面が発生してしまいます。 (マクロの切り抜きなので、  リストで選択したものが反映されるマクロではありません) Dim シート名 As String Dim n As Integer Sheets("伝票マスター").Select Worksheets("伝票マスター").Copy before:=Worksheets("伝票マスター") n = Sheets.Count Sheets("伝票マスター (2)").Select ActiveSheet.Name = "伝票" & n - 1 Range("D2") = n - 1 Range("D1").Select 、

  • エクセルVBA、MsgBOXで入力した2つのシート番号で挟まれたシートをすべて消去したい。

    マクロ自動記録で複数シートのDeleteを試してみると、   Sheets(Array("Sh20", "Sh19", "Sh18")).Select   Sheets("Sh18").Activate   ActiveWindow.SelectedSheets.Delete となって、シート名を個別に指定する必要が出てくる。 シートの左から18枚目から20枚目とか、15枚目から40枚目とか MsgBOXで入力した2つの数字で指示したいのですが、良い方法はありませんか? ちなみに、MsgBoxでA=15,B=40を入力して、   mysh = A   For Sh=1 to B-A+1   Sheets(Array(mysh)).Select   ActiveWindow.SelectedSheets.Delete   next とやったら、シート1枚消すごとに、 「データがあります。消してよいですか?」のメッセージが出てきて、 作業が面倒です。 一括して消す方法がないでしょうか?

  • 複数シートの選択

    エクセルVBAで複数シートの選択をしたいのです。 シート名やシートの位置が変更される可能性があるので オブジェクトで指定したいのですが 記述方法が分かりません。 ##シートの位置 Sub mac1() Worksheets(Array(2,5)).Select End Sub ##シート名 Sub mac2() Worksheets(Array("aaa","あああ")).Select End Sub

専門家に質問してみよう