Sửa giúp em đoạn code Macro (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

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 ....
 
Thử thay đoạn này xem sao:
PHP:
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.Columns.Count + 1                
        Set destrange = basebook.Worksheets("datainput").Cells(1, rNum)                   
        With sourceRange
            Set destrange = destrange.Resize(.Rows.Count, .Columns.Count)
        End With
        destrange.Value = sourceRange.Value        
       mybook.Close False        
Next n
 
Upvote 0
Em cảm ơn anh HoangVuLuan nhiều, nhưng kết quả đoạn code của anh lại trả về kết quả là paste luôn vào từ cột A, mà cái em muốn là paste vào từ cột G, em ko biets phải thay đổi như thế nào nữa cả, anh giúp em nốt nhé.
 
Upvote 0
Bạn thay code
rNum = (n - 1) * sourceRange.Columns.Count + 1 ' 1 là cột A; => cột G là 7 '
bằng code
rNum = (n - 1) * sourceRange.Columns.Count + 7
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom