Cách lấy dữ liệu từ 1 file Excel sang file Excel khác

Liên hệ QC
em có tò mò và làm một số thao tác như:
1. sóa trăng bên sheet1 của data thì code chạy báo lỗi
2.để dữ liệu A1:D1 code lại OK
3.Chạy code vài lần liên tục rồi sóa dữ liệu để lại dữ liệu A1:D1 và chậy tiếp thì ra 2 trường hợp
+ dữ liệu ghi tiếp sát ngay dưới phần dữ liệu còn lại
+ dữ liệu ghi nối tiếp vùng dữ liệu đã có trước khi sóa
>>> anh giúp em hiểu hơn được không ?
Trong lúc chờ anh HLMT online mình trả lời câu hỏi của bạn

1,2. ADO có quy tắc dò tìm định dạng các bản ghi để biết vị trí bạn muốn chèn dữ liệu do đó trường hợp bạn chọn HDR=No thì nhất thiêt phải có các bản ghi mẫu để ADO so sánh và chèn dữ liệu vào vị trí mong muốn
Để khắc phục thì bạn có thể xóa hoàn toàn dữ liệu nhưng định dạng lại vùng cần chèn sao cho chính xác (bạn tham khảo bài #70 tại: http://www.giaiphapexcel.com/forum/showthread.php?80367-Đố-vui-về-ADO-DAO/page7)

3. Khi bạn đã chèn dữ liệu tương ứng với việc bạn đã tạo bản ghi (record), lúc bạn xóa tương đương với xóa dữ liệu chứ không phải xóa bản ghi. Vậy ADO sẽ chèn dữ liệu vào sau bản ghi cuối cùng. Để thấy điều này rõ hơn thì thay vì việc bạn xóa dữ liệu bạn hãy xóa dòng bạn đã chèn save và chạy Code để thấy kết quả.
 
Bác nào viết cái này lại bằng ADO dùm em với ạ@$@!^%
 

File đính kèm

  • copy.xlsb
    44.8 KB · Đọc: 83
Lần chỉnh sửa cuối:
Bác nào viết cái này lại bằng ADO dùm em với ạ@$@!^%
Thử code này xem sao

[GPECODE=vb]
Sub Test()
Dim cnn As Object, lsSQL As String, lrs As Object
Dim Wbopen As String
Set cnn = CreateObject("ADODB.Connection")
Set lrs = CreateObject("ADODB.Recordset")
Wbopen = Application.GetOpenFilename
With cnn
If Val(Application.Version) < 12 Then
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Wbopen & ";Extended Properties=""Excel 8.0;HDR=No"";"
Else
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Wbopen & ";Extended Properties=""Excel 12.0;HDR=No"";"
End If
.Open
End With


lsSQL = "Select * From [DATA$]" 'DATA là tên sheet bạn muốn copy thay đổi phù hợp
lrs.Open lsSQL, cnn, 3, 1
Sheet1.Range("A1").CopyFromRecordset lrs
Set lrs = Nothing
cnn.Close: Set cnn = Nothing
End Sub


[/GPECODE]
Mai mốt nên tạo chủ để mới không nên chen ngang topic của người khác
 

File đính kèm

  • copy.xlsb
    47.3 KB · Đọc: 271
[/GPECODE]
Mai mốt nên tạo chủ để mới không nên chen ngang topic của người khác[/QUOTE]
Có cách nào có thể chuyển hết dữ liệu trong tất cả các sheet của file cần copy sang các sheet tương ứng bên file nguồn không anh, chỉ giúp em với. Vd: bên file dữ liệu.xlsx có 3 sheet tên sheet1, sheet2, sheet3, bên file nguồn.xlsx cũng có 3 sheet tương tự thì mình có thể chuyển hết data trong 3 sheet ở file dữ liệu sang 3 sheet trong file nguồn được không anh.
 
cái này copy luôn cả hàm ở file nguồn. paste sang file mới thì hàm đó ko phù hợp.
có cách nào chỉ đọc dữ liệu ở file nguồn và viết ra file mới mà ko phải dạng copy-paste không bác?
 
Cả nhà giúp em với! Em muốn lấy dữ liệu bên file XSLCD SANG FORM THCD mà không phải copy bằng tay. Khi dữ liệu file 1 nhiều mà copy bằng tay thì đuối quá. Cả nhà có cách nào giúp em với em cám ơn.

Em có file XSLCD chứa giờ công hành chính, tăng ca của công nhân dựa vào mã công nhân lấy giờ công trong ngày của tháng bỏ vào file 2. Xn cả nhà cho em gợi ý. Em cám ơn nhiều ạ. skype e là kiemchungcoi, rất mong được làm quen với các cao thủ ạ
 

File đính kèm

  • THCD.xlsx
    21.4 KB · Đọc: 28
  • XSLCD.xls
    43 KB · Đọc: 29
trong code:
Sub ChuyenDL()
Dim cnn As Object
Set cnn = CreateObject("ADODB.Connection")
With cnn
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ThisWorkbook.Path & _
"\data.xlsm;Extended Properties=""Excel 12.0;HDR=No;"""
.Open
.Execute "INSERT INTO [Sheet1$] SELECT F1,F2,F3,F4 FROM [Excel 12.0;Database=" & _
ThisWorkbook.FullName & ";HDR=No].[Sheet1$A1:D10]"
End With
cnn.Close: Set cnn = Nothing

End Sub

có dòng lệnh:

.Execute "INSERT INTO [Sheet1$] SELECT F1,F2,F3,F4 FROM [Excel 12.0;Database=" & _
ThisWorkbook.FullName & ";HDR=No].[Sheet1$A1:D10]"


Giờ muốn chuyển 1 ô của sheet file này sang 1 ô của sheet file khác thì thay đổi thế nào?

ví dụ: giờ chuyển dữ liệu ô A1 bên sheet đang mở sang ô A1 bên sheet cần chuyển dữ liệu đang đóng thì làm sao?

Em cảm ơn.
 
Lần chỉnh sửa cuối:
trong code:
Sub ChuyenDL()
Dim cnn As Object
Set cnn = CreateObject("ADODB.Connection")
With cnn
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ThisWorkbook.Path & _
"\data.xlsm;Extended Properties=""Excel 12.0;HDR=No;"""
.Open
.Execute "INSERT INTO [Sheet1$] SELECT F1,F2,F3,F4 FROM [Excel 12.0;Database=" & _
ThisWorkbook.FullName & ";HDR=No].[Sheet1$A1:D10]"
End With
cnn.Close: Set cnn = Nothing

End Sub

có dòng lệnh:

.Execute "INSERT INTO [Sheet1$] SELECT F1,F2,F3,F4 FROM [Excel 12.0;Database=" & _
ThisWorkbook.FullName & ";HDR=No].[Sheet1$A1:D10]"


Giờ muốn chuyển 1 ô của sheet file này sang 1 ô của sheet file khác thì thay đổi thế nào?

ví dụ: giờ chuyển dữ liệu ô A1 bên sheet đang mở sang ô A1 bên sheet cần chuyển dữ liệu đang đóng thì làm sao?

Em cảm ơn.
Bạn dùng code sau:

PHP:
Sub Test()
    Dim ado As Object
    Set ado = CreateObject("ADODB.Connection")
    ado.Open ("Provider=Microsoft.JET.OLEDB.4.0;Data Source=""" _
                        & ThisWorkbook.Path & "\Data.xls" & """;Extended Properties=""Excel 8.0;HDR=No"";")
    ado.Execute "UPDATE [Sheet1$A1:A1] SET F1 = '" & Sheet1.[A1] & "'"
    ado.Close

End Sub
Giải nén file ví dụ và mở file test để thử nhé.
 

File đính kèm

  • Update.rar
    16.4 KB · Đọc: 480
cảm ơn anh Hai lúa miền tây,

cho em hỏi vấn đề nữa luôn. giờ luốn lấy dữ liệu của 1 dãy ô bất kì trong file data thì làm sao.
 
Hi~ Các anh chị

Em muốn liên kết dữ liệu giữa 2 sheet khác nhau mà không cần dùng ngôn ngữ lập trình có được ko a?
Các anh chi giúp em với ak
 

File đính kèm

  • Book2.xlsx
    9.6 KB · Đọc: 13
  • File tong.xlsx
    10.5 KB · Đọc: 18
được chứ mở 2 file ra và gõ công thức bình thường, cách này làm thì hơi nặng file đó
 
Em xin các cao thủ giúp em với. Các ví dụ ở đây đòi hỏi còn cao hơn yêu cầu của em.

Em muốn từ file đích là chuongtrinh.xlsm (đang mở) bấm 1 nút là có thể copy value từ ô A1, Sheet1 của file C:\data.xls sang ô B1 của file đang mở. Xin các bác giúp em với.
 
Lần chỉnh sửa cuối:
Chuyển dữ liệu từ File 1 sang File 2

Xin chào, mình mới vào nên chưa biết gì, các bạn chỉ dạy mình thêm nha.Các bạn có thể đưa đoạn mã vào trong excel rồi làm thử được chứ ạ, mình mù tịt về VBA, nên đọc mà ko hiểu gì, xin lỗi các bạn, mong các bạn giúp đỡ mình
 
Mình cũng dang gặp rắc rối vì vấn đề này, làm bên excel dữ liệu nhiều, mình làm ko nổi, mong các bạn giúp đỡ
 
Sang bài #15 để tham khảo nhé.
Dạ, thầy Hai Lúa Miền Tây cho em hỏi, em cũng có tham khảo chủ đề bên đó rồi. Em không rành cách dùng UPDATE một range nên có tham khảo cách dùng SELECT INTO để chép đè dữ liệu lên dữ liệu đang có trong file Data (vì dùng INSERT INTO dữ liệu sẽ ghi tiếp theo chứ không ghi đè lên được). Sub vẫn chạy nhưng hiện thông báo "Table 'xxxx' already exists" và không có dữ liệu nào được ghi vào file Data cả. Thầy có thể hướng dẫn giúp em cách chép đè dữ liệu vào Sheet BKMV file Data bắt đầu từ ô C25 được không ạ? Em cảm ơn ạ.
 

File đính kèm

  • AddData.rar
    86.2 KB · Đọc: 21
Lần chỉnh sửa cuối:
Dạ, thầy Hai Lúa Miền Tây cho em hỏi, em cũng có tham khảo chủ đề bên đó rồi. Em không rành cách dùng UPDATE một range nên có tham khảo cách dùng SELECT INTO để chép đè dữ liệu lên dữ liệu đang có trong file Data (vì dùng INSERT INTO dữ liệu sẽ ghi tiếp theo chứ không ghi đè lên được). Sub vẫn chạy nhưng hiện thông báo "Table 'xxxx' already exists" và không có dữ liệu nào được ghi vào file Data cả. Thầy có thể hướng dẫn giúp em cách chép đè dữ liệu vào Sheet BKMV file Data bắt đầu từ ô C25 được không ạ? Em cảm ơn ạ.
Dùng Update nhé, nhưng phải dựa vào cột nào đó để làm điều kiện cập nhật. VD tôi dựa vào cột STT để cập nhật.

Mã:
Sub GhiDL_HLMT()
    Dim cn As Object
    Set cn = CreateObject("ADODB.Connection")
    cn.Open "Provider= Microsoft.Jet.OLEDB.4.0;data source=" & ThisWorkbook.Path & "\Data.xls;extended properties=""excel 8.0;HDR=Yes;"";"
    cn.Execute "UPDATE [BKMV$B24:N100] a " _
               & "INNER JOIN " _
               & "[Excel 8.0;HDR=Yes;DATABASE=" & ThisWorkbook.FullName & "].[MBKMV$B24:N100] b  " _
               & "ON a.STT=b.STT " _
               & "SET a.MauHD=b.MauHD,a.KyHieuHD=b.KyHieuHD,a.SoHD=b.SoHD,a.NgayHD=b.NgayHD,a.TenNguoiBan=b.TenNguoiBan,a.MaSoThue=b.MaSoThue,a.MatHang=b.MatHang,a.DoanhSoMua=b.DoanhSoMua,a.ThueSuat=b.ThueSuat,a.ThueGTGT=b.ThueGTGT,a.GhiChu=b.GhiChu,a.QuyXL=b.QuyXL"
    
End Sub
 

File đính kèm

  • AddData.rar
    85.2 KB · Đọc: 147
Web KT
Back
Top Bottom