|
▼Asaki さん:
>こんばんは。
>
>スマートかどうか解りませんが、↓のような感じでは如何でしょうか?
>2箇所くらいだと、ループしなくてもよいかな、と思います。
>
>Sub test()
> Dim strFile As String
> Dim rngCopy As Range
>
> Application.ScreenUpdating = False
> 'ファイルオープン
> Workbooks.Open Filename:=strFile
>
> 'データコピー
> With ThisWorkbook.Worksheets("MAIN")
> Set rngCopy = _
> ActiveSheet.Range(ActiveSheet.Cells(2, 5), ActiveSheet.Cells(6536, 5).End(xlUp))
> .Cells(5, 1).Resize(rngCopy.Rows.Count).Value = rngCopy.Value
> Set rngCopy = _
> ActiveSheet.Range(ActiveSheet.Cells(2, 11), ActiveSheet.Cells(6536, 11).End(xlUp))
> .Cells(5, 2).Resize(rngCopy.Rows.Count).Value = rngCopy.Value
> End With
> Set rngCopy = Nothing
> Workbooks(Dir(strFile)).Close
> Application.ScreenUpdating = True
>
>End Sub
Asaki さん、早速のレスありがとうございました。
早速やってみますが、何せ初心者ですので、できましたら下記の部分の簡単な解説をして頂けないでしょうか?
> Set rngCopy = _
> ActiveSheet.Range(ActiveSheet.Cells(2, 5), ActiveSheet.Cells(6536, 5).End(xlUp))
> .Cells(5, 1).Resize(rngCopy.Rows.Count).Value = rngCopy.Value
> Set rngCopy = _
> ActiveSheet.Range(ActiveSheet.Cells(2, 11), ActiveSheet.Cells(6536, 11).End(xlUp))
> .Cells(5, 2).Resize(rngCopy.Rows.Count).Value = rngCopy.Value
それと、ActiveSheet.Cells(6536, 11).End(xlUp))の 6536 の部分は、通常データの量から何も最下行(65536)から上がらなくてもという事でしょうか?
よろしくご教示下さい。
|
|