• ベストアンサー

エクセルVBA セルのコピー&ペーストで・・・

A1のセルに、123 B2のセルに、456 C3のセルに、789 とある A.xlsファイルがあるとして B.xlsファイルの A4のセルに123 B4のセルに456 C4のセルに789とコピーしたいのです・・・と ここまでは出来たのですが、ここからが悩み所で、 上記の状況で、A4~C4までにはデーターが入っているので、次はその下のA5~C5までにデーターを入れたいのです。 A.xlsのデーター入力部分は一緒で、B.xlsのペースト部分は、入力していないセルの一番上にペーストしたいのです。 ちなみにちょっと作ってみましたがだめでした;; Windows("A.xls").Activate DATA = Range("A1:N100") Windows("B.xls").Activate With Cells(4, 1).End(xlDown).Offset(1, 0) = DATA(1, 1) っていうような感じで作ってみたのですが動かないです;; よろしくお願い致します

  • nanny
  • お礼率55% (72/129)

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

  • ベストアンサー
  • hogehage
  • ベストアンサー率50% (54/107)
回答No.1

Cells(4, 1).End(xlDown).Offset(1, 0) を Cells(65536, 1).End(xlUp).Offset(1, 0) では、どうですか。

nanny
質問者

お礼

お礼が遅くなりまして申し訳ございません。 無事に上記方法で解決いたしました。 誠にありがとうございます。

その他の回答 (1)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

>...Cells(4, 1).End(xlDown).Offset(1, 0) = DATA(1, 1) ご提示いただいたコードでは、A4セルから下にデータの終端を探しにいくわけですが、その途中にデータが一切無いと、A65536のOFFSET(1,0)でさらに1行下、、となりEXCELで扱える最大行数を超えてしまいます。 ただ、「どのようにダメだった」のかご質問文に記載がないため、推測の域です。 「A.xls の A1:N100セル の内容を B.xls のデータの終わりに付け足して転記したい」という動作であるとして、サンプルコードを示しました。ご参考下さい。 Sub Sample()   Dim Buf As Variant   Dim R  As Long   '元データ   Buf = Workbooks("A.xls").Sheets("Sheet1").Range("A1:N100")   '転記先   With Workbooks("B.xls").Sheets("Sheet1")     '転記先データ終端行の行番号取得     'A列の最終セルA65536から上にみて、データのある最後のセル     'の行番号     R = .Cells(65536, "A").End(xlUp).Row     If R = 1 Then R = 0     '取得されたデータ終端行の1行下に一括転記     .Cells(R + 1, "A").Resize(UBound(Buf), UBound(Buf, 2)) = Buf   End With End Sub

nanny
質問者

お礼

お礼が遅くなりまして申し訳ありません。 とりあえず今回は、下の方の構文を使わせて頂くことになりました。 また、今後とも色々とご指導よろしくお願い致します。

