Giúp E Viết Code VBA Lấy Nội Lực Từ File Access Dán Vào File Excel!!!

Liên hệ QC

nad582

Thành viên thường trực
Tham gia
7/6/11
Bài viết
317
Được thích
48
Em nhờ các anh, chị trên GPE viết giúp em code vba để lấy nội lực từ file Access dán vào file Excel!!
Các câu hỏi của em ở file đính kèm, mong các anh chị giúp đỡ em
xin chân thành cảm ơn nhiều!!!
 
Em nhờ các anh, chị trên GPE viết giúp em code vba để lấy nội lực từ file Access dán vào file Excel!!
Các câu hỏi của em ở file đính kèm, mong các anh chị giúp đỡ em
xin chân thành cảm ơn nhiều!!!
Trong bảng [Frame Section Assignments] làm gì có trường B và H hả bạn, hay là nó được tạo mối quan hệ đến bản nào?
 
Upvote 0
Dạ cột B và H các anh không cần phải quan tâm, nó chỉ để làm mẩu thôi ạ!!
nhờ các anh giúp giùm em cái phần chính nhe!!
thanks các anh nhiều!!!
 
Upvote 0
Dạ cột B và H các anh không cần phải quan tâm, nó chỉ để làm mẩu thôi ạ!!
nhờ các anh giúp giùm em cái phần chính nhe!!
thanks các anh nhiều!!!
Dùng thử ADO nhé, cái này hình như tôi có thấy là anh HLMT làm cho bạn rồi = phương pháp khác, trường H và B được tách số ra từ trường DesignSect

Mã:
Private Sub CommandButton1_Click()
Dim cnn As Object, lrs As Object, mySQL As String, strFile As Variant
Set cnn = CreateObject("ADODB.Connection")
Set lrs = CreateObject("ADODB.Recordset")
strFile = Application.GetOpenFilename()
    If strFile <> False Then
            cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                             "Data Source=" & strFile
             
            mySQL = "SELECT Frame, Station, OutputCase, P, V2, V3, M2, M3 " & _
                            "FROM [Element Forces - Frames]"
            lrs.Open mySQL, cnn, 3, 1
            With Sheet1
               .[A4:H65000].ClearContents
               .[A4].CopyFromRecordset lrs
            End With
        lrs.Close
             mySQL = "SELECT Frame, DesignSect, val(MID(DesignSect,2,2)) , val(right(DesignSect,2)) " & _
                            "FROM [Frame Section Assignments]"


            lrs.Open mySQL, cnn, 3, 1
            With Sheet1
               .[K4:N65000].ClearContents
               .[K4].CopyFromRecordset lrs
            End With
        lrs.Close
    End If
Set lrs = Nothing
cnn.Close: Set cnn = Nothing


End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Anh Chàng Ngốc ơi!!!
tại sao nó chỉ xuất ra 2 tiết diện tính dầu vào cuối z?sao mình ko lấy hết tiết diện của phần tử luôn?? "tại cột Station"
sao tên 2 phần tử cột và dầm xuất hiện z,chỉ lấy phần tử dầm or cột ko được hok??
mong Anh Chàng Ngốc và các bạn gíup đỡ!!!!
 
Upvote 0
Anh Chàng Ngốc ơi!!!
tại sao nó chỉ xuất ra 2 tiết diện tính dầu vào cuối z?sao mình ko lấy hết tiết diện của phần tử luôn?? "tại cột Station"
sao tên 2 phần tử cột và dầm xuất hiện z,chỉ lấy phần tử dầm or cột ko được hok??
mong Anh Chàng Ngốc và các bạn gíup đỡ!!!!
Dữ liệu của bạn bao nhiêu thì nó lấy hết bấy nhiêu rồi mà. Lấy theo các cột bạn yêu cầu rồi còn gì.
 
Upvote 0
thank nhiều nha!!!
nhưng còn tên 2 phần tử cột và dầm xuất hiện z,chỉ lấy phần tử dầm or cột ko được hok??
Z nếu mình chỉ lấy nội lực dầm của file Access thì kết quả chỉ cho số liệu của phần tử dầm thôi còn phần tử cột thì ko lấy được ko bạn!!hi
 
Upvote 0
thank nhiều nha!!!
nhưng còn tên 2 phần tử cột và dầm xuất hiện z,chỉ lấy phần tử dầm or cột ko được hok??
Z nếu mình chỉ lấy nội lực dầm của file Access thì kết quả chỉ cho số liệu của phần tử dầm thôi còn phần tử cột thì ko lấy được ko bạn!!hi
Thì bạn thêm Where vào là được.

Mã:
Private Sub CommandButton1_Click()
Dim cnn As Object, lrs As Object, mySQL As String, strFile As Variant
Set cnn = CreateObject("ADODB.Connection")
Set lrs = CreateObject("ADODB.Recordset")
strFile = Application.GetOpenFilename()
    If strFile <> False Then
            cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                             "Data Source=" & strFile
             
            mySQL = "SELECT Frame, Station, OutputCase, P, V2, V3, M2, M3 " & _
                            "FROM [Element Forces - Frames] " & _
[COLOR=#ff0000][B]                            "Where left(Frame,1) like 'C'"[/B][/COLOR]
            lrs.Open mySQL, cnn, 3, 1
            With Sheet1
               .[A4:H65000].ClearContents
               .[A4].CopyFromRecordset lrs
            End With
        lrs.Close
             mySQL = "SELECT Frame, DesignSect, val(MID(DesignSect,2,2)) , val(right(DesignSect,2)) " & _
                            "FROM [Frame Section Assignments] " & _
[B][COLOR=#ff0000]                            "Where left(Frame,1) like 'C'"[/COLOR][/B]
            lrs.Open mySQL, cnn, 3, 1
            With Sheet1
               .[K4:N65000].ClearContents
               .[K4].CopyFromRecordset lrs
            End With
        lrs.Close
    End If
Set lrs = Nothing
cnn.Close: Set cnn = Nothing


End Sub
 
Upvote 0
thank very much!!!!
Chúc anh nhiều sức khỏe!diễn dàn ngày 1 thành công!!!
 
Upvote 0
cho em hỏi trên đọn code trên thì

If strFile <> False Then cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & strFile
có ý nghĩ gì vậy mấy anh?
 
Upvote 0
cho em hỏi trên đọn code trên thì

If strFile <> False Then cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & strFile
có ý nghĩ gì vậy mấy anh?
Theo đoạn code trên thì khi dòng Application.GetOpenFileName() được kích hoạt thì nó sẽ yêu cầu chọn file. Và khi chọn file thì biến strFile sẽ mang giá trị khác False, khi đó sẽ tiến hành mở ADO.
 
Upvote 0
Web KT
Back
Top Bottom