copy vào dòng trống tiếp theo từ 1 file khác (1 người xem)

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

cachabu

Thành viên hoạt động
Tham gia
27/4/14
Bài viết
122
Được thích
2
chào các anh chị
em muốn tạo 1 code vba tạo đường dẫn đến 1 file sau đó chọn file cần chọn rồi copy dữ liệu vào file copy
tại file copy thì copy vào dòng tiếp theo vì dữ liệu củ vẫn còn dùng tiếp.
sau đó đóng file excel kia đi e có gửi kem file ví dụ "data"

vậy nhờ anh chị giúp
cám ơn
 

File đính kèm

chào các anh chị
em muốn tạo 1 code vba tạo đường dẫn đến 1 file sau đó chọn file cần chọn rồi copy dữ liệu vào file copy
tại file copy thì copy vào dòng tiếp theo vì dữ liệu củ vẫn còn dùng tiếp.
sau đó đóng file excel kia đi e có gửi kem file ví dụ "data"

vậy nhờ anh chị giúp
cám ơn
Máy hiện tại mình không đọc được file đuôi .xlsx không biết dự liệu thế nào. Nhưng như bạn diễn tả thì có thể record macro cũng có code rồi mà bạn
 
Upvote 0
Máy hiện tại mình không đọc được file đuôi .xlsx không biết dự liệu thế nào. Nhưng như bạn diễn tả thì có thể record macro cũng có code rồi mà bạn
đúng rùi, mà chủ yếu là cái luc copy vào no phải là vào dòng tiếp theo, chứ ghi macro thi nó lại ko biết dòng nào là dòng còn trống
minh upload lai file ban xem giúp nhé
 

File đính kèm

Upvote 0
đúng rùi, mà chủ yếu là cái luc copy vào no phải là vào dòng tiếp theo, chứ ghi macro thi nó lại ko biết dòng nào là dòng còn trống
minh upload lai file ban xem giúp nhé
Thử code này xem sao nhé
[GPECODE=vb]Sub test()
Application.ScreenUpdating = False
Workbooks.Open Filename:=ThisWorkbook.Path & "\data.xls"
ActiveWorkbook.Sheets("Sheet1").Range("A2:C25").Copy
ThisWorkbook.Sheets("Sheet1").Range("A65500").End(3).Offset(1).PasteSpecial Paste:=xlPasteValues
Workbooks("data.xls").Close (False)
Application.ScreenUpdating = True
End Sub[/GPECODE]
Trường hợp này dùng ADO thi hay hơn
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Thử code này xem sao nhé
[GPECODE=vb]Sub test()
Application.ScreenUpdating = False
Workbooks.Open Filename:=ThisWorkbook.Path & "\data.xls"
ActiveWorkbook.Sheets("Sheet1").Range("A2:C25").Copy
ThisWorkbook.Sheets("Sheet1").Range("A65500").End(3).Offset(1).PasteSpecial Paste:=xlPasteValues
Workbooks("data.xls").Close (False)
Application.ScreenUpdating = True
End Sub[/GPECODE]
Trường hợp này dùng ADO thi hay hơn
ADO làm sao chỉ giúp mình với, mình cũng gà mấy cái này lắm
với lại mình muốn chọn đường dẫn link tới file chứ ko phải là tên file cố định là data

bạn xem giúp mình nhé
 
Upvote 0
ADO làm sao chỉ giúp mình với, mình cũng gà mấy cái này lắm
với lại mình muốn chọn đường dẫn link tới file chứ ko phải là tên file cố định là data

bạn xem giúp mình nhé
Mình đã làm sẵn trong file cho bạn rồi. Còn chọn đường đẫn tới thì mình dùng hàm getdata để linh động chọn đường dẫn đó
Nếu vậy bạn test thử code Test2 sau thử nhé (mình chưa test)
[GPECODE=vb]Sub Test2()
Dim Arr(), fName As String
fName = Application.GetOpenFilename
Arr = GetData(fName, "Sheet1")
Sheet1.Range("A65500").End(xlUp).Offset(1).Resize(UBound(Arr) + 1, UBound(Arr, 2) + 1) = Arr
End Sub[/GPECODE]
 
Lần chỉnh sửa cuối:
Upvote 0
Mình đã làm sẵn trong file cho bạn rồi. Còn chọn đường đẫn tới thì mình dùng hàm getdata để linh động chọn đường dẫn đó
Nếu vậy bạn test thử code Test2 sau thử nhé (mình chưa test)
[GPECODE=vb]Sub Test2()
Dim Arr(), fName As String
fName = Application.GetOpenFilename
Arr = GetData(fName, "Sheet1")
Sheet1.Range("A65500").End(xlUp).Offset(1).Resize(UBound(Arr) + 1, UBound(Arr, 2) + 1) = Arr
End Sub[/GPECODE]
nut text 2 bị lỗi đó bạn ơi ban xem lại giúp mình nhé
 
Upvote 0
ok được rồi, phiền bạn chỉ giúp nếu mình muốn chọn đường dẫn tới file tên khác thì sao, ngoài thay đỗi tên trong code vba còn cách nào mà mình ko cần thay đổi ở đó mà nó hiện đường dẫn tới cho mình được không?

vì mình muốn tên file ko nhất thiết phải là data và đường dẫn là có thể bất kỳ ở đâu, tùy vào người lưu
giúp luôn mình cái này nhé
cám ơn
 
Upvote 0
ok được rồi, phiền bạn chỉ giúp nếu mình muốn chọn đường dẫn tới file tên khác thì sao, ngoài thay đỗi tên trong code vba còn cách nào mà mình ko cần thay đổi ở đó mà nó hiện đường dẫn tới cho mình được không?

vì mình muốn tên file ko nhất thiết phải là data và đường dẫn là có thể bất kỳ ở đâu, tùy vào người lưu
giúp luôn mình cái này nhé
cám ơn
Thì đó test 2 đã làm được điều đó rồi còn gì
 
Upvote 0
ok được rồi, phiền bạn chỉ giúp nếu mình muốn chọn đường dẫn tới file tên khác thì sao, ngoài thay đỗi tên trong code vba còn cách nào mà mình ko cần thay đổi ở đó mà nó hiện đường dẫn tới cho mình được không?

vì mình muốn tên file ko nhất thiết phải là data và đường dẫn là có thể bất kỳ ở đâu, tùy vào người lưu
giúp luôn mình cái này nhé
cám ơn
Thử code này coi sao. Gọn nhẹ dễ chỉnh sữa
PHP:
Sub File_Find()
Dim File_Can_Mo, Tam()
File_Can_Mo = Application.FindFile
If File_Can_Mo Then
   With ActiveWorkbook
      With .ActiveSheet
         Tam = .Range("A2", .[C65536].End(3)).Value
      End With
      .Close False
   End With
ActiveSheet.[A65536].End(3)(2).Resize(UBound(Tam), 3) = Tam
End If
End Sub
 
Upvote 0
anh hiểu sai ý em rồi, bay giờ em ví dụ em để file dữ liệu cần copy đặt tại ổ D vậy khi ấn nút text mở file này lên thì file bị lỗi
anh xem giúp em nhé
Bạn phải để hai file đó trong cùng Folder thì mới được
nều không thì thay đổi đường dẩn file sữa lại đoạn code sau theo ý mình nha
test
PHP:
Workbooks.Open Filename:=ThisWorkbook.Path & "\data.xlsx"
Test2
PHP:
Arr = GetData(ThisWorkbook.Path & "\data.xlsx", "Sheet1")
nếu ko sữa được thì sử dụng code của Anh Hải đi cũng Ok mà
 
Upvote 0
Thử code này coi sao. Gọn nhẹ dễ chỉnh sữa
PHP:
Sub File_Find()
Dim File_Can_Mo, Tam()
File_Can_Mo = Application.FindFile
If File_Can_Mo Then
   With ActiveWorkbook
      With .ActiveSheet
         Tam = .Range("A2", .[C65536].End(3)).Value
      End With
      .Close False
   End With
ActiveSheet.[A65536].End(3)(2).Resize(UBound(Tam), 3) = Tam
End If
End Sub
code anh hải ok em dùng được rồi cám ơn anh hải
nhưng anh hải có thể cho em hỏi 1 điều là code của anh tại sao ko có chổ nào copy từ file dữ liệu mà nó vẫn sang file được nhỉ, có thể giải thích giúp cho em hiểu thêm 1 tí được ko?
cam ơn
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn phải để hai file đó trong cùng Folder thì mới được
nều không thì thay đổi đường dẩn file sữa lại đoạn code sau theo ý mình nha
test
PHP:
Workbooks.Open Filename:=ThisWorkbook.Path & "\data.xlsx"
Test2
PHP:
Arr = GetData(ThisWorkbook.Path & "\data.xlsx", "Sheet1")
nếu ko sữa được thì sử dụng code của Anh Hải đi cũng Ok mà
nếu sửa đường dẫn thì mình sửa được bạn ơi, nhưng trong trường hợp này mình muốn tự chọn đường dẫn vì dữ liệu không nằm trong file cố định tên và 1 chổ
cám ơn nhiều
 
Upvote 0
code anh hải ok em dùng được rồi cám ơn anh hải
nhưng anh hải có thể cho em hỏi 1 điều là code của anh tại sao ko có chổ nào copy từ file dữ liệu mà nó vẫn sang file được nhỉ, có thể giải thích giúp cho em hiểu thêm 1 tí được ko?
cam ơn
Câu lệnh Tam = .Range("A2", .[C65536].End(3)).Value
Là copy dữ liệu đó
ActiveSheet.[A65536].End(3)(2).Resize(UBound(Tam), 3) = Tam
Là dán dữ liệu xuống sheet đấy
Mình kém nên cứ lựa chọn mấy thứ đơn giản mà phang tới. Dại gì đụng vô ADO như tự đụng đầu vào tường.
 
Lần chỉnh sửa cuối:
Upvote 0
code anh hải ok em dùng được rồi cám ơn anh hải
nhưng anh hải có thể cho em hỏi 1 điều là code của anh tại sao ko có chổ nào copy từ file dữ liệu mà nó vẫn sang file được nhỉ, có thể giải thích giúp cho em hiểu thêm 1 tí được ko?
cam ơn
xin phép kaka trả lời một cái coi
file data dòng cần copy (File nguon)
PHP:
 Tam = .Range("A2", .[C65536].End(3)).Value
file copy hay là (file Đích)
PHP:
ActiveSheet.[A65536].End(3)(2).Resize(UBound(Tam), 3) = Tam
 
Upvote 0
Thử code này coi sao. Gọn nhẹ dễ chỉnh sữa
PHP:
Sub File_Find()
Dim File_Can_Mo, Tam()
File_Can_Mo = Application.FindFile
If File_Can_Mo Then
   With ActiveWorkbook
      With .ActiveSheet
         Tam = .Range("A2", .[C65536].End(3)).Value
      End With
      .Close False
   End With
ActiveSheet.[A65536].End(3)(2).Resize(UBound(Tam), 3) = Tam
End If
End Sub
Em mới độ lại code Của Anh một tí chạy thấy hay ghê
PHP:
Sub File_Find2()
Dim File_Can_Mo, Tam()
File_Can_Mo = ThisWorkbook.Path & "\data.xlsx"
Workbooks.Open File_Can_Mo
   With ActiveWorkbook
      With .ActiveSheet
         Tam = .Range("A2", .[C65536].End(3)).Value
      End With
      .Close False
   End With
ActiveSheet.[A65536].End(3)(2).Resize(UBound(Tam), 3) = Tam
End Sub
 
Upvote 0
...
Trường hợp này dùng ADO thi hay hơn
ADO làm sao chỉ giúp mình với, mình cũng gà mấy cái này lắm
...

ADO chỉ hiệu quả khi bạn cần lọc hay tổng hợp dữ liệu cần chép. Vì lúc ấy bạn có thể lợi dụng Access để làm các công việc này.
Trường hợp cụ thể của bạn là chép dữ liệu thuần tuý từ a sang b. ADO hầu như không có lợi gì cả.
 
Upvote 0

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

Back
Top Bottom