関連するQ&A

  • VBAでの結合セルのコピー&ペースト

    こんにちは。 EXCELのVBAでマクロを作成しています。 セルの値のコピー&ペーストを行おうとしているのですが、結合されているセルのペーストのときに、「同じ結合セルが必要です」とエラーになってしまいます。 例えば、A1とA2が結合されたセル+A3をコピー Worksheets(x).Activate Range("A1:A3").Selection Range("A1:A3").Copy 別のシートで、B1とB2が結合されたセル+B3にペースト Worksheets(y).Activate Range("B1:B3").Paste セルの結合を解除すればうまくいきます・・・ セルを結合したままペーストしたいのですが、どうやら間違っているようです(ノ_・。) どなたか教えてください。 よろしくお願いします。

  • エクセル VBA リストボックスからの動きについて

    エクセルでどうにかできないかと悩んでおります。 自分一人ではいいアイデアが浮かばないので皆様のお知恵を拝借いたしたく出させていただきます。 Private Sub CommandButton1_Click() With ListBox1 For i = 0 To .ListCount - 1 Windows("元データ.xls").Activate If .Selected(i) = True Then a = Cells(i + 2, 1) b = Cells(i + 2, 2) Windows("書き込みたいファイル.xls").Activate With Range("A20").End(xlDown).Offset(1, 0) .Offset(0, 0) = a .Offset(0, 2) = b という形で作っていますが、よく考えると『書き込みたいファイル』は 名前が色々変わってしまうファイルになっているので、それでも動くようにしたいのです。 上記2種類のファイル以外を閉じてしまう・・・という形は自分でも考えたのですが、 特定多数の人間が使うため、あまり制限をかけた状態では使いたくないのが現状です。 出来れば他のファイルを閉じたりしないようにしたいと思います。 皆様のお知恵をいただければ幸いと思いますので宜しくお願いいたします。

  • Excel 開いているセルにペーストするには

    よろしくお願いします。 複数回コピぺをしたいのですが、一度目はコピーしたそれぞれのデータをそれぞれA1、B1、C1にペーストとvbaで指定すればそのセルから下方に向かってペーストされる様には出来たのですが、2回目以降に例えばA1358、B 1358、C 1358まで入力されているセルの一つ下の1359の位置からABC個々にペーストする様にするにはどの様にしたら良いのでしょうか? 散々ネットで探しているのですが、A1を指定して…などの関数の説明しか見つからずこちらに投稿しました。 ご教授下さい。

  • マクロを使って不特定のファイルからコピー&ペーストしたい(エクセル)

    エクセルのデータの必要な列を別のブックに入っているフォーマットにどんどん追加していけるようなマクロを作りたいと思っています。 マクロの自動記録を使ってみたのですが、特定のファイル名が入っているので、使えません。 中を見てみると Windows("A.xls").Activate Columns("b:b").select Selection.copy workbooks.open Filename:="B.xls" Windows("B.xls").Activate Range("D9").select Windows("A.xls").Activate Application.CutCopyMode = False Range("b:b").select Selection.copy Windows("B.xls").Activate Selection.Pastespecial Paste:=xlValues,Operation:=xlNone,SkipBlanks:=False,Transpose:=False . . . となっています。 このファイルAとなっている部分を、どのファイルでも実行できるようにしたいです。 後、ファイルBに貼り付けるときに一番最終行に追加していくにはどのような構文を足せばいいか教えていただきたいです。 初心者で質問の意図が伝わりにくかったらすみません.. よろしくお願いします。

  • エクセルVBA、他のファイルからのコピー

    BBA初心者です aaa.xlsのマクロで aaa.xls にbbb.csvのデータを貼り付けたいのですが Sub () Windows("bbb.csv").Activate…ここのbbbってところをセル参照にしたいのです ActiveCell.Range("A1:A10").Select Selection.Copy Windows("aaa.xls").Activate ActiveSheet.Paste End Sub 1つ上のセルにbbbと入力されていればbbb.csvのデータを 1つ上のセルにcccと入力されていればccc.csvのデータを 貼り付けれるようなマクロはどう書けばいいのでしょうか よろしくお願いします

  • エクセル98のコピーペーストについて

    エクセル98を使用しております。 そこで、下記のようなコピーペーストが可能かどうか教えて頂けないでしょうか? また、コピーペースト以外に方法があれば、教えて頂きたいのです。宜しくお願いします。 例えば、 A1セルに10、B1セルに15、C1セルに20とあったとして、 A50セルに「=A1]答10、B50セルに「=15」答15、C50セルに「=C1]答20 と置いきたいのです。 つまり、縦方向のデーターをコピーして、横方向に貼りつけていきたいのですがどうでしょうか? 手作業で1つ1つ入れて行くしか方法が無いのでしょうか?

  • EXCEL VBA セルからファイル名を読み込む

    EXCEL VBAについての質問です 同じ処理を名前の違う複数のファイルで行いたいと思っています そこで、セルA2へファイル名の『○○.xls』○○部分だけをそれぞれのファイルに書き込んでおき、マクロは共通にしてファイル名をそれぞれのファイルから読み込んで実行したいと思っています。 良い方法を教えてください。 Workbooks("200809.csv").Activate Sheets("200809").Select Range("C3:C33").Copy Windows("○○.xls").Activate'←ここをファイルにあわせて変更できる形にしたい Sheets("報告書").Select Range("G5:G35").Select ActiveSheet.Paste Windows("200809.csv").Activate Range("K3:K33").Copy Windows("○○.xls").Activate’←ここ Sheets("報告書").Select Range("I5:I35").Select ActiveSheet.Paste Workbooks("200809.csv").Close SaveChanges:=False よろしくお願いします。

  • エクセルVBAでコピーペーストのやり方を教えてください。

    エクセルの他のブックの中に複数のシートがあり、そこから任意の複数のシートの任意の範囲をコピーペーストするやり方を教えてください。できればマクロに記録したいです。 例えば、あいう.xlsというファイルにデータが入っていて、シートは、 sheet1~sheet20まであるとします。 そこから今回はsheet2のC20~E500とsheet4のC20~E500までを、かきく.xlsというファイルのsheet1にコピペしたい。 かきく.xlsのsheet1のA1~C500にあいう.xlsのsheet2のC20~E500を貼りつけ、A501~C980にあいう.xlsのsheet4のC20~E500を貼りつけるというようにしたいです。 毎回列と行の範囲はどこのシートでもC20~E500で決まっているのですが、毎回sheet2とsheet4の範囲をコピペするわけではありません。 次回はsheet1~sheet19までの範囲かもしれません。 シートを選べ、1つのシートにまとめてコピペをしてくれるようなマクロを知りたいです。 エクセルは2003もしくは2007を使っています。 よろしくお願い致します。

  • エクセルマクロ・Cells.Find のエラー

      VBA初心者です。 ファイルA の C列 に入力されているデータが ファイルB に含まれているかどうか検索するマクロを Cells.Find を使って作ろうとしています。 データがファイルBに存在する場合は問題ありませんが存在 していない場合エラーが出て止まってしまいます。 ヘルプを見ると「セルが見つからなかった場合は、Nothingを返します」 と書かれていますが、どうもNothingとは返ってきません。 このエラーを回避する方法を教えてください。 例えばこんなマクロを組みました。  For tate = 0 To 19    Windows("ファイルA.xls").Activate    Range("C1").Offset(tate, 0).Select    データ = Range("C1").Offset(tate, 0)    Windows("ファイルB.xls").Activate    Cells.Find(データ, MatchCase:=False).Activate  Next tate 例えば最後の2行を    結果 = Cells.Find(What:=ISISDate, MatchCase:=False).Activate      MsgBox (結果)  Next tate とするとデータが含まれている場合は「True」と返ってきますが、 含まれていない場合は MsgBox が表示される前にエラーとなってしまいます。 とりあえずこのエラーを回避する方法をご存知でしたらお教えください。  

  • VBA 他のエクセルファイルデータを読み込む

    エクセルのVBAに関する質問です。 かじった程度の知識でがんばってはみたのですが、以下のことがどうしてもできません。 集計ファイルと、それぞれが入力するファイルがいくつか(具体的には1A.xls、1B.xls、2A.xls、2B.xlsといった数字とアルファベットの組み合わせ)あります。 入力ファイルに書かれているデータを集計ファイルに取り込もうと考えています。 入力ファイル名が(1.xls,2.xls・・・)の様に数字だけの取り込みはできました。 m = Val(UserForm2.TextBox1.Text) For i = 1 To m On Error GoTo myError Workbooks.Open Filename:="C:" & i & ".xls", UpdateLinks:=0 Range("f65536").End(xlUp).Activate Workbooks(i & ".xls").Activate Sheets("入力ファイル").Select Range("A3:X52").Select Application.CutCopyMode = False Selection.Copy Workbooks("集計ファイル.xls").Activate Sheets("DB").Activate Range("a65536").End(xlUp).Activate Selection.Offset(1).Select ActiveSheet.Paste Range("a65536").End(xlUp).Select   Workbooks(i & ".xls").Close SaveChanges:=False myError: Next i Application.DisplayAlerts = True こんな感じです。 これを、数字だけでなく数字+アルファベット.xlsのファイル名にしてデータを取り込むにはどうすればいいのでしょうか?色々と試行錯誤をしたり、ネットで調べたりしたのですが、詰んでしまいました。 どなたかお助け下さい。

専門家に質問してみよう