• ベストアンサー

台帳登録をしたい...

エクセルのSheet1で作ったデータを別のBookのSheet(台帳)のセルA1から順番に登録させるマクロを作りたい。 (1)Sheet1では、セルA2からA200まのデータがある範囲を調べ、データの有る範囲だけを台帳に順番に登録したい。 Sheet1の内容は常に変化するので、作業が終わったらマクロを実行し (1)の処理をしたい。 上記のようなことがしたいのですが、マクロの記録では出来ないので 誰か教えてください。 よろしくお願い致します。

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

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

この課題の必要要素テクニックは (1)BookAのA列の最下行を捕まえることだけだ。 (2)ただし2つのブックが登場するので、どちらのBookのシートかをコードで明示しないといけない。そのテクニックと2つ。 ーーー (1)はd = ws2.Range("A200").End(xlUp).Row の部分 (2)はws1,ws2をセルを表すコードの前につけているところ、およびws1、ws2 を定義するまでの書き方を参考に。 CurDirは両ブックがカレントフォルダにある場合に有効で、違えば フルパスでSet bk2 = Workbooks.Open(cd & "\Book2.xls") の()内を書き換えてください。 またこのコードはデータを持ってくるほうのブックの標準モジュールに入れてください。 本件ではbk1<--bk2 ーーー 下記を参照 Sub test01() Dim bk1 As Workbook Dim bk2 As Workbook '-- Dim ws1 As Worksheet Dim ws2 As Worksheet '-- cd = CurDir k = 2 '--- Set bk1 = ActiveWorkbook Set bk2 = Workbooks.Open(cd & "\Book2.xls") '-- Set ws1 = bk1.Worksheets("Sheet1") Set ws2 = bk2.Worksheets("Sheet1") '--- d = ws2.Range("A200").End(xlUp).Row MsgBox d For i = 1 To d ws1.Cells(k, "A") = ws2.Cells(i, "A") ws1.Cells(k, "B") = ws2.Cells(i, "B") ws1.Cells(k, "C") = ws2.Cells(i, "C") k = k + 1 Next i End Sub

KAREI468
質問者

お礼

早速の回答をありがとうございます。 回答を参考に、トライしてみます。 また教えて下さい。ありがとう御座いました。

関連するQ&A