• 締切済み

EXCEL VBA コピー貼り付けについて

はじめまして。 エクセルのマクロの記録でマクロ作成してますが、希望通りに張り付け出来ずにいます。 (1)張り付けた場所に関数がコピーされない。 (2)最終行にコピーする方法が解らない。 (3)印刷範囲の張り付けできない 皆様お忙しい中恐縮で申し訳ありませんがご教授お願い致します。 Sub コピー() ' Range("A1:AR68").Select Selection.Copy  Range("A69").PasteSpecial xlPasteAll 「最終行へ変更したい」 ActiveSheet.Paste 「関数も含めて貼り付けたい」  ・「印刷範囲をコピーしたい」   End Sub

みんなの回答

回答No.3

>(1)張り付けた場所に関数がコピーされない。  これは   「何も」貼り付けされない   「値で」貼り付けされる  のどちらとも読めるのですがどちらでしょうか?  後者も状況によってはあり得ない話ではないのですが。 >(3)印刷範囲の張り付けできない 一般的な表現としては、印刷範囲は設定するもの(自動的にを含む)で、貼り付けするものではないので、意味を図りかねます。 (それともページ設定ダイアログの印刷範囲欄にセルアドレス文字が貼り付け出来ない(グレーアウトしている)という意味でしょうか?) それと >Range("A69").PasteSpecial xlPasteAll >ActiveSheet.Paste ↑ は同じことをしているように思いますが、何か意味があるのでしょうか?

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

>(1)張り付けた場所に関数がコピーされない。 Pastespecialは 参考 https://www.moug.net/tech/exvba/0050104.html 「形式を選択して貼り付け」に対応するコードだが、 xlPasteAllを指定するとセルの関数もコピーされるはず。 ーー ただしセル範囲について、注意しないとおかしなことになる.場合があるかもしれない。絶対番地指定していて、そのまま貼り付けされ、コピー後にコピー元のデータが変わった場合など。 ==== >(2)最終行にコピーする方法が解らない。 最終行ーー>「最終行の次」の意味として、 例データ A1:B6として 計数 コード 11 a 12 d 13 c 36 13 c Sub test02() Set cl = Range("A1000").End(xlUp) Range("A1:B6").Select Selection.Copy cl.Offset(1, 0).PasteSpecial xlPasteAll ActiveSheet.Paste End Sub ーー 結果 A7:B12 計数 コード 11 a 12 d 13 c 36 13 c >(3)印刷範囲の張り付けできない これはどういうことを言うのかな? A1:B6を範囲指定して印刷したとき、終了後、A7:B12を範囲指定して印刷するが、その印刷範囲を次の印刷範囲の印刷で、指定しなくても?A7:B12に設定してくれということか? 初心者にはむつかしい話だと思うの(今までWEBでも見たことない)で、考えないほうがよかろう。 コピー元をSelectした段階で Sub test03() MsgBox Selection.Rows.Count MsgBox Selection.Columns.Count End Sub のような、Selection.Rows.Countなどのコードで範囲の行数、列数を採り、貼り付け先(左上隅セル)をもとにして、 コピー先での印刷範囲を計算することはできるが、そんなことをのぞんでいるのかな。 Sub test04() Range("A1:B6").Select Selection.Offset(6, 0).Select End Sub 実のところ、質問の意味が取れてない。

回答No.1

質問の内 (1)は、貴コードを実行して関数をコピーできましたので原因究明できませんでした。 (2)については「Cells(1, 1).End(xlDown).Row」を使えばできます。ただし、途中に空白行があるとその上の行を示すことになります。 (3)については基本的に印刷範囲は1つしか指定できないので、元の範囲をクリアし改めて、新しい範囲を指定することになります。 ExcelのVBAについては、インターネットでたくさんの説明が出ていますので、ご自分で探されると勉強になると思います。 「ExcelVBA 最終行の取得」「ExcelVBA 印刷範囲の指定」など普通の言葉で検索できます。 Sub コピー() ' '元データの最終行を求める 最終行 = Cells(1, 1).End(xlDown).Row '元データをコピーし最終行の次の行以下に貼り付ける Range(Cells(1, 1), Cells(最終行, 44)).Copy Cells(最終行 + 1, 1).PasteSpecial xlPasteAll '元データに印刷範囲が設定されている場合はその範囲を確認したうえで新しい印刷範囲を計算し設定する。 If ActiveSheet.PageSetup.PrintArea <> vbNullString Then: '印刷範囲が設定されていれば 範囲 = ActiveSheet.PageSetup.PrintArea: '印刷範囲を取得 新範囲 = "$A$31:$C$60": '新しい印刷範囲を計算する ActiveSheet.PageSetup.PrintArea = "": '元の印刷範囲をクリアする ActiveSheet.PageSetup.PrintArea = 新範囲: '新しい印刷範囲を設定する End If End Sub

