SQL 2008 サーバーを使用しています。サーバーには、データ型が varchar(MAX) の列を持つテーブルがあります。ADO を使用して、このテーブルの特定の列を Excel 2010 にインポートしようとしています。私が使用しているコードの例を次に示します。
Dim con As Object
Set con = CreateObject("ADODB.Connection")
cmd.CommandText = "SELECT dbo.(Table Name).Name From dbo.(Table)"
cmd.CommandType = 1
con.open
cmd.ActiveConnection = con
Dim rst as Object
set rst = cmd.Execute
ActiveSheet.cells(targetRange.Row, targetRange.Column).CopyFromRecordset rst
コードは正常に実行されますが、列 Name が varchar(MAX) に設定されているため、ワークシートに名前が表示されません。これは、SQL サーバーのコピーを作成し、列のデータ型を varchar(1024) に変更したため、正常に動作するためです。
また、レコードセットのデータを手動でスプレッドシートに配置しようとしましたが、うまくいきませんでした。問題は、実際の SQL サーバーを変更できないことです。
Select ステートメントに追加できるコマンド、または varchar(MAX) を Excel で使用できるデータ型に変換するために使用できるキャストはありますか、それともデータが変換されないようにするために他にできることはありますか?読み込んだときにnull?
私はこの問題を1日調査しており、いくつかのスレッドが近づいていますが、SQLサーバーでselectを使用して、この場合は機能しないキャスト、または他のプログラムで使用することについて話していますが、役に立ちません.