2016-08-16 3 views
0

マクロを実行しているアクティブなブックを開いています。別の(新しい)ワークブックを開き、「新しい」ファイルの最初のワークシートから一連のセルをコピーし、それらの行を現在のワークブックのワークシートの下部に追加する必要があります。私はクリップボードを使用してコピー/ペーストを使用しないようにしたいと思います。既に開いている私の(現在の)ワークブックを皮切り新しいブックからクリップボードを使用せずにアクティブなブックに範囲をコピーする

Sub getnewrows() 

Dim lngLast As Integer, newLast As Integer 
Dim NewRows As Workbook 
Dim MyWkbk As Workbook 
Dim rSrc As Range 
Dim rDst As Range 

Set MyWkbk = ActiveWorkbook 
Sheets(3).Select 
lngLast = Range("A" & Rows.Count).End(xlUp).Row 
Set NewRows = Application.Workbooks.Open("pathtomyfile.xls") 
newLast = NewRows.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row 

Set rSrc = NewRows.Sheets(1).Range("A5:L" & newLast) 
Set rDst = MyWkbk.Sheets(3).Range("A" & lngLast + 1) 

rDst = rSrc.Value 

NewRows.Close 

Set MyWkbk = ActiveWorkbook 
End Sub 

、と私は1つのセルを超えるマクロ、それだけでコピーを実行すると「新しい」1は、閉じた状態:ここに私のコードです。

+0

にデフォルト設定されます十分ではありませんか? –

+1

'Set rDst = MyWkbk.Sheets(3).Range(" A "&lngLast + 1)'または 'Set rDst = MyWkbk.Sheets(3).Cells(lngLast + 1、" A ")' BTW 'lngLast'値が割り当てられていないので、デフォルト値は0になります –

+0

また、メイン文書にデータを渡す前にデータをフィルタリングする場合は、ADOでSQLを使用することもできます。 –

答えて

0

Cellsは、このタイプのパラメータを使用しません。

Set rDst = MyWkbk.Sheets(3).Ran‌​ge("A" & lngLast + 1) 

または

Set rDst = MyWkbk.Sheets(3).Cel‌​ls(lngLast + 1, "A") 

ところでlngLastは、値が割り当てられていないため、コピーと宛先を使用してゼロ

+0

私はそれを試みた。 1つのセル値だけをコピーします。 MyRkbk.Sheets(3).Cells(lngLast + 1、 "A")にNewRows.Sheet(1).cells( "A5")からのもの。どのようにして行全体と、行5の後のNewRowsワークブックのすべての行を取得できますか?上記のコードを更新しました。 – SD1717

+0

私はそれを手に入れました! Set RdstをSet rdst = MyWkbk.Sheets(3).Range( "A"&lngLast + 1& ":L"&lngLast + 1 + newLast - 5)に更新しなければならなかった – SD1717

+0

私はこの質問に答えたが、私はチェックマークをクリックします。「エラーが発生しました。あなたのリクエストを再試行してください。 – SD1717

関連する問題