• ベストアンサー

sheetの中身もコピーしたい

表題通りの質問になります。以下のソースを実行すると、コピーはされますが、中身はコピーされません。どうすればよろしいでしょうか? アドバイスお願いいたします。 Sub sheetの連続コピー() Dim sheet_name As String '文字型変数の宣言 sheet_name = ActiveSheet.Name '現在アクティブになっているシート名の取得 'Range("A1") = sheet_name '取得したsheet名をA1のセルに表示 Dim NewWS As Worksheet For i = 1 To 10 'Worksheets.Add ~ 空のSheetが ○個 挿入される Set NewWS = Worksheets.Add(Before:=Worksheets(sheet_name)) NewWS.Name = sheet_name & i Next End Sub

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

  • ベストアンサー
回答No.1

これはコピーというより、新しいシートを挿入しています。質問内容がちょっと不明ですが、もしアクティブシートをコピーしたいのであれば、For~Nextの中身を以下のコードに置き換えればよいかと思います。 Sheets(sheet_name).Select Sheets(sheet_name).Copy Before:=Sheets(1) Sheets(1).Name = sheet_name & i

u-mesh12
質問者

お礼

なるほど、Sheets()でコピー元を呼び出してあげればよかったのですね。アドバイスありがとうございましたm(_ _)m

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

多分目指しておられることは、下記でも可能ではないかと 思います。ご参考になれば。 Sub test01() sn = ActiveSheet.Name For i = 1 To 3 Worksheets(sn).Activate ActiveSheet.Copy after:=ActiveSheet n = Sheets.Count ActiveSheet.Name = "sheet" & n Next i End Sub コピー後に出来たシートがアクチブになるようですが それを使ってます。

u-mesh12
質問者

お礼

参考にさせていただきます。アドバイスありがとうございましたm(_ _)m

