Lớp học GPE tháng 10 - TPHCM: Conditional Formatting và Data Validation (tối 4, 6/10) | Excel cơ bản (tối 9, 11, 13/10) |
Thuần thục các hàm dò tìm (tối 10, 12/10) | Tất tần tật về PivotTable (tối 16, 18, 20/10) |
Tất tần tật về Filter và Advanced Filter (tối 23, 25/10) | Name động và biểu đồ (tối 24, 26, 28/10)

Đăng ký học Khởi đầu cùng Google Spreadsheet - 2 chủ nhật 1 và 8/10 - TPHCM

Đăng ký học Xây dựng ứng dụng Form bằng VBA - 2 chủ nhật 15 và 22/10 - TPHCM

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

Thảo luận trong 'Excel và các ngôn ngữ lập trình khác' bắt đầu bởi tackenui, 19 Tháng bảy 2007.

  1. tackenui

    tackenui Thành viên mới

    Dear all,
    Tôi mới coi về VBA nên cũng chưa rành lắm.
    Mọi người cho tôi hỏi. Tôi muốn lấy dữ liệu từ 1 file Excel (dữ liệu thô) để đổ vô 1 file Excel khác theo layout định sẵn thì làm cách nào?
    Ai biết vui lòng chỉ giúp.
    Xin cám ơn.
     
  2. anhtotbung35

    anhtotbung35 Thành viên hoạt động

    Muốn người khác giúp thì hay đưa file giả lập lên, mọi người xem thì dễ hiểu hơn
     
  3. nmhung49

    nmhung49 Thành viên tích cực

    Tui nghĩ bạn nên dùng record macro để ghi lại những thao tác bạn làm.Thí dụ bạn muốn copy cột A đến cột D chẳng hạn từ file dữ liệu thô sang file bạn muốn thao tác xử lý số liệu (" file excel khác của bạn đó") sao đó bạn gán nút lệnh để cho nó chạy lại những tao tác đó là xong. Bạn vào Tools > Macro > record Marco > rồi thực hiện xong bạn vào trở lại Tools > Macro >stoping Marco. Bạn vẽ hình ngôi sao hay hình gì đó gán macro đó vào là xong bằng cách click chuột phải vào hình đó chọn Asign macro > chọn new hoặc edit tuỳ theo. Tui thường làm theo cách này sao đó tự động rút gọn lại, Mong giúp ích được bạn. Thanks
     
  4. phamxuyenp171

    phamxuyenp171 Thành viên hoạt động

    Cách này với điều kiện là 2 file đều đã được mở ra rồi thì mới được. Xin hỏi thêm bác nmhung49 rằng: nếu muốn thực hiện việc copy và dán như trên nhưng chỉ cần mở một file "nguồn"; file "đích" đóng (2file cùng thư mục) thì phải làm thế nào ạ!?
     
  5. thanhphuong

    thanhphuong Thành viên hoạt động

    Vẫn làm được khi dùng VBA. Bạn gửi file lên có người giúp
    Thân
     
  6. dohoa_69ks

    dohoa_69ks Thành viên mới

    Cái này dễ thôi !
    Bạn fải biết một chút VB để nói mới biết chứ ....%#^#$
    Mot doan CODE de lay mot du lieu tho (chon vung) cua mot Sheet bat ky cua mot file
    dan vao Sheet hien hanh (nguoi su dung muon dan), nhu sau
    Code cho phan mo file
    Doan code viet trong Module
    Goi lenh copy trong boxe_text_code (trong Sheet cua nguoi dung)

    Sub copy_data()
    On Error Resume Next
    Dim basebook As String
    Dim mybook As Workbook
    Dim fname As String
    Dim Mypath As String
    Application.ScreenUpdating = False
    Mypath = Application.ActiveWorkbook.Path
    basebook = ActiveWorkbook.Name
    ChDrive Mypath
    ChDir Mypath
    fname = Application.GetOpenFilename(filefilter:="Execel files (*.xls), *.xls", Title:="Chon file nguon", MultiSelect:=False)
    Set mybook = Workbooks.Open(fname)
    mybook.Worksheets(1).Activate…………………xác định tên Sheet (phải biết chính xác Sheet nào cần dán)
    ' Vung chon de dan
    Range("A1:J1").Select……………………………………………..xac dinh vung chuan bi
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows(basebook).Activate
    ' Chon Sheet de dan
    Sheet1.Select
    Range("A1").Select………………………vùng bđầu chọn
    ActiveSheet.Paste
    Range("A4").Select………………………vùng con trỏ đứng sau khi thực hiện lệnh xong
    Application.CutCopyMode = False
    mybook.Close False
    Application.ScreenUpdating = True
    End Sub
     
    Lần chỉnh sửa cuối: 30 Tháng bảy 2011
  7. ngochantrung

    ngochantrung Thành viên mới

    Chào các bạn,

    Mình muốn lấy dữ liệu từ một sheet sang sheet khác, mình có gửi file dinh kem, các bạn xem giúp mình nha.

    Cảm ơn trước,,
     

    Các file đính kèm:

  8. tuangiang25022008

    tuangiang25022008 Thành viên mới

    Đoạn code trên chỉ áp dụng cho 2 file thôi.
    Bây giờ mình có 3 file. (flie có tên là "BF" trong file "BF" có sheet "BF", Flie "BRF" có sheet tên là "BRF" file "CF" có sheet tương ứng là "CF")
    Mình có một file nguồn (file này có tên là "tong hop" va co sheet "tong hop".)
    Bây giờ mình muốn copy lần lượt 3 sheet "BF", "BRF", "CF" vào sheet "tong hop"
    Ví dụ copy sheet "BF" có 60000 dòng.
    Tiếp đến copy dữ liệu ở sheet "BRF" vào tiếp dòng tiếp theo của sheet "tong hop" (tức là copy vào dòng 60001)
    và tiếp đến là copy sheet "CF".
    Nhưng dữ liệu của mình lớn hơn 100000 dòng nên phải dùng 2007 mới chứa nổi vì excel 2003 chỉ được hơn 65000 dòng thôi.
    Mong bạn chỉ giúp mình.
    thanks
     
  9. scooby

    scooby Thành viên mới

    Đoạn Code này xem qua tôi ngại không thể thực hiện 2 lần được , vì lần đầu chọn Sheet1 ở ô A1 làm điểm bắt đầu và paste vào . Nếu lần thứ 2 thì nó cũng lại select A1 then Paste again in there ??? Đâu có chỗ nào bảo nó dò xem LastRow ở đau để Paste kế tiếp .

    Khi chọn Range("A1:J1").Select để copy, xlDown đi xuống cho đến khi Blank thì dừng . Ở paste thì dừng ở A4, cho thấy copy chỉ vỏn vẹn 3 rows only . Như vậy tha hồ Copy Paste đau sợ hết sheet 1 đau Cho dù 1000 lần, mỗi lần paste chỉ có 3 rows = 3000 rows . Nếu đã giả sử là nhiều rows cần copỵ mà mình không biết là bao nhiêu rows thì dùng xlDown , vậy có cần With không ??

    Chứa không nổi thì dùng loop (For hoặc Do) copy từ range nào đến đau . Nếu trang đó full thì qua tiếp paste trang khác

    Tôi chập chững học VBA, có gì sai mong thứ lỗi nhé
     
    Lần chỉnh sửa cuối: 11 Tháng ba 2012
  10. phihndhsp

    phihndhsp Thành viên gắn bó

    chuyển dữ liệu từ FILE này sang FILE khác

    Xin được các cao thủ cho ý kiến bài này dùm, xin cảm ơn
    Tôi có 2 file FILE1 FILE2 bây giờ tôi muốn dùng code VBA để chuyển dữ liệu từ FILE1 sang FILE2
    với điều kiện là
    FILE2 có thể đang mở hoặc không
    xin chân thành cảm ơn các cao thủ nhiều, xin chào
     

    Các file đính kèm:

  11. phihndhsp

    phihndhsp Thành viên gắn bó

    Tôi suy nghĩ 2 ngày rồi nhưng kết quả vẫn là số 0 tròn trĩn, thật là có rất nhiều vấn đề mà mình không lường trước nó phải như vậy.
     
  12. huunhanltqb

    huunhanltqb Thành viên mới

    Bạn ơi chạy không được mình chỉ copy được ô đầu tiên thôi, nhờ bạn xem lại dùm
     
  13. Hai Lúa Miền Tây

    Hai Lúa Miền Tây Thành viên gạo cội Staff Member Super Moderator

    Không biết bạn có câu trả lời chưa, tôi làm thử = ado nhé.

    [GPECODE=sql]Sub ChuyenDL()
    On Error GoTo Handle
    Dim cnn As Object, lsSQL As String, lrs As Object
    Set cnn = CreateObject("ADODB.Connection")
    Set lrs = CreateObject("ADODB.Recordset")
    With cnn
    .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & ThisWorkbook.FullName & _
    ";Extended Properties=""Excel 8.0;HDR=No;"";"
    .Open
    End With
    lsSQL = "INSERT INTO [Sheet1$] IN '" & ThisWorkbook.Path & _
    "\FILE2.xls ' 'Excel 8.0;' SELECT f1,f2,f3,f4 FROM [Sheet1$A1:D10]"

    lrs.Open lsSQL, cnn, 3, 1
    Set lrs = Nothing
    cnn.Close: Set cnn = Nothing
    Exit Sub
    Handle:
    MsgBox Err.Description

    End Sub

    [/GPECODE]

    Lưu ý tôi thêm tiêu đề cột cho file2 nhé.
     

    Các file đính kèm:

    Lần chỉnh sửa cuối: 20 Tháng mười hai 2012
  14. viehoai

    viehoai GPE mỗi ngày

    Anh giải thích giúp em câu lênh thứ 12
    Em cảm ơn
     
  15. Hai Lúa Miền Tây

    Hai Lúa Miền Tây Thành viên gạo cội Staff Member Super Moderator

    [GPECODE=sql]
    'Chen them dong vao sheet1 o duong dan 'DuongDanChungVoiFileChayCode\File2.xls' ' voi phien ban excel 2003;'
    'Chon cot 1,2,3,4 cua vung du lieu [Sheet1$A1:D10] o file1 de dua vao file2,
    'F1,F2,F3,F4 la Field1,Field2,Field3,Field4 do minh chon kieu ket noi voi vung du lieu la khong chon tieu de cot (HDR=No),
    'con neu chon tieu de cot thi phai ghi ten cua tieu de cot ro rang (HDR=Yes)
    lsSQL = "INSERT INTO [Sheet1$] IN '" & ThisWorkbook.Path & _
    "\FILE2.xls ' 'Excel 8.0;' SELECT f1,f2,f3,f4 FROM [Sheet1$A1:D10]"



    [/GPECODE]
     
    Lần chỉnh sửa cuối: 20 Tháng mười hai 2012
  16. huyhoang_mmyeht

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

    cái này theo mình thì vẩn chưa thỏa mãn điều kiện nếu dữ liệu chỉ sữa thì cần update chứ không thêm mới
     
  17. Hai Lúa Miền Tây

    Hai Lúa Miền Tây Thành viên gạo cội Staff Member Super Moderator

    Dĩ nhiên nếu update thì sẽ có câu lệnh khác.
     
  18. maytinhvp01

    maytinhvp01 Thành viên thường trực

    Với câu lệnh trên của anh em sửa lại thành:
    Mã:
    Sub ChuyenDL()
    On Error GoTo Handle
    Dim cnn As Object, lsSQL As String, lrs As Object
    Set cnn = CreateObject("ADODB.Connection")
    Set lrs = CreateObject("ADODB.Recordset")
    With cnn
        .ConnectionString = "Provider=Microsoft.[COLOR=#ff0000]ACE.OLEDB.12.0[/COLOR];" & _
                            "Data Source=" & ThisWorkbook.FullName & _
                            ";Extended Properties=""Excel[COLOR=#ff0000] 12.0[/COLOR];HDR=No;"";"
        .Open
    End With
        lsSQL = "INSERT INTO [Sheet1$] IN '" & ThisWorkbook.Path & _
                     "\[COLOR=#ff0000]data.xlsm[/COLOR] ' 'Excel [COLOR=#ff0000]12.0[/COLOR];' SELECT f1,f2,f3,f4 FROM [Sheet1$A1:D10]"
     
        lrs.Open lsSQL, cnn, 3, 1
    Set lrs = Nothing
    cnn.Close: Set cnn = Nothing
    Exit Sub
    Handle:
    MsgBox Err.Description
     
    End Sub
    
    
    file chứa code là file có tên "chay", file muốn ghi vào là file có tên "data
    không hiểu sao lại không được luôn báo lỗi anh giải thích thêm giúp em với
     

    Các file đính kèm:

    • GPE.rar
      Kích thước:
      19.4 KB
      Đọc:
      219
    Lần chỉnh sửa cuối: 17 Tháng mười một 2013
  19. Hai Lúa Miền Tây

    Hai Lúa Miền Tây Thành viên gạo cội Staff Member Super Moderator

    Bạn chạy code sau:

    [GPECODE=sql]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

    [/GPECODE]
     

    Các file đính kèm:

    • GPE.rar
      Kích thước:
      19.1 KB
      Đọc:
      438
  20. maytinhvp01

    maytinhvp01 Thành viên thường trực

    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 ?
     

Chia sẻ trang này