dポイントプレゼントキャンペーン実施中!

BookA.xlsファイルからBookB.cvsがあり、
bookB.csvには1から不特定に数字が昇順にならんでいます

bookB.csv
 A    B
1 1   文字列A
2 2   文字列B
3 54   文字列C
4 100  文字列D
5 101  文字列E

BookA.xlsからbookB.csvを読出し、特定の数値(100番)を探し出し
その行から下100行をコピー、BookA.xlsのSheetCに貼り付け
という作業をするマクロを組みたいと思っています。

'CSVファイルを開く
CSVname = Application.GetOpenFilename(Title:="CSVファイル指定", fileFilter:="CSV ファイル (*.CSV), *.csv")
If CSVname = False Then
MsgBox "ファイルを1個指定して下さい"
Exit Sub
End If
'ファイルをひらく
Workbooks.Open CSVname
'100番検索
Set Obj = Cells.Find("100", LookAt:=xlWhole)
If Obj Is Nothing Then
MsgBox "見つかりませんでした。"
Else
Tate = Cells.Find("100", LookAt:=xlWhole).Row
End If
'A列100番のある行から199行を選択・コピー
エラー→Range(Cells(1, Tate), Cells(2, Tate)).Select

このように作ってみたのですが、どうしてもここでエラーになり
先に進めません。
どうか解決方法をお教え下さい。
宜しくお願いします。

A 回答 (2件)

>Tate = Cells.Find("100", LookAt:=xlWhole).Row



検索結果が入るのは"Obj"なので、
Tate = Obj.Row ですね。

>Range(Cells(1, Tate), Cells(2, Tate)).Select

Range(Cells(1, Tate), Cells(2, Tate)).Copy
だとエラーにはならないようです。
    • good
    • 0
この回答へのお礼

きちんと意図通りに動きました
.Copyで動かなかった時があったので.selectにしたのですが
.Copyでも動くようになりました。
ありがとうございます!

お礼日時:2007/10/05 15:55

Workbooks.Openの行以降をコピーして動かしてみましたが、エラーは起きませんでした。

XP SP2+OFFICE2003です。

With Activesheet
 Range(.Cells(1, Tate), .Cells(2, Tate)).Select
End With
のようにシートを明示してみてはどうでしょう

でも「A列100番のある行から199行を選択」なら
 If Obj Is Nothing Then
   MsgBox "見つかりませんでした。"
 Else
   Obj.Resize(199,2).Select
   Selection.Copy
 End If
でよいかもしれません
    • good
    • 0
この回答へのお礼

こちらの方がスマートにできそうですね
Resizeプロパティの事も念頭に置きながら
完成まで頑張ってみたいと思います。
ありがとうございました!

お礼日時:2007/10/05 15:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!