Code VBA Lấy dữ liệu từ File khác bằng SQL

Liên hệ QC

hoahuongduong1986

Thành viên thường trực
Tham gia
14/11/18
Bài viết
346
Được thích
40
Dear Anh chị thân mến,
Em muốn lấy số liệu từ File" NKBH "vào Sheet Data của File " Lay so lieu" với điều kiện lọc như tại sheet Bao cao của File" Lay so lieu " gồm 3 điều kiện Lọc từ ngày đến ngày và Lọc theo tên công ty. Em mới làm được một đoạn thôi ạ. Chưa hoàn chỉnh vì không biết làm sao tiếp ạ. Mong A chị giúp đỡ ạ.
 

File đính kèm

  • Lay so lieu.xlsm
    21.9 KB · Đọc: 41
  • NKBH.xlsx
    520.8 KB · Đọc: 39
Bạn xem lại cách dùng If Then Else nhé.
Sửa lại:

Mã:
If Len(sPath) = 0 Then 'Khong chon file nao
        MsgBox "The Link to Update SKTD is not available!"
        Exit Sub
    End If
  
    If Len(Dir(sPath)) = 0 Then
        MsgBox "Duong dan file sai!"
        Exit Sub
    End If

Còn việc chạy 2 cái Sub mà cái 1 sai nó thoát chắc do lệnh Exit Sub hoặc báo lõi hệ thống gì đó nó ngưng cái Sub Gop luôn.
Nó có hiện thông báo lỗi gì không?
Bạn đổi tên Sub LayData thành Function LayData và dùng lệnh Exit Function thay thế Exit sub trong đó thử xem.
Chuẩn không cần chỉnh Anh ạ ! Với A em thấy không có gì là không thể ạ. Cảm ơn A ạ !!!
 
Upvote 0
Bạn thử cái này.
Mã:
Sub ImportData_Test()
Dim owb As Workbook
Dim cn As Object, pro As String, EXT As String, name As String, sql As String, ngay1 As Long, ngay2 As Long, ten As String
With Sheets("bao cao")
     ngay1 = .Range("C3").Value2
     ngay2 = .Range("c4").Value2
     ten = .Range("C2").Value
End With
Dim rst As Object
'On Error Resume Next
Set rst = CreateObject("ADODB.recordset")
Set cn = CreateObject("ADODB.Connection")
     Sheets("Data").Range("A2:J10000").ClearContents
     name = ThisWorkbook.Path & "\NKBH.xlsx"
     pro = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
     EXT = ";Extended Properties=""Excel 12.0;HDR=No;"";"
     cn.Open (pro & name & EXT)
     sql = "SELECT * from [sheet1$A1:J100000]  WHERE F5=" & "'" & ten & "'" & "AND F1 BETWEEN " & ngay1 & " and " & ngay2 & ";"
    rst.Open sql, cn, 3, 1
        Sheet1.Range("A2").CopyFromRecordset rst
     rst.Close
    cn.Close
End Sub
AD ƠI CỘT F5 là gì vậy? xin hướng dẫn ạ>
 
Upvote 0
Web KT

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

Back
Top Bottom