- ベストアンサー
【Excel2002】表示シートのみを選択するマクロ
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
表示シートとはアクティブということじゃなく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 では?
その他の回答 (3)
- zap35
- ベストアンサー率44% (1383/3079)
こういうことですか? 元のシートの構成が 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
お礼
回答いただいたマクロを実際に試してみました。 ANo.2のKenKen_SP様やANo.3のmerlionXX様のものと比較して、 動作(処理)が遅いように思います。それぞれのシートについて If分岐処理をしているからでしょうか? (初心者の勝手な推測で、見当違いでしたら申し訳ありません) ただ、zap35様の内容でマクロを組んだ方が良いケースも今後出てくる かと思います。勉強になりました。 回答ありがとうございました。
- KenKen_SP
- ベストアンサー率62% (785/1258)
こんにちは。 シートの表示・非表示ということならこんな感じ。 > 表示シートのみを選択するには Dim sh As Object For Each sh In ActiveWorkbook.Sheets If sh.Visible = xlSheetVisible Then sh.Select False End If Next > 表示シートのみを別ブック(新しいブック)にコピー ' 現在選択中のシート(作業グループ)を新規ブックにコピー ActiveWindow.SelectedSheets.Copy
お礼
For Each~ を使って、うまく動作する事ができました! まだまだ初心者ですが、コツコツ勉強していきます。 ありがとうございました。
- shut0325
- ベストアンサー率40% (490/1207)
表示シート=アクティブなシートということですよね?? 今、画面に表示されているシートがアクティブ(選択された)なシートです。 なので特に選択するコマンドは必要ありません。そのままコピーするだけです。 ActiveSheet.Copy
お礼
回答ありがとうございます。 ですが、今回の質問はアクティブシートではなく表示シートですので、 こちらの意図とは異なります。せっかく回答いただいたのに申し訳ありません。
関連する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
- ベストアンサー
- Visual Basic
- VBA 存在しないシートを選択した時にエラーメッセージを表示するには?
マクロのコードに Sheets("AAA").Select と記述していますが、あるブックに対しマクロを実行したとき、AAAというシートがないときは、AAAというシートがないというダイアログを表示したいのですが、そのようなことが出来ますか? 存在しないシートを選択した時にエラーメッセージを表示するには?
- ベストアンサー
- Visual Basic
- シート名が変化するシートをマクロで選択する方法は?
1.シート名「フォーマット」にはデータ入力用定型フォーマットがある。 2.データを入力する際は「フォーマット」シートは残しておき、「フォーマット」シートをコピーしてシート名を「1000」に変更する。 次回データ入力する際は同様にシートコピー後、シート名「1001」「1002」という具合に変更して使用する。 3.シート「1000」をアクティブにし、マクロ登録をしてある図形ボタンをクリックして、マクロ実行。 このマクロは別途作成済で、事前に用意しておいたシート「作業用」にシート「1000」のデータを貼り付け、データ変換処理を行います。 4.変換処理後のデータをシート「1000」に貼り付ける。 という一連の流れの中で、「フォーマット」シートをコピーして使用する関係で、シート名が変化します。 上記4の段階でシート「1000」を選択するためにはどのようなマクロ記述をすればよいでしょうか?
- ベストアンサー
- オフィス系ソフト
お礼
表示シートの選択について、For Each~ を使えばOKですね!さらには「ファイル名を付けて保存」ダイアログボックスを表示させるところまで回答いただき、こちらの希望通りの動作でした。 なにぶん初心者で、フロー制御の使い方で迷う時があるので、コツコツ勉強しようと思います。 ありがとうございました。