エクセルでページをコピーして貼り付けるマクロ

このQ&Aのポイント
  • エクセルで複数枚のページを作成するためのマクロを利用していますが、一部のページではマクロが実行できない問題が発生しています。
  • マクロの記録機能を使用して、ページの行をコピーして貼り付けることができますが、特定の行にのみ貼り付けができずに困っています。
  • ページを下に追加するためには、特定の行を選択して追加することができないため、別の方法を探しています。
回答を見る
  • ベストアンサー

エクセルでページをコピーして貼り付けるマクロ

[sheet1]内での作業ですが… 雛形のページを1枚作成して、複数枚のページが必要になったので「マクロの記録」で1ページ分の行をコピーして、1ページの下に貼り付けてみました…で、それは実行できるのですが、3ページ目では実行できません。 マクロの知識はありませんが、ページを貼り付ける行が変更できないからだなぁ~と。 ===================== Sub ページを追加() ' ' Macro1 Macro ' マクロ記録日 : 2013/12/12 ユーザー名 : エクセル-NOTE ' ' Rows("9:51").Select Selection.Copy Rows("52:52").Select ActiveSheet.Paste End Sub ===================== 何処でも好きな行を選択してページを増やすことはできないのでしょうか? ただ、単純にページを下へ下へと、必要な分だけ追加したいのです…が。 上の「数行」は見出しに利用しています。

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

  • ベストアンサー
noname#203218
noname#203218
回答No.2

マクロを実行毎にコピペで1ページ分を増加させたいという事であれば下記方法で可能だと思います。 ご参考まで。 Sub ページを追加() Dim myRange As Range Dim Maxrow, i, j As Long 'データがあるセル範囲の最終行番号を取得 Set myRange = ActiveSheet.UsedRange Maxrow = myRange.Row + myRange.Rows.Count - 1 '現在ページ数を計算 i = Application.RoundUp((Maxrow - 8) / 43, 0) 'ペーストを開始する行番号を計算 j = i * 43 + 9 Rows("9:51").Select Selection.Copy Rows(j).Select ActiveSheet.Paste End Sub

ok-sakana
質問者

お礼

ありがとうございます、返事が送れました、申し訳ないです。m(_ _)m 教えていただいたmacroで対応できました。 知識がないのでmacro自体は意味がわかりませんが… できれば、できたで… 「そっかぁ~こういう事も、ああいうこともできるかなぁ~」などと、いろいろ考えが広がりましたので、今回のことを契機にmacroを少し勉強しようと思いました。 また、質問をするかも解りません…その時は、よろしくです。 今回はありがとう御座いました。

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

Rows("9:51").Select Selection.Copy Rows("52:52").Select ActiveSheet.Paste Rows("94:94").Select ActiveSheet.Paste でどうなります?

ok-sakana
質問者

お礼

今回は、素早い対応、ありがとう御座いました。 返事が遅れまして、すみません。 macroのほうも、私の知識不足のため、十分な検証もできなかったことだと思っています、申し訳ないです。 ありがとう御座いました。

ok-sakana
質問者

補足

返事が遅くなりました、申し訳ないです。<(_ _)> 早速、教えていただいたmacroをコピーして確認してみましたが… エラー??(よく解りません)になりました。 ページを増やすというより、結局のところは「行をコピーして貼り付け」なので、もう少し試してみます。 ありがとう御座いました。

関連するQ&A

  • エクセル「マクロの記録」を少し直したい

    マクロの記録で作った下記を Sub Macro1() Sheets("Sheet1").Select Rows("6:6").Select Selection.Copy Sheets("Sheet2").Select Rows("2:2").Select ActiveSheet.Paste End Sub 以下のように書き換えたら、2行目(Paste)がエラーになりました。 Sub ts1() Sheets("Sheet1").Rows("6:6").Copy Sheets("Sheet2").Rows("2:2").Paste End Sub セレクトしないで行ないたいのです。 どう直せばいいでしょうか?

  • 簡単なマクロですが教えてください。

    マクロで、現在アクティブになっているセルのある行全体を選択し、 そこに行を追加(挿入)する。 その後、1行目にある行全体をコピーして、追加(挿入)した 行に1行目の数式をコピーしたいのです。 マクロの記録から作成しようとしたら、 毎回13行目に挿入・コピーするようになってしまいました。 例えば、マクロ実行時に5行目にアクティブセルがあれば、 5行目に挿入したいのです。 この方法を教えて頂けませんでしょうか。 現在の誤ったマクロ構文を付けますので、 どのように直したらよいか教えて頂けませんか。 何卒よろしくお願いいたします。 Sub osietekudasai() ' ' osietekudasai Macro ' ' Rows("13:13").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Rows("1:1").Select Selection.Copy Rows("13:13").Select ActiveSheet.Paste Application.CutCopyMode = False Range("A13").Select

  • Excelのマクロで現在行を指定する方法を

    Excelのマクロで現在行を変えて、現在見ている行にする方法を教えてください。 下記は操作を記録させて作成したものですが、これを例えば、Excelの213行で実行させると 205行に196~203行が再度追加されてしまいます。 これを変えて、現在見ている例えば213行の前に196~203行を入れたいという場合はどうすればいいのでしょうか? つまり、Rows("205:205").Selectの205というのを、現在見ている行に変更できれば良いように思うのですが。よろしくお願いします。 Sub Macro3() ' Keyboard Shortcut: Ctrl+Shift+A   Rows("196:203").Select   Selection.Copy   Rows("205:205").Select   Selection.Insert Shift:=xlDown   ActiveWindow.SmallScroll Down:=9 End Sub

  • エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです

    エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです 1つのエクセルファイルの中に複数のSheetがあります。 各Sheetの4行目以降(5行目から)にデータのあるA列~O列をコピーしていって、 挿入-ワークシート(Sheet1という名前で構わない)に全てを順番にコピーしていきたいです。 ”新しいマクロの記録”で下記のように作成したのですが、  ・5行目からデータのあるA列~O列をコピーしていく   ・存在する全てのSheetから上記の作業をする というマクロの書き方が分かりません。 恐れ入りますがお時間ある方で上記の内容をご理解頂ける方がいましたらアドバイス頂ければ非常に助かります。 Sub Macro1() Sheets.Add Sheets("ER10(zy)").Select Rows("5:8").Select Selection.Copy Sheets("Sheet1").Select ActiveSheet.Paste Sheets("ER10(cx)").Select Rows("5:9").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("A5").Select ActiveSheet.Paste Sheets("ER10(zht)").Select Rows("5:13").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("A10").Select ActiveSheet.Paste End Sub

  • エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです

    エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです 1つのエクセルファイルの中に複数のSheetがあります。 各Sheetの4行目以降(5行目から)にデータのあるA列~O列をコピーしていって、 挿入-ワークシート(Sheet1という名前で構わない)に全てを順番にコピーしていきたいです。 ”新しいマクロの記録”で下記のように作成したのですが、  ・5行目からデータのあるA列~O列をコピーしていく   ・存在する全てのSheetから上記の作業をする というマクロの書き方が分かりません。 恐れ入りますがお時間ある方で上記の内容をご理解頂ける方がいましたらアドバイス頂ければ非常に助かります。 Sub Macro1() Sheets.Add Sheets("ER10(zy)").Select Rows("5:8").Select Selection.Copy Sheets("Sheet1").Select ActiveSheet.Paste Sheets("ER10(cx)").Select Rows("5:9").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("A5").Select ActiveSheet.Paste Sheets("ER10(zht)").Select Rows("5:13").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("A10").Select ActiveSheet.Paste End Sub

  • 列を2度コピーするマクロ

    B列をC列にコピーした後、A列をB列にコピーするという2段階コピーの下記マクロを、「新しいマクロの記録」を使って作りました。 しかし下記マクロは 列選択時の青反転が実行時に残って、使用感がいまひとつです。 「新しいマクロの記録」ではなく、もっとスマートなマクロはできないでしょうか? なお、列選択ではなく必要なセル数だけ選択すれば青反転はなくなると思いますが、行数が確定していないので列選択にしたいと思っています。 ついでに下記マクロについて質問です。 11行目はなぜ5行目とは違うのでしょうか?.PasteとPasteSpecial Pasteとの違いを教えていただければ幸いです。 Sub Macro1() Columns("B:B").Select Selection.Copy Columns("C:C").Select ActiveSheet.Paste Columns("A:A").Select Application.CutCopyMode = False Selection.Copy Columns("B:B").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A2").Select Application.CutCopyMode = False ActiveWorkbook.Save End Sub

  • EXCELのマクロについて

    お世話になっております。 以下のマクロを1万行分繰り返したいのですが、回数を1万回と指定する構文を 教えてください。よろしくお願いします。 Sub Macro16() ' ' Macro16 Macro ' ' Keyboard Shortcut: Ctrl+Shift+Z ' ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove ActiveCell.Offset(-1, 0).Range("A1:M1").Select Selection.Copy ActiveCell.Offset(1, 0).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(-1, 2).Range("A1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "7/5/1905" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "7/6/1905" ActiveCell.Offset(1, -2).Range("A1").Select End Sub

  • Excel 2007 マクロ 表の貼り付け

    Excel 2007 マクロ 表の貼り付け Excel 2007 マクロ 表の貼り付けについて教えてください。 <Sheet1>の表にあるA2からD4を <Sheet2>に値貼り付けをします。 表は画像を添付します。 マクロの記録では下記内容になります。 Sub Macro1() ' ' Macro1 Macro ' ' Range("A2:D4").Select Selection.Copy Sheets("Sheet2").Select Range("A2:D4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub <Sheet1>のA列の行の増減にかかわらず、<Sheet2>に貼り付けることができるように するにはどのようにマクロを修正すればよろしいでしょうか。

  • マクロで、改ページがうまく認識されません

    マクロで、改ページがうまく認識されません Excel2002を使用しています。 1ページ内に収まるように作った「内訳明細書」の型があり、 複数ページに渡る時は、ボタンを押せば新しいページが下に追加される…という マクロを作りたいと思い、いろいろ調べながらやってみたのですがうまくいきません。 以下のように、 「シートの最後の改ページの次の行に、原紙シートからコピーしたフォームを貼り付ける」 としてみたのですが、 最後の改ページの後ろ側に何かしらのデータがある時は ちゃんと最後の改ページを認識するのに、それがない時は、そのひとつ手前の 改ページを最後の改ページとみなすようです。 これはこういうものなのでしょうか? 何か解決策がありましたら、お教え願います。 Sub 改ページを入れる() Sheets("内訳明細書").Select p = ActiveSheet.HPageBreaks.Count '改ページの総数 L = ActiveSheet.HPageBreaks(p).Location.Row '最後の改ページの行 Sheets("原紙").Select Rows("1:26").Select Selection.Copy Sheets("内訳明細書").Select Rows(L).Select ActiveSheet.Paste Range("A7").Select Sheets("原紙").Select Application.CutCopyMode = False 'コピーモードを解除 Range("A1").Select Sheets("内訳明細書").Select  ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate '最後のセルをアクティブにする 最終行 = ActiveCell.Row + 1 'アクティブセルの行番号(+1)    Worksheets("内訳明細書").Rows(最終行).PageBreak = xlPageBreakManual End Sub

  • excel マクロ

    EXCELでデータが100行の表があるとする。 データのない行を削除し行を詰めるマクロは? イメージはこんな感じとおもうのでうが Sub Macro1() 'if文であるn行がデータがないかどうか判定YESなら Rows("n:n").Select Selection.Delete Shift:=xlUp End Sub

専門家に質問してみよう