関連するQ&A

  • VBAで初歩的な質問ですシートのコピーについて

    Sub SheetCopy() For i=1 to 31 WorkSheets.Add.Move after:=WorkSheets(workSheets.Count) シート名=i ActiveSheet.Name=シート名 Next End Sub と、シートをコピーするプロシージャを作りました。本当は、シート名を7月1日から、7月31日の31枚を作りたいのですが、どのように書けばよいのでしょうか? よろしくお願いします。

  • ExcelVBA シートのコピーについて

    こんにちは! VBAにて連番のシートを作成するマクロを組みました 1日→2日→3日・・・→60日 Sub シートコピー() Dim i As Integer, wst As Worksheet Set wst = Worksheets("コピー元") For i = 1 To 60 wst.Copy After:=Worksheets(i + 2) Worksheets(i + 3).Name = i & "日" Next Set wst = Nothing End Sub 54日まで作ることは出来たのですが、なぜか55日からが作成できません その後シートを消し、もう一度実行すると、1枚もシートが作れません この現象は何でしょうか? また、どうやれば60枚分コピーできるでしょうか?

  • シート名の取得について

    お世話になります。 以下の様な記述で、追加したシート名を 取得したいのですが、 元々「sheet1」しかない所に追加しており、 追加されたシートは「sheet2」で、 アクティブにもなっているのですが、 コードネームを取得すると、何度やっても 「sheet1」になってしまいます。 どこがおかしいのか分からなく、 ご教示お願い致します。 Sub MACRO() Dim newsheet As Worksheet Dim mysheet As String Dim myrngf As Range Workbooks.Open Filename:="C:\使用量.xls" Set newsheet = Worksheets.Add mysheet = ActiveSheet.CodeName Set myrngf = Workbooks("使用量.xls").Sheets(mysheet).Range("a:a") ~処理内容~ Range("a:b").Columns.AutoFit End Sub

  • エクセルでシートのコピー

    いつもお世話になっています、マクロ初心者です。 カレンダーの1月分をシートごと12月までコピーするのに、サンプル集をそのまま引用したのですが、シート名を指定する所でエラーになってしまいます。 $"月"の部分を削除すればうまくいきます。 エクセル2000パーソナルだからなのでしょうか? 'シートコピー Worksheets(1).Cells.Copy For i = 2 To 12 Worksheets.Add after:=Worksheets(ActiveSheet.Index) ActiveSheet.Name = CStr(i) & "月"(この行がエラーになります) ActiveSheet.Paste Range("A1").Select Next i エクセル2000パーソナルで処理する方法がありましたら教えてください。

  • 隣のシートでのコピーのマクロ

    隣のシートでコピーをするマクロを作成しようとしたところ、エラーがでます。 具体的には、以下のようなマクロを作成したところ、 最後の、「 WC.Range(Rows(1), Rows(RowNum)).PasteSpecial」で、 「アプリケーション定義またはオブジェクト定義のエラーです」というメッセージがでてきます。 試しに、 WC.Range("a1").Select としても同様のエラーがでるので、 他のシートでのRangeの使い方に問題があるようだ、というのがわかるのですが、 具体的に何が問題で、どのように解決をしたらいいのかがわかりません。 よろしくお願い致します。 =====以下、マクロ===== Dim WA As Worksheet Dim WC As Worksheet Dim i As Integer Dim LastRow As Long Dim RowNum As Long i = ActiveSheet.Index Set WA = Worksheets(i) Set WC = Worksheets(i + 1) WC.Rows(1).Copy WC.Range(Rows(1), Rows(RowNum)).PasteSpecial

  • Excel VBA 全sheet名の取得

    1つのbookに対して、存在する全てのsheet名を一括で取得して、"まとめ"用のsheetに表示させる。という処理をしたいのですが、中々うまくいきません。 条件としましては… ・"まとめ"sheetは既に作成済 ・sheet数は複数ある ・まとめsheetの名前も一番最後に表示されると思いますが…!? 今回は処理を考慮しません。 まとめ sheetには セルA1,A2,A3…という感じで表示させてたい。で、以下がソースになります。 Sub 全sheet名_取得() Dim ws As Worksheet Dim str As String i = 1 For Each ws In ActiveWorkbook.Sheets str = ActiveSheet.Name Worksheets("まとめ").Range("A" & i) = str i = i + 1 Next End Sub Webの解説を色々と参考にはしてみたものの中々上手く処理出来ません。大変雑な処理になってしまい…、他にこんな方法もあるという場合はご教授ください。アドバイスよろしくお願い致します。

  • VBAでsheetのコピー

    ご回答有難う御座いました。補足説明を致します。動作するとこまでは、出来たのですが、一点変更しました。:=のコピーの所でデバッグすると、エラーになるので、=だけにしました。すると動作するのですが、新しいsheetの名前が、コピー元のsheet名になります。そして、MsgBoxを入れると、エラーになります。また、1sheetだけがコピーされます。大変恐縮ですが、もう一度ご教授願います。補足説明なりますが、やりたい事は、拡張子がxlsmの中に名前のついた10個のsheetがあります。この10個のsheetを拡張子がxlsxのBookにコピーしたいのですが、このBook1のsheetをVBAから新に作成しBook2のsheet1に纏めたいのですが、纏め方は、Book2のsheet1の下から上に10sheetをコピーして、条件としてBook2のsheet1の名前は、固定で構いません。Book1の一番初めのsheetにコピーする時だけ3行目にある見出しだけは、Book2のsheet1に付けたく。それ以外のBook1のsheetは、デターだ4行目以降をコピーしたいのですが、また、コピーしたいsheetの範囲に列は、A1~AFで列は3~62までです。マクロはご教授頂いた、下記通りです。 Sub macro1() Dim i As Long Dim w0 As Workbook Dim s As Worksheet Set w0 = ActiveWorkbook '1枚目シートから貼り付け先のブックを作る w0.Worksheets(1).Copy Set s = ActiveSheet '2枚目以降のデータをコピーする For i = 2 To w0.Worksheets.count With w0.Worksheets(i) .Range("A4:AF" & .Range("A65536").End(xlUp).Row).Copy Destination = s.Range("A65536").End(xlUp).Offset(1) End With Next i End Sub これを先ほど書きました、マクロを教えて頂けませんでしょうか?何せ、マクロ初心者なので、msm相談箱がたよりです。何卒マクロを教えて頂きたく宜しくお願い申し上げます。

  • 最後の3枚を除くシート名をセルに表示したい。

    Excel2007でマクロ作成の初心者です。 シート名をセルに表示したいのですが、シートの最後の3枚だけは セルに表示したくないです。 以下やってもできませんでした。 Sub シート名をセルに() Dim ws As Worksheet Dim i As Integer Const EXCEPT_NAME = "請求書 経理部 一覧表" i = 0 For Each ws In Worksheets i = i + 1 Cells(i + 3, 4) = ws.Name Next End Sub たとえば、Worksheets.Count -3  の数だけセルに表示するにはどうしたらよいでしょうか。

  • ブック内のシート名を右から取得したい

    Sub Sample() Dim s As Worksheet For Each s In Worksheets Debug.Print s.Name Next End Sub このコードを実行すると、左からシート名をひとつずつ取得しますが 右から取得して書き出すにはどうすればいいでしょうか?

  • 以下のコードですと、アクティブシート以外全て隠してしまいますが、

    以下のコードですと、アクティブシート以外全て隠してしまいますが、 選択(複数)されているシート以外を非表示にするにはどのように書き換えたら良いでしょうか。 Sub Test() Dim mstr as String Dim i as Integer mstr = ActiveSheet.Name For i = 1 To Worksheets.Count If Worksheets(i).Visible = True And Worksheets(i).Name <> str(0) Then Worksheets(i).Visible = xlVeryHidden End If Next i End Sub よろしくお願いします。

専門家に質問してみよう