我有一个包含 192 个工作表的工作簿,这些工作表对应于我们的 mssql 数据库中的 192 个表。如果我在数据连接向导中设置了一个给定的表,所有数据都会正确地转储到工作表中。但是,当我在下面运行我的代码时,我得到:
运行时错误“214767259 (80004005)”自动化错误未指定错误
大约一半的表格填充得很好。我注意到,一旦到达具有大量数据(rtf 文本)的字段,我就会收到错误消息。具有该文本的字段对我来说并不重要,因此如果 excel 可以将这些字段留空并继续,我会很高兴。该大字段位于不同的列(有时是多个列)中,具体取决于每个表,因此必须遍历所有 192 个表以清除单个列而不导入是很耗时的。
为什么我在vba中运行时出现这个错误,但是数据连接向导没有问题?
Sub GetData()
Dim cnDump As ADODB.Connection
Set cnDump = New ADODB.Connection
' Provide the connection string.
Dim strConn As String
'Use the SQL Server OLE DB Provider.
strConn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=XXXX;Data Source=XXXX\XXXX;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=XXXX;Use Encryption for Data=False;Tag with column collation when possible=False;"
'Now open the connection.
cnDump.Open strConn
' GET DATA
Dim ws As Worksheet
Dim tbl_name As String
Dim rsDump As ADODB.Recordset
Set rsDump = New ADODB.Recordset
For Each ws In Worksheets
tbl_name = ws.Name
ws.Rows.ClearContents
With rsDump
.ActiveConnection = cnDump
.Open "SELECT * FROM " & tbl_name
For i = 1 To .Fields.Count
ws.Cells(1, i) = .Fields(i - 1).Name
Next i
ws.Range("A2").CopyFromRecordset rsDump
End With
ws.Rows(1).Font.Bold = True
Next ws
cnDump.Close
Set rsDump = Nothing
Set cnDump = Nothing
End Sub