関連するQ&A

  • マクロでコピー貼り付けやってみたいのですが。

    マクロの初心者です。Dim で宣言してやりたいと思っています。 既存のExcelの機能で出来ないことはないと思いますが、敢えて、マクロででないか。 やってみたいと思っています。 やりたいこと等について 1 sheet1のE2:J1109の範囲のデータをコピーしての別sheet2のE3:J1110の範囲に貼り付けたい。 2 その時に最終行を取得してコピーをするとしたら、どんなコードが必要なのか 3 最終行の取得のコードの書き方が分からない 4 ネットで下記のような(一部変更)に作ってみたが、これで良いのでしょうか、わからない。 以上のことを答えて頂けませんか。よろしくお願いします。 Sub テスト() Dim range1 As Range Set range1 = Range("E2:J1109") range1.Copy ActiveSheet.Paste Destination:=("sheet1").Range("E2:J1109") ActiveSheet.Paste Destination:=("sheet2").Range("E3:J1110") Application.CutCopyMode = False End Sub

  • エクセルVBAで値だけをコピーペーストする方法

    下記のマクロは、エクセルのシート「精算」のb12~bz342の範囲からからシート「集計表」のアクティブセルを始点に、空白行を除いたデーターを貼り付けます。 しかし計算式と書式を抜いた値だけを貼り付けたいので、 ActiveSheet.Pasteを ActiveSheetSpecial Paste:=xlPasteValues に書き換えたらエラーになってしまいました。 どなたか詳しい方ご教授下さい。 よろしくお願いします。 Sub 精算項目コピー() Dim 最終列 As Integer Sheets("精算").Activate 最終列 = Range("b342").End(xlUp).Row Range("b12:bz" & 最終列).Select Selection.Copy Sheets("集計表").Select ActiveSheet.Paste  ←この部分を書き換えたらエラー End Sub

  • マクロ 可視セルへコピーする方法

    こんにちは。よろしくお願いします。 A~V列、300~400行程度の表を作っています。 8行目をコピーして空白行へペーストしたいのですがどのようにすれば良いでしょうか。 マクロの記録でつくったものは ActiveSheet.Paste でエラーになります。 またペースト開始行をA17ではなくて可変なものに変えたいです。 よろしくお願いします。 Sub 下までコピー() Range("A8:V8").Select Selection.Copy Selection.AutoFilter Field:=2, Criteria1:="=" Range("A17:V" & Range("B5").End(xlDown).Row).Select Selection.SpecialCells(xlCellTypeVisible).Select ActiveSheet.Paste Application.CutCopyMode = False Selection.AutoFilter Field:=2 End Sub

  • エクセルVBAでコピーすると行の高さが低くなる

    いつもお世話になってます。 エクセル2003のVBAで、セルの範囲を指定してコピーすると行の高さが低くなってしまいます。その他の書式は、変化せずうまくコピーできています。以下がプログラムです。 Sub copy_hyou() Worksheets("sheet1").Activate Range("A1:K24").Copy 'セルA1からK24をコピーします。 Range("A25").Select 'A25からペイストします。 ActiveSheet.Paste End Sub どう直せば、行の高さもコピーできるでしょうか? お休み中すみませんがよろしくお願いいたします。

  • エクセルVBAで行のコピー貼り付けについて

    初心者、勉強中でエクセル2007です。 A1行からK40行までの表があります。 これを下にコピーをしながら増やしていってるのですが、マクロでしようと思い下記のとおり 考えました。 selecion.row.Offset(39, -1).Select ここでオブジェクトが必要ですと出ます。 それからその下の?とを色々ぐぐってみますがどうしてもわかりません。 それと2007ですので65536行ではないのですが、MaxRow = Cells(Rows.Count, 1).End(xlUp).Row だと動かないみたいですので下記としています。 よろしくご教授お願いします。 Sub Gcopy() MaxRow = Range("B65536").End(xlUp).Offset(-39, -1).Select データの入ってる最終行を取得 Selecion.row.Offset(39, -1).Select 選択された行から上に39行移動し選択 ?                    下へ39行まで選択   MaxRow = Range("B65536").End(xlUp).Offset(1, -1) 最終行を取得 ActiveSheet.Paste 貼り付け End Sub

  • コピー後に値のみ貼り付け エクセル、VBAの記述について

    マクロ初心者です。 エクセルで選択範囲を指定後コピーし、 自動的に別のシートの末尾に貼り付けられるようにしたのですが、 この内容のまま「貼り付け」を「値のみ貼り付け」に訂正する場合 どのように変更すればいいのか、教えてくださると嬉しいです。 宜しくお願いいたします。 Sub 選択範囲をコピー後、指定シートの末尾に貼り付け Worksheets("sheet1").Activate Range("b11:I17").Copy Workbooks("book2.xls").Worksheets("Sheet1").Activate 行 = Range("B1").CurrentRegion.Rows.Count + 1 ActiveSheet.Paste _ Destination:=Workbooks("book2.xls").Worksheets("Sheet1").Range("B" & 行) End Sub

  • 値の貼り付け

    Range("A1").Copy Range("B2").PasteSpecial Paste:=xlPasteAll, _ Operation:=xlPasteSpecialOperationNone 上記の値の貼り付けを行うプログラムがあったときに これを一行にまとめることは出来ますか? Range("A1").Copy Range("B2").PasteSpecial Paste:=xlPasteAll, _ Operation:=xlPasteSpecialOperationNone このように書くとエラーになってしまいます。 PasteSpecialがある時は一行にならないのでしょうか?

  • 列を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 VBA マクロ 画像(図)貼り付け

    Excel2010にて、 VBA マクロ 画像(図)貼り付けを行いたいと思っています。 しかし、マクロを自動登録すると、ActiveSheet.Pictures.Paste.Selectになり、AddPicture ができません。 下記のマクロをAddPictureへ変換したいのですが、そのまま、InsertをAddpictureに変更してもエラーになってしまいます。 いい方法を教えてください(ToT)/~~~。 どうぞよろしくお願いします。 Sub Test() ' ' Test Macro ' Rows("4:4").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Selection.RowHeight = 150# Range("C4").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileC.gif"").Select ActiveSheet.Pictures.Paste.Select Range("D4").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileD.gif"").Select Selection.Cut Range("D4").Select ActiveSheet.Pictures.Paste.Select Range("E4").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileE.gif"").Select Range("E4").Select ActiveSheet.Pictures.Paste.Select Range("F4").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileE.gif"").Select ActiveSheet.Pictures.Paste.Select Range("G4").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileG.gif"").Select Selection.Cut ActiveSheet.Pictures.Paste.Select Range("H4").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileH.gif"").Select Selection.Cut ActiveSheet.Pictures.Paste.Select Range("I3").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileI.gif"").Select Selection.Cut ActiveSheet.Pictures.Paste.Select Range("J4").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileJ.gif"").Select Selection.Cut ActiveSheet.Pictures.Paste.Select Range("K3").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileK.gif"").Select Selection.Cut ActiveSheet.Pictures.Paste.Select Range("L3").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileL.gif"").Select ActiveSheet.Pictures.Paste.Select Range("M4").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileM.gif"").Select Selection.Cut ActiveSheet.Pictures.Paste.Select Range("N4").Select ActiveSheet.Pictures.Insert( _ "E:\FolderA\fileN.gif").Select Selection.Cut ActiveSheet.Pictures.Paste.Select End Sub

  • VBA マクロ実行時エラー’1004RangeクラスのPasteSpecialメソッドが失敗

    マクロ実行時に、エラー’1004RangeクラスのPasteSpecialメソッドが失敗と表記され、マクロが実行されません。 マクロの内容は、任意の範囲をコピー、新規book追加し、 新規bookに(1)Paste:=xlPasteValues (2)Paste:=xlPasteColumnWidths (3)Paste:=xlPasteFormats の順に貼り付けし保存するものです。 いろいろ調べては見たのですが、当方初心者の為、わからずじまいです。お手数ではございますが、どなたかご教授願います。 下記にマクロ内容全部記載します。 よろしくお願いします。 ********************************************************* ********************************************************* Sub 日報別ファイルに保存したい1() Worksheets("日報").Range("A3:AF36").Copy With Workbooks.Add Cells.Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Cells.Select Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Range("A1").Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False ApplicationDisplayAlerts = True '同名FILEが存在する場合' ActiveWorkbook.SaveAs Filename:= _ "c:\日報\" & ActiveSheet.Range("J2") & "年" & ActiveSheet.Range("l2") & "月" & ActiveSheet.Range("n2") & "日_日報.xls" _ , FileFormat:=xlNormal .Close file End With End Sub

専門家に質問してみよう