私は以下のvbaコードUsing Excel VBA to run SQL queryを使用しています(このリンクではアップリンクの答えが私が使用した方法です)。これにより、Excelセルに値を入力することができます。 SQLの結果は別の列にダンプされます。ExcelテーブルとSQLテーブルとをクロスリファレンスするには
しかし、今私が問題にしているのは、excelカラム(単一のセルだけではない)内の複数のセルに対してこれを実行し、うまくいけばsqlの別のカラム(vlookupなど)のステータスを提供したいということです。
私は100万レコード以上のSQLのステータス列からステータスを確認する必要がある約20000行のデータを持っています。
私はStrQueryで'" & Range("A3") & "'"
の代わりにテーブルを使用できるのかどうかは、リンクされたメソッドを使用して1つずつ実行できません。これをclaifyする
は、私が使用していますものです:
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim ConnectionString As String
Dim StrQuery As String
ConnectionString = "Provider=SQLOLEDB.1;Password=PASSWORD;Persist Security Info=True;User ID=USERNAME;Data Source=REMOTE_IP_ADDRESS;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=DATABASE"
cnn.Open ConnectionString
cnn.CommandTimeout = 900
StrQuery = "SELECT StatusColumn FROM Status WHERE Contact = " & Range("A2") & "'"
'Performs the actual query
rst.Open StrQuery, cnn
Sheets(1).Range("B2").CopyFromRecordset rst
End Sub
私はA2から私のSQLクエリの範囲を変更することができれば、私は範囲に思っていた:AまたはA2:A20000及びBにダンプ: BまたはB2:B20000ですが、これは機能しません。
編集:私はこれを再度実行することで半成功しましたが、範囲が1増加したが、スペースが足りなくなったので、ループの助けとなりましたか?
は、私は現在ない、あなたの答えをありがとうアドホック分散クエリ権限が有効になっている場合は、これがない別のルートがありますか? – Adam128
100万件以上のレコードがあるため、SQL ServerテーブルをMS Accessデータベースにインポートし、AccessとExcelの間でクエリを実行したり、ExcelワークシートをインポートしてAccess内でクエリを実行したりします。または、SQL ServerでExcelワークシートをインポートし、そこからクエリを実行します。 – Parfait
また、Accessデータベースを使用するためにMSAccess.exe(GUI Officeソフトウェア)は必要ありません。 Windows PCにはJET/ACEエンジン(.dllファイル)がインストールされています。 Excel VBAからデータベースを作成できます。 [here](https://stackoverflow.com/a/34259616/1422451)を参照してください。 – Parfait