excel - 如果数据库名称是从用户那里获取的,则将数据从数据库复制到 Excel?

标签 excel vba

我正在制作一些宏并从用户那里获取日期和数据库。在此基础上我从数据库获取数据。

这是我的代码,请查看并分享您对此有任何解决方案。

    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Function GetConnectionString() As String
    Dim strCn As String
    strCn = "Provider=sqloledb;"
    strCn = strCn & "Data Source=" & Range("Server") & ";"
    strCn = strCn & "Initial Catalog=" & Range("Database") & ";"
    If (Range("UserID") <> "") Then
    strCn = strCn & "User ID=" & Range("UserID") & ";"
    strCn = strCn & "password=" & Range("Pass")
    Else
       strCn = strCn & "Integrated Security = SSPI"
    End If
        GetConnectionString = strCn
    End Function
      Sub Test()
       ActiveWorkbook.Sheets("Sheet1").Activate
    Dim ws As Worksheet
    Dim Sql As String
    Dim d As String
    d = Range("A2").Value
    d = Format(d, "yyyy-mm-dd")
    cn.ConnectionTimeout = 100
    cn.Open GetConnectionString()
    Sql = "select * from config where convert(date,logdate,103)='"& d &"'"
    ExecInsert (Sql)
    Set rs.ActiveConnection = cn
    rs.Open Sql
    ActiveWorkbook.Sheets("Sheet2").Activate
    Dim ws1 As Worksheet
    Range("A2").CopyFromRecordset (rs) 'This is where I'm getting error
    cn.Close

End Sub

Sub ExecInsert(selectquery As String)
'End Sub

    Dim cmd As New ADODB.Command
    cmd.CommandText = selectquery
    cmd.CommandType = adCmdText
    cmd.ActiveConnection = cn
    cmd.Execute

End Sub

Range("A2").CopyFromRecordset (rs) 这是我收到错误的地方

run type error '430' class does not support automation or does not support expected interface

我有所有的dll并且也注册了它们。我的最后甚至没有遗漏任何引用资料。

如果有人遇到这个问题,请帮忙...

最佳答案

请更新以下行

来自

 Range("A2").CopyFromRecordset (rs)

范围(“A2”).CopyFromRecordset rs

下面是示例代码

Sub sub_success()
    Dim rsContacts As ADODB.Recordset
    Set rsContacts = New ADODB.Recordset

    With rsContacts
        .Fields.Append "ContactID", adInteger
    End With

    rsContacts.Open
    rsContacts.AddNew
    rsContacts!ContactID = 2123456
    rsContacts.Update

    Sheet1.Range("A2").CopyFromRecordset rsContacts
End Sub


Sub sub_failure()
    Dim rsContacts As ADODB.Recordset
    Set rsContacts = New ADODB.Recordset

    With rsContacts
        .Fields.Append "ContactID", adInteger
    End With

    rsContacts.Open
    rsContacts.AddNew
    rsContacts!ContactID = 2123456
    rsContacts.Update

    Sheet1.Range("A2").CopyFromRecordset (rsContacts)
End Sub

关于excel - 如果数据库名称是从用户那里获取的,则将数据从数据库复制到 Excel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16028544/

相关文章:

按月计算销售额的Excel公式

vba - 测试字符串是否为空

excel - 单元格中的所有文本都使用相同的字体吗?

Excel 'If' 公式如何检查值是否小于 x 但大于 y?

.net - 用自定义 VBA 类包装 .Net ArrayList 获取迭代器

ms-access - 运行时错误6溢出

c - LPARAM 作为指向 VBA 变量的指针

ms-access - 将变量从子窗体传递到主窗体

c# - 使用 Worksheet.Range.Autofilter(Field,Criteria,Operator) 按特定颜色索引/RGB 过滤范围

vba - 我可以将数组写入某个范围并仅重新计算更改的单元格吗?