DAOHUYENNEU
Thành viên chính thức


- Tham gia
- 9/2/10
- Bài viết
- 51
- Được thích
- 2
Sub Copydatainput()
Dim basebook As Workbook
Dim mybook As Workbook
Dim sourceRange As Range
Dim destrange As Range
Dim n As Long, rNum As Long
Dim MyPath As String
Dim SaveDriveDir As String
Dim FName As Variant
SaveDriveDir = CurDir
MyPath = "D:\"
ChDrive MyPath
ChDir MyPath
FName = Application.GetOpenFilename(filefilter:="Excel Files (*.xlsx), *.xlsx", MultiSelect:=True)
If IsArray(FName) Then
Application.ScreenUpdating = False
Set basebook = ActiveWorkbook
rNum = 1
For n = LBound(FName) To UBound(FName)
Set mybook = Workbooks.Open(FName(n))
Set sourceRange = mybook.Worksheets("Sheet1").Range("G1:N100")
rNum = (n - 1) * sourceRange.Rows.Count + 1
Set destrange = basebook.Worksheets("datainput").Cells(rNum, "G")
With sourceRange
Set destrange = basebook.Worksheets("datainput").Cells(rNum, "G").Resize(.Rows.Count, .Columns.Count)
End With
destrange.Value = sourceRange.Value
mybook.Close False
Next n
End If
ChDrive SaveDriveDir
ChDir SaveDriveDir
Application.ScreenUpdating = True
End Sub
Em có đoạn code macro như trên, hiện tại theo như đoạn code đó thì khi chạy macro, nó sẽ tự động copy các giá trị trong vùng K1:M100 của sheet1 tại các file được chọn và paste vào bắt đầu từ cột K tại sheet datainput của file hiện hành theo thứ tự từ trên xuống. Nay các anh chị có thể giúp em sửa lại code để kết quả nhận được là dữ liệu sẽ được copy từ trái qua phải không ạ, nghĩa là vùng G1:M100 của file thứ 2 sẽ được copy paste vào vùng O1:V100 của file hiện hành, vùng G1:M100 của file thứ 3 sẽ được copy paste vào vùng W1:AD100 của file hiện hành ....
Dim basebook As Workbook
Dim mybook As Workbook
Dim sourceRange As Range
Dim destrange As Range
Dim n As Long, rNum As Long
Dim MyPath As String
Dim SaveDriveDir As String
Dim FName As Variant
SaveDriveDir = CurDir
MyPath = "D:\"
ChDrive MyPath
ChDir MyPath
FName = Application.GetOpenFilename(filefilter:="Excel Files (*.xlsx), *.xlsx", MultiSelect:=True)
If IsArray(FName) Then
Application.ScreenUpdating = False
Set basebook = ActiveWorkbook
rNum = 1
For n = LBound(FName) To UBound(FName)
Set mybook = Workbooks.Open(FName(n))
Set sourceRange = mybook.Worksheets("Sheet1").Range("G1:N100")
rNum = (n - 1) * sourceRange.Rows.Count + 1
Set destrange = basebook.Worksheets("datainput").Cells(rNum, "G")
With sourceRange
Set destrange = basebook.Worksheets("datainput").Cells(rNum, "G").Resize(.Rows.Count, .Columns.Count)
End With
destrange.Value = sourceRange.Value
mybook.Close False
Next n
End If
ChDrive SaveDriveDir
ChDir SaveDriveDir
Application.ScreenUpdating = True
End Sub
Em có đoạn code macro như trên, hiện tại theo như đoạn code đó thì khi chạy macro, nó sẽ tự động copy các giá trị trong vùng K1:M100 của sheet1 tại các file được chọn và paste vào bắt đầu từ cột K tại sheet datainput của file hiện hành theo thứ tự từ trên xuống. Nay các anh chị có thể giúp em sửa lại code để kết quả nhận được là dữ liệu sẽ được copy từ trái qua phải không ạ, nghĩa là vùng G1:M100 của file thứ 2 sẽ được copy paste vào vùng O1:V100 của file hiện hành, vùng G1:M100 của file thứ 3 sẽ được copy paste vào vùng W1:AD100 của file hiện hành ....