AWS RDS(MySQL)不会通过VBA将所有列内容输出到Excel

AWS RDS(MySQL)不会通过VBA将所有列内容输出到Excel,mysql,excel,vba,amazon-rds,Mysql,Excel,Vba,Amazon Rds,我有一个使用MySQL的AWS RDS实例。该登录名具有完全管理员权限 我正在尝试执行SELECT*fromtable并使用VBA将表格的所有内容输出到Excel工作表中。这还是一种新的,所以我从基础开始 我正在使用下面的代码块: Sub test() Dim Server_Name As String, DB_Name As String, User_ID As String, User_Pass As String Dim Rs As Variant, Cn As Variant Dim s

我有一个使用MySQL的AWS RDS实例。该登录名具有完全管理员权限

我正在尝试执行
SELECT*fromtable
并使用VBA将表格的所有内容输出到Excel工作表中。这还是一种新的,所以我从基础开始

我正在使用下面的代码块:

Sub test()
Dim Server_Name As String, DB_Name As String, User_ID As String, User_Pass As String
Dim Rs As Variant, Cn As Variant
Dim sqlStr As String
Dim includeField As Boolean
Dim tgtCell As Range
Dim col As Long


Server_Name = "arachnophobia.blabla.rds.amazonaws.com"
DB_Name = "Spidey"
User_ID = "Peter"
User_Pass = "Parker"

sqlStr = "SELECT * FROM crime"

Set Cn = CreateObject("ADODB.Connection")
Cn.Open "Driver={MySQL ODBC 8.0 Unicode Driver};" & _
                ";Server=" & Server_Name & _
                ";Database=" & DB_Name & _
                ";Uid=" & User_ID & _
                ";Pwd=" & User_Pass

Set Rs = CreateObject("ADODB.Recordset")
Set Rs = Cn.Execute(sqlStr)

Set tgtCell = Sheets("Main").Range("A1")
includeField = True
If includeField Then
    tgtCell.Offset(1, 0).CopyFromRecordset Rs
    For col = 0 To Rs.Fields.Count - 1
        Sheets(tgtCell.Parent.Name).Cells(1, col + 1).Value = Rs.Fields(col).Name
    Next
Else
    tgtCell.CopyFromRecordset Rs
End If

End Sub
犯罪
表由4列组成:

|S/N (PK) |DateID    |CrimeID    |Reason    |
|1        |01/02/19  |32155      |Fun       |
|2        |03/02/19  |32255      |Bored     |
|3        |06/02/19  |32555      |Meh       |
|4        |07/02/19  |32755      |Duh       |
|5        |09/02/19  |32855      |Null      |
我执行了上述代码,Excel表上的输出为:

|S/N (PK) |DateID    |CrimeID    |Reason    |
|1        |          |           |          |
|2        |          |           |          |
|3        |          |           |          |
|4        |          |           |          |
|5        |          |           |          |
基本上,我只获取字段名和主键值,而不获取任何其他内容

我试着在本地服务器上运行相同的代码,效果很好

代码中是否有我没有考虑到的导致所有列信息丢失的因素

更新:

我做了更多的测试
tgtCell.CopyFromRecordset Rs
生成上述输出。但是,如果我尝试使用以下命令循环记录集:

xlrow = 1
Do While Not Rs.EOF
    xlcol = 1
    For col = 1 To Rs.Fields.Count
        tgtCell.Offset(xlrow, xlcol - 1).Value = Rs(col - 1).Value
        xlcol = xlcol + 1
    Next
    Rs.movenext
    xlrow = xlrow + 1
Loop

我将以我想要的输出结束。我不太明白为什么会这样?我是否缺少某种库引用?

如果删除以下代码会发生什么

For col = 0 To Rs.Fields.Count - 1
    Sheets(tgtCell.Parent.Name).Cells(1, col + 1).Value = Rs.Fields(col).Name
Next

对我来说,您的行
tgtCell.Offset(1,0).CopyFromRecordset Rs
应该直接复制数据,所以我想知道您的后续代码是否覆盖/清除了数据。

谢谢您的输入。我已经删除了建议的代码块,但仍然不起作用:(我做了更多的测试,并在问题中进行了更新:)