• ベストアンサー

VBA=エクセルシートの削除方法のプログラムについて

エクセルシートの削除で、メイン以外の「コピー等で作成されたシートを全部削除」することは出来ますか? 出来るとすれば、どのようなVBAになりますか? 例えば、「原本」という名前のエクセルシートはどのような場合でも保存しておきたく、 原本以外に原本のコピー等で「カナ並替」「住所並替」等々のシートを作成したとします。 「カナ並替」「住所並替」等々のシートをそのまま残しておきますと、あとから追記入力しようとした人が、原本以外に入力してしまうミスを防ぎたいのです。 VBAでエクセルシートの名前で指定してデリートすればシートの削除が出来るのは分かっているのですが、「原本以外」という くくりで削除できる方法を知りたいのですが-・・・・数式で表せば「≠」ということになりますが・・この場合ですとシートが何枚出来ても一発で「原本以外」は全て削除されますので、非常に有効と考えています。 よく分からないのでよろしくお願いします。

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

  • ベストアンサー
  • Bickyon
  • ベストアンサー率41% (42/101)
回答No.3

#1です。 うまくいきませんか?私はできたんですけど... #2さんの回答と合体させた以下のコードで試して うまくいきましたよ。 Sub Macro1() ' ' Macro1 Macro ' Dim ObjWorkbook As Object Dim ObjSheet As Object Set ObjWorkbook = Application.ActiveWorkbook Application.DisplayAlerts = False For Each ObjSheet In ObjWorkbook.Worksheets If ObjSheet.Name <> "原本" Then ObjSheet.Delete End If Next Application.DisplayAlerts = True Set ObjWorkbook = Nothing ' End Sub

hiyaku
質問者

お礼

おはようございます。 今朝早速試してみました。。。 うまくいきました。。\(^o^)/ 大変ありがとうございました。 #2さんの回答と合体させることは全く考えていませんでした。。 そこでお願いですが、経験者である「Bickyon」でしたらお分かりになるかと思い、 下記の場合にはどんなコードがよろしいのでしょうか? よろしくご教示お願いします。 ⇒QNo.2911086 VBA=一定時間エクセルの入力操作がない場合、自動的にそのブックを閉じたい  ← よろしくお願いします。 .

その他の回答 (2)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

原本以外のシートを全て削除します。 Sub WS_DEL() Dim ws As Worksheet Application.DisplayAlerts = False For Each ws In Worksheets If ws.Name <> "原本" Then ws.Delete Next Application.DisplayAlerts = True End Sub

  • Bickyon
  • ベストアンサー率41% (42/101)
回答No.1

以下のコードでどうですか? Dim ObjWorkbook As Object Dim ObjSheet As Object Set ObjWorkbook = Application.ActiveWorkbook For Each ObjSheet In ObjWorkbook.Worksheets If ObjSheet.Name <> "原本" Then -- 不要シートの削除処理 -- End if Next Set ObjWorkbook = Nothing

hiyaku
質問者

お礼

スミマセン、返事が遅くなりました。。。m(__)m ご教授頂いたコードを貼り付けてみましたが、 私のやり方がまずいせいか、うまく起動しません・・・

関連するQ&A

  • EXCEL VBA シートの名前を指定してコピー

    EXCEL VBA 初心者です。 とても困っています。 助けてください。 excel2010を使っています。 今,「原本」というシートがあり,それをマクロを使って同じブック内にコピーしたいと思っています。 コピーして新しく作られたシートの名前は「A1」のセルに入力されている値にしたいです。 コピーされた後のシートにはマクロボタンは削除したいと考えています。 また,コピーした後のアクティブシートは「原本」のシートにしたいのですが これを全部いれたコマンドはどのようになるのでしょうか。 似たような質問だったり,回答があるのですが, どのように組み合わせたらいいのかよく分かりません。 どなたかお助けいただけないでしょうか。 よろしくお願いします。

  • EXCEL VBAでシートを削除したい

    こんにちは。EXCEL VBAのことで質問させていただきます。 マクロでシートを削除しようと思い、 下記のように記述しました。 Sheets(1).Select ActiveWindow.SelectedSheets.Delete しかし、このように記述すると「選択したシートを削除します。~」のようなメッセージが出てきてしまうため、何度もOKボタンを押さなければなりません。これではマクロで自動実行した意味がなくなってしまいます。 このメッセージを回避する方法はないでしょうか。 宜しくお願い致します。

  • VBA シートの名前が重複するときに すでにある方を削除する

    VBA シートの名前が重複するときに すでにある方を削除する よろしくお願いします。 エクセル2003を使っています。 「入力シート 」をコピーして「DB」という名前をつける。 すでに「DB]シートがあれば「DB」シートを削除する。 その時に、もし「集計」シートと「名簿」シートがあれば一緒に削除する というコードを考えています。 集計シートや名簿シートはない場合もありますので、最初からdeleteにするとエラーになります。 どうぞお知恵をお貸しください。 sub シートの挿入と削除 () Worksheets("入力シート").Activate ActiveSheet.Copy After:=ActiveSheet On Error Resume Next 'エラーが発生しても続行 ActiveSheet.Name = "DB" If Err.Number = 1004 Then Application.DisplayAlerts = False '警告メッセージを表示しない Sheets("DB").Delete Application.DisplayAlerts = True ActiveSheet.Name = "DB" End Sub End If

  • excel vba シートがなければコピーしたい

    excel vba で教えてください sheet名0を雛形に、使用者が1 2 3のsheet名でコピーして利用できるようにしたい。1はあるのでコピーを作らない。2はないのでsheet名0をコピーして作るといったように現在sheet2があるや否やで作成するや否やを判断してsheet copyをしたい。 すべてのsheet を名前をしらべつつ判断したいのです 教えてください

  • EXCELのVBAにてシート削除の確認を表示させない

    EXCELにてVBAよりシート削除をコーディングしているのですが、 シート削除の確認を表示させない方法は、ありませんか? 例) For Each W_SHEET In Worksheets if W_SHHET.NAME <> "master" Then W_SHEET.DELETE End If Next

  • VBAで指定したSheetの削除

    お世話になります 指定したシート以外すべてのシートを削除させるボタンを作成したいのですが ↓こんなものを見つけました。(URLわからくなってしまった;;) これは図1~ワークシートを削除させるVBAらしいのですが ■解らないこと なぜかsheetにすると削除してくれません。 '指定以外ワークシート削除 Private Sub CommandButton1_Click() Dim myShe As Worksheet For Each myShe In Worksheets If myShe.Name <> Worksheets("図").Name Then myShe.Visible = Delete End If Next End Sub

  • エクセルVBA シートの追加と名前の変更

    エクセルに「原本」シートがあり、マクロを実行すると原本シートを5シート(5日分)追加し、 (1)一つ目に追加したシートのB2のセルに「追加する日の日付け」を入力し、 シート名にその日付をyymmdd形式で名前を付け、 (2)二つ目に追加したシートのB2のセルに「追加する日の次の日の日付け」を入力し、 ・・・同様の処理・・・ (6)一つ目の追加したシートをアクティブシートにする。 というように、連続した5日分のシートを追加したいと考えています。 VBAの全くの初心者ですので教えていただけると大変助かります。 そんな素晴らしいことが短時間で教えていただけるものなのでしょうか。

  • VBAで別ブックのシートを指定して削除したい。

    VBAで別ブックのシートを指定して削除したい。 エクセルでVBAを使用して、別ブックのシートを削除するアプリを作成しています。 これらのマクロを記述するエクセルとは別ブックのシートを削除したいです。 以下の記述だと、削除がされないようなのですがどのように記載したら 別ブックのシートを削除することが可能でしょうか。 エラー等は出ません。また、別ブックの情報も取ってこれているようですが、 削除ができません。。 どなたか教えてください。 'Excelを起動し、ファイルを開く Set xl = CreateObject("Excel.application") xl.Workbooks.Open fileName:=fileFullPath, ReadOnly:=False, IgnoreReadOnlyRecommended:=True '※fileFullPathがオープンするエクセルファイルです。 '"一覧"シートの1列目に「公開時削除」という文字が入っている行の2列目のテーブル名を取得 'シートの削除 Application.DisplayAlerts = False xl.ActiveWorkbook.Worksheets(deleteTableName).Delete   Application.DisplayAlerts = True   '※deleteTableNameは削除したいシートの名前が入ります。

  • VBAでのエクセルワークシート作成について

    お世話になります。 VBAで、オープンにしているエクセルファイルで、 シートを検索してシート「TEST」(仮名)が見つからなければ 「TEST」名で新規ワークシートを作成する。 尚且つ、「TEST2」のシート(一番後ろにあるシート)の前に 作成したいのです。 何卒、ご教示下さいます様、宜しくお願いします。

  • エクセル VBA

    (1) Sub 印刷() With Sheets("原本") .Cells.FormatConditions.Delete .PageSetup.PrintArea = Range("A1:K73").Address .PrintOut End With End Sub としているのですが ボタンを間違って押した時も印刷がされてしまいます 押したときに 印刷しますか? はい いいえ みたいなのを確認するようにしたいのですが どうすればいいでしょうか? (2) Sub 保存() Dim MySheetName As String MySheetName = InputBox("シート名を入力してください") Sheets("9月1日").Copy After:=Sheets(Worksheets.Count) ActiveSheet.Name = MySheetName Sheets("原本").Range("A1:K73").Copy Sheets("原本").Range("A1") End Sub で原本シートをコピーして新しいシートを作成するプログラムを 作ったのですが、シート名を入力しはいを押すと作成されるのですが キャンセルを押した時も勝手にシートが作成されるのですが キャンセル時は何もシートを作成しないように したいのですが どうしたらいいでしょうか? どちらも教えて貰いながら作成したため 自分で修正できなく困ってます お手数ですがよろしくお願いします