mssqlデータベースの192個のテーブルに対応する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