【エクセルVBA】要らないシートを削除

VBA

※本サイトはアフィリエイト広告を利用しています。

VBAのファイルは基本的に何度も使うものです。何度も繰り返し行っている仕事を自動化するためのものだからです。
ということは、使い方によっては、
毎回、使う時に初期状態に戻したい
っていうこともよくあります。

今回はそんな時に便利なVBA、
”前回実行時に増えたシートを削除して初期状態に戻す”
方法のご紹介です。

今回のコードはこんな感じです。2段構えになっています。
何でかというと、説明のために、なにかしらの操作をしてシートを増やす必要があるからですね^^;

Sub DeleteSheets()
   
   Dim objSheet As Worksheet
   
   '削除する時のメッセージを消す
   Application.DisplayAlerts = False
   
   '全部のシートを1つずつチェック
   For Each objSheet In ThisWorkbook.Worksheets
      If (objSheet.Name <> "Sheet1") Then
         Worksheets(objSheet.Name).Delete
      End If
   Next
   
   '再度メッセージが表示されるように戻す
   Application.DisplayAlerts = True
   
   'CSVファイルを探してデータをコピー
   Call CopyFile(csv)  

End Sub


Function CopyFile(FileType As String)

   Dim buf As String
   Dim Path As String
   
   '  このファイルがあるフォルダのパスを取得
   Path = ThisWorkbook.Path
   
   'CSVファイルだけを取ってくる
   buf = Dir(Path & "\" & "*." & FileType)
   '該当するファイルが無くなるまでループ
   Do While buf <> ""
       
       '見つけたファイルを開く
       Workbooks.Open Path & "\" & buf
       
       'シートをまるごとコピー
       Worksheets(1).Copy After:=ThisWorkbook.Worksheets("Sheet1")
               
       'CSVファイルを閉じる
       Workbooks(buf).Close
       
       '次のファイルを取得
       buf = Dir()
   Loop
End Function

2個目に書いてあるCopyFileというのは、以前紹介した『フォルダ内に入ってるファイルからデータをコピー』するVBAと同じものです。(ファイルの形式をCSV以外にも対応できるように少し改変を加えてます。)
ブログの記事と動画はこちらをご参照ください。

ブログはこちら

フォルダ内のファイルを開いてデータを転記するVBA

動画はこちら

このCopyFileというのを実行することによってシートが増えるのですが、次にまた実行する時に前回増えたシートを消すのがDeleteSheetsの方になります。

存在しているシートを一つずつチェックしていって、条件に当てはまっているシート(今回の場合はSheet1以外のシート)を削除するというものです。

シートを削除するためのForEach ~ Nextの部分の前後にある
Application.DisplayAlerts = False
Application.DisplayAlerts = True
この2文は、シートを削除する時に出るアラートメッセージを表示しないようにするためのものです。
シートを削除しようとするとこんなメッセージ出ますよね。

VBAの実行時に、こんなメッセージが毎回出て実行が止まっては困ります!
というわけでこのメッセージを表示しないようにひと手間が必要になってくるわけです。

こちらのコードの解説は、YouTubeにて動画で説明していますので、良かったらそちらもご覧になってみてください。
実際に1行ずつ実行しながらなので理解がしやすいと思います!

【エクセルVBA】要らないシートを削除する方法

この記事がどなたかのお役に立てれば嬉しいです。最後まで読んでいただいてありがとうございました。

お問い合わせ、お仕事のご依頼などがありましたら下記のお問い合わせフォームからご連絡お願いします。

お問い合わせフォーム
自分で使うVBAの書き方で詰まっている方のお手伝いであれば5,000円ほどから、VBAを一から作成して納品であれば3万円ほどから承ります。

お問い合わせ、お仕事のご依頼などがありましたら下記のお問い合わせフォームからご連絡ください。
お問い合わせフォーム
VBAの作成であれば50,000円ほどから、自分で使うVBAの書き方で詰まっている方のお手伝いであれば10,000円ほどから承ります。

VBA
スポンサーリンク
スポンサーリンク
りこをフォローする
エクセルVBAの寺子屋

コメント

タイトルとURLをコピーしました