• ベストアンサー

【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