简体   繁体   English

从ms访问表如何使用vba将所需的数据表单数组(getrows)粘贴到excel特定范围

[英]From ms access table how to paste required data form array (getrows) to excel specific ranges using vba

My below code shows no error, when run, but I don't know how to extract required/particular field values into my excel sheet. 我的下面的代码在运行时没有显示错误,但是我不知道如何将必需的/特定的字段值提取到我的Excel工作表中。

Sub getdatafromaccesstoanarray()

    Dim cn      As Object   'Connection
    Dim rs      As Object   'Recordset
    Dim vAry()  As Variant  'Variant Array
    Dim dbPath  As String   'Database Path
    Dim dbName  As String   'Database Name
    Dim txt     As String

    Set cn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")

    dbPath = ThisWorkbook.Path & "\"
    dbName = "NewDB.accdb"

    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
            "Data Source=" & dbPath & dbName & ";"

    rs.Open "SELECT * FROM BILLDETAILS WHERE BILLDETAILS.SN_AUTO =100;", cn

    vAry = rs.GetRows()

    'now when the data is copied to my array how can i paste specific values from this data to
    'cells in my excel sheet
    'like
    'on active sheet
    '[a1] = vAry(value1)
    '[a2] = vAry(value3)
    '[a3] = vAry(value8)

    'and other values like wise


    rs.Close
    cn.Close

    Set rs = Nothing
    Set cn = Nothing
End Sub

If there any other way to do this then please let me know. 如果还有其他方法可以解决,请告诉我。 Thanks! 谢谢!

If you just want to copy the recordset into the sheet you can use the CopyFromRecordset method to dump the table into the sheet by specifying the top left corner: 如果仅要将记录集复制到工作表中,则可以使用CopyFromRecordset方法通过指定左上角将表转储到工作表中:

 Range("a1").copyfromrecordset rs

If you want to put specific fields in specific positions you can loop 如果要将特定字段放在特定位置,可以循环

Do While not rs.eof
   range("a2")=rs(0)
   range("b2")=rs(1)
    'etc....
  rs.movenext
Loop

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM