Dùng ADO lấy dữ liệu từ file đang đóng bị chuyển đổi định dạng thành giá trị

Liên hệ QC

Lê Hồng Minh83

Thành viên tiêu biểu
Tham gia
29/9/17
Bài viết
587
Được thích
649
Giới tính
Nam
Chào các thành viên diễn đàn
em đang mày mò áp dụng ADO nhưng bị tình trạng dữ liệu ở file gốc thì chỉ là dữ liệu số được định dạng kiểu tiền tệ:
223110
Nhưng khi nó được chuyển qua file khác bằng ADO (code sưu tầm trên GPE) thì dữ liệu định dạng bị chuyển đổi thành giá trị chuỗi và gán luôn ký hiệu định dạng $52
223111
Có cách nào để lấy dữ liệu từ file đang đóng mà giữ nguyên giá trị ban đầu không ạ (file gốc ở bên ngoài nên không thể yêu cầu người ta bỏ định dạng theo ý mình được)
tham khảo code
Mã:
Function GetExcelConnection(ByVal Path As String, Optional ByVal Header As Boolean = True)
    Dim StrConn As String, ObjConn As Object, Pro As String, Ext As String
    Set ObjConn = CreateObject("ADODB.Connection")
    If Application.Version < 12 Then
        Pro = "Provider=Microsoft.JET.OLEDB.4.0;"
        Ext = ";Extended Properties=""Excel 8.0;"
    Else
        Pro = "Provider=Microsoft.ACE.OLEDB.12.0;"
        Ext = ";Extended Properties=""Excel 12.0;"
    End If
    StrConn = Pro & "Data Source=" & Path & Ext & "HDR=" & IIf(Header, "Yes", "No") & ";IMEX=1"";"
    ObjConn.Open StrConn
    Set GetExcelConnection = ObjConn
End Function

Sub Copy_LIST()
Dim ObjConn As Object, RS As Object, Files
Dim StrRequest As String, Path As String

    On Error Resume Next
        Sheet1.Range("A1:K1000").ClearContents
        Path = ThisWorkbook.Path
        Files = "data.xlsx"
        Set RS = CreateObject("ADODB.Recordset")
        Set ObjConn = GetExcelConnection(Path & "\" & Files, 0)
        StrRequest = "SELECT * FROM [Sheet1$A1:S700]"
        RS.Open StrRequest, ObjConn, 3, 1
        Sheet1.[A100].End(xlUp).CopyFromRecordset RS
        ObjConn.Close
    Set RS = Nothing
End Sub
Cảm ơn!
 

File đính kèm

  • bo dinh dang.rar
    21.6 KB · Đọc: 5
Chào các thành viên diễn đàn
em đang mày mò áp dụng ADO nhưng bị tình trạng dữ liệu ở file gốc thì chỉ là dữ liệu số được định dạng kiểu tiền tệ:
View attachment 223110
Nhưng khi nó được chuyển qua file khác bằng ADO (code sưu tầm trên GPE) thì dữ liệu định dạng bị chuyển đổi thành giá trị chuỗi và gán luôn ký hiệu định dạng $52
View attachment 223111
Có cách nào để lấy dữ liệu từ file đang đóng mà giữ nguyên giá trị ban đầu không ạ (file gốc ở bên ngoài nên không thể yêu cầu người ta bỏ định dạng theo ý mình được)
tham khảo code
Mã:
Function GetExcelConnection(ByVal Path As String, Optional ByVal Header As Boolean = True)
    Dim StrConn As String, ObjConn As Object, Pro As String, Ext As String
    Set ObjConn = CreateObject("ADODB.Connection")
    If Application.Version < 12 Then
        Pro = "Provider=Microsoft.JET.OLEDB.4.0;"
        Ext = ";Extended Properties=""Excel 8.0;"
    Else
        Pro = "Provider=Microsoft.ACE.OLEDB.12.0;"
        Ext = ";Extended Properties=""Excel 12.0;"
    End If
    StrConn = Pro & "Data Source=" & Path & Ext & "HDR=" & IIf(Header, "Yes", "No") & ";IMEX=1"";"
    ObjConn.Open StrConn
    Set GetExcelConnection = ObjConn
End Function

Sub Copy_LIST()
Dim ObjConn As Object, RS As Object, Files
Dim StrRequest As String, Path As String

    On Error Resume Next
        Sheet1.Range("A1:K1000").ClearContents
        Path = ThisWorkbook.Path
        Files = "data.xlsx"
        Set RS = CreateObject("ADODB.Recordset")
        Set ObjConn = GetExcelConnection(Path & "\" & Files, 0)
        StrRequest = "SELECT * FROM [Sheet1$A1:S700]"
        RS.Open StrRequest, ObjConn, 3, 1
        Sheet1.[A100].End(xlUp).CopyFromRecordset RS
        ObjConn.Close
    Set RS = Nothing
End Sub
Cảm ơn!
Theo mình thấy khi lấy dữ liệu cho vào mảng sử lý tiếp.Xong đưa ra trang tính.
 
Upvote 0
Web KT
Back
Top Bottom