• ベストアンサー

【Excel2002】表示シートのみを選択するマクロ

複数シートがあります。(表示シート・非表示シート共に存在します) 表示シートのみを選択するにはどのようなマクロを組めばよいか教えてください。ネットでいくつか検索しましたがコレという物がヒットせず、ピンときません。初心者ですがよろしくお願いいたします。 【社内でデータを編集した後、表示シートのみを別ブック(新しいブック)にコピーして、お客様配布用データにするマクロを作りたいと思っています。】

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

表示シートとはアクティブということじゃなくVisible=Falseじゃないってことですよね? ならば Sub test01() For Each st In Worksheets If st.Visible Then st.Select (False) Next ActiveWindow.SelectedSheets.Copy Application.Dialogs(xlDialogSaveAs).Show End Sub では?

mayu5968
質問者

お礼

表示シートの選択について、For Each~ を使えばOKですね!さらには「ファイル名を付けて保存」ダイアログボックスを表示させるところまで回答いただき、こちらの希望通りの動作でした。 なにぶん初心者で、フロー制御の使い方で迷う時があるので、コツコツ勉強しようと思います。 ありがとうございました。

その他の回答 (3)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

こういうことですか? 元のシートの構成が  Sheet1 表示  Sheet2 非表示  Sheet3 表示 のときに、マクロを実行後Sheet1とSheet3だけの新しいブックを作成する もしそうであれば、こんなマクロでもできそうです Sub Macro1() Dim wb As Workbook Dim ws As Worksheet  If Each ws In ThisWorkbook.Worksheets   If ws.Visible = xlSheetVisible Then    If wb Is Nothing Then     ws.Copy     Set wb = ActiveWorkbook    Else     ws.Copy After:=wb.Worksheets(wb.Worksheets.Count)    End If   End If  Next ws End Sub

mayu5968
質問者

お礼

回答いただいたマクロを実際に試してみました。 ANo.2のKenKen_SP様やANo.3のmerlionXX様のものと比較して、 動作(処理)が遅いように思います。それぞれのシートについて If分岐処理をしているからでしょうか? (初心者の勝手な推測で、見当違いでしたら申し訳ありません) ただ、zap35様の内容でマクロを組んだ方が良いケースも今後出てくる かと思います。勉強になりました。 回答ありがとうございました。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんにちは。 シートの表示・非表示ということならこんな感じ。 > 表示シートのみを選択するには   Dim sh As Object   For Each sh In ActiveWorkbook.Sheets     If sh.Visible = xlSheetVisible Then       sh.Select False     End If   Next > 表示シートのみを別ブック(新しいブック)にコピー   ' 現在選択中のシート(作業グループ)を新規ブックにコピー   ActiveWindow.SelectedSheets.Copy

mayu5968
質問者

お礼

For Each~ を使って、うまく動作する事ができました! まだまだ初心者ですが、コツコツ勉強していきます。 ありがとうございました。

  • shut0325
  • ベストアンサー率40% (490/1207)
回答No.1

表示シート=アクティブなシートということですよね?? 今、画面に表示されているシートがアクティブ(選択された)なシートです。 なので特に選択するコマンドは必要ありません。そのままコピーするだけです。 ActiveSheet.Copy

mayu5968
質問者

お礼

回答ありがとうございます。 ですが、今回の質問はアクティブシートではなく表示シートですので、 こちらの意図とは異なります。せっかく回答いただいたのに申し訳ありません。

関連するQ&A

  • 「シートを削除しますか」のメッセージを表示させないマクロ

    マクロで、シートをコピーし、コピー元のシートを削除したいと思っています。ただ、このとき、「選択したシートにデータが存在する可能性があります。データを削除するには[削除]をクリックしてください」というメッセージが出てしまいます。このメッセージを出ないように設定できないものでしょうか? よろしくお願いいたします。

  • エクセルのマクロでシートを表示させる

    マクロ初心者です。 1つのブックに20シート入っているのですが、 チェックBOXにチェックを付け、該当するシートのみを表示させるマクロを教えてください。 sheet1以外の下記のシートA~Dは非表示になっており sheet1にはシート名 A B C D というチェックBOXがあり、 例えば、Bにチェックを入れるとBのシートが表示され、 AとDなど複数チェックが入るとチェックしたシートが表示される様な マクロがありましたら、教えてください。 マクロの記録で読み込ませているのですが、複数シートの為、限界を感じております。 よろしくお願い致します。

  • エクセル2007 マクロ シート 移動

    マクロ学習中のものです。 エクセル2007 マクロの複数のブックのシートをひとつのブックにまとめたいです。 ふつうにコピペすると、コピー先ではマクロが走りません、 どのようにすればよいか、アドバイスください!! よろしくおねがいします。

  • excel2003 マクロを非表示に

    このような事は出来ますでしょうか? 今、シートの保護をかけているブックがあるのですが、 ツールからマクロを選ぶと、 マクロが表示されますが、 これを、非表示には出来ないのでしょうか? お教え下さい。 よろしくお願い致します。

  • 【Excel 2003】複数のブックのシートを一つのブックにコピーにしたい

    お世話になっております。 【Excel 2003】を使っております。 複数のブックには、複数のシートがありまして、 複数のシートを一つのブックにコピーしたいのですが、 手作業ですと、大変時間がかかります。 現在は、一つ一つブックをあけて、シートのコピーで 一つの新しいブックにいれてます。 なにか、これを簡単にできる方法は、ありませんでしょうか? フリーのソフトでも、マクロでも、教えていただけたら 助かります。よろしくお願いします。

  • 【Excel VBA】シート見出しの色を変更する

    Excel2003を使用しています。 シート数が10数枚のBookが複数あり、これらのBookで、シートのデータが変更されたら、シート見出しに色を付けるマクロを作りたく、とりあえず、マクロの記録をとってみました。 マクロの記録で、シート見出しの色を変更するコードや複数のシートを選択するコードはわかりましたが、実際にしたいことは、シート名が4桁の数値のシートにだけ、このマクロが実行されるようにしたいのです。このようなことは可能でしょうか?可能であれば、どのようにコードを記述すればいいでしょうか? よろしくお願いします。

  • EXCELでのシートの再表示(マクロ)

    あるエクセルのブックで、マクロを使い、複数のシートを非表示にしていました。 うっかり、そのマクロを削除してしまいました。 非表示にしたシートを、再表示する方法をお教えください。 なお、非表示にしたシートは、複数あり、シート名も不確かです。 よろしくお願いします。

  • シートにマクロ記述があるとシートに貼付ができない

    Windows7 Excel2007を使ってマクロ作成中の初心者です。 他の方がwinXP使用してるので、受け渡しのため、互換性のある Excel97-2007で保存・マクロ作成しています。 1)エクセルの新規ブックで、sheet1のセルA1をコピーし、sheet2のA1に貼り付けます。 当然のことながら、正常に貼り付けできます。 貼り付けが完了してもなお、「コピー先を選択しEnterキーを押すか、 貼り付けを選択します。」が表示され続けています。 2)ところがsheet1、sheet2にコードを書くと、(たとえば下のコード) sheet1のセルA1を右クリックしコピーを選択すると「コピー先を選択しEnterキーを押すか、 貼り付けを選択します。」が表示されます。そしてsheet2に「貼り付け」をしようsheet2の シート見出しを選んだ瞬間、「コピー先を選択しEnterキーを押すか、 貼り付けを選択します。」の表示が消えてしまい、「貼り付け」ができません。 3)他のシートに貼り付けができないので、シートにマクロがかけないので、困っています。どうしたらいいかお助けください。 Private Sub Worksheet_Activate() ActiveWindow.DisplayHorizontalScrollBar = False '水平 End Sub

  • VBA 存在しないシートを選択した時にエラーメッセージを表示するには?

    マクロのコードに Sheets("AAA").Select と記述していますが、あるブックに対しマクロを実行したとき、AAAというシートがないときは、AAAというシートがないというダイアログを表示したいのですが、そのようなことが出来ますか? 存在しないシートを選択した時にエラーメッセージを表示するには?

  • シート名が変化するシートをマクロで選択する方法は?

    1.シート名「フォーマット」にはデータ入力用定型フォーマットがある。 2.データを入力する際は「フォーマット」シートは残しておき、「フォーマット」シートをコピーしてシート名を「1000」に変更する。   次回データ入力する際は同様にシートコピー後、シート名「1001」「1002」という具合に変更して使用する。 3.シート「1000」をアクティブにし、マクロ登録をしてある図形ボタンをクリックして、マクロ実行。  このマクロは別途作成済で、事前に用意しておいたシート「作業用」にシート「1000」のデータを貼り付け、データ変換処理を行います。 4.変換処理後のデータをシート「1000」に貼り付ける。 という一連の流れの中で、「フォーマット」シートをコピーして使用する関係で、シート名が変化します。 上記4の段階でシート「1000」を選択するためにはどのようなマクロ記述をすればよいでしょうか?

専門家に質問してみよう