• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:(Excel2007 VBA)ワークシートのコピー)

Excel2007 VBAでワークシートのコピー方法

このQ&Aのポイント
  • Excel2007において複数シートの最後尾をコピーし、新しいシート名を付ける方法について教えてください。
  • 現金出納帳のファイルには「23年7月」「23年8月」「23年9月」の3つのシートがあります。マクロ実行時に、「23年9月」のシートをコピーし、新しいシート「23年10月」を作成したいです。
  • 使用機種はWindows Vista Excel2007で、質問者はVBAの初心者です。Excel2007において、最後尾のシートをコピーするコードを教えてください。

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

  • ベストアンサー
  • jin34
  • ベストアンサー率80% (17/21)
回答No.3

質問者様はVBA初心者とのことですので下準備はいりますが簡単なやり方で行きます。 シート名のリストを別シートに作り、追加したシート名をそこから拾ってくる流れです。 1.ワークシートを追加し、名前をつけます。ここでは「月リスト」にします。 2..月リストシートをワークブックの一番左に移動させておきます。 3.月リストシートのセルA1から下に既存シートの名前と、先の年月の名前を入れていきます。 ここではセルA1=月リスト、A2=23年7月、A3=23年8月、A4=23年9月........という具合。セルの書式は文字列にして行なってください。 4.VBAエディターを開き、「挿入」→「標準モジュール」。追加したModule〇に以下のコードを記述。 Sub test() Dim i As Integer i = ThisWorkbook.Worksheets.Count '既存のシート数を取得 Worksheets(i).Copy after:=Worksheets(i)   '最終シートをコピーして後ろに挿入 Worksheets(i + 1).Name = Sheets("月リスト").Cells(i + 1, 1).Value  '月リストからシート名を取得してシート名変更 End Sub

dradra33
質問者

お礼

jin34様 ご回答ありがとうございます。 教えていただいた手順通り作成したら、 新しいシートに新しい任意の名前(23年10月)が 作成できました。助かりました

その他の回答 (2)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

ANo.1です。 必ず月末(月をまたがない範囲で)に行なうのなら、 Worksheets(Worksheets.Count).Copy After:=Worksheets(Worksheets.Count) Worksheets(Worksheets.Count).Name = Format(DateSerial(Year(Date), Month(Date) + 1, 1), "e年m月") こんな感じで如何でしょう。

dradra33
質問者

お礼

n-jun様 ご回答ありがとうございます。 Worksheets(Worksheets.Count).Name = Format(DateSerial(Year(Date), Month(Date) + 1, 1), "e年m月") のコード参考になりました。 新しく作成したシートに「10月1日」の日付を 入力するのその時の参考にさせていただきます。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

一番右のシートを更に右にコピペするなら Worksheets(Worksheets.Count).Copy After:=Worksheets(Worksheets.Count) こんな感じかな?

dradra33
質問者

お礼

n-jun様ご回答ありがとうございます ご回答について補足質問がございますので、 そちらの方もご確認いただければ幸いです。

dradra33
質問者

補足

n-jun様 追加の質問で恐縮です。 ご回答のコードで最後尾のシート(一番右のシート)を さらにコピーすることができました。 そのコピーした時に新しくできたシートに新しい名前を 付けるためにはどうすればよいでしょうか? 新しくできたシート名が、「23年9月(2)」ではなく、 、「23年10月」など任意の文字列の名前にするには どうすれば良いでしょうか? もし、ご存知であれば、幸いです。 たびたび恐れ入りますがよろしくお願い申し上げます。

関連するQ&A