VBA による SQL クエリの実行

VBA による SQL クエリの実行

私はここには初めてですが、Excel で問題が発生するたびにこの Web サイトをいつもチェックしており、これまでは常に助けていただいています。現在、VBA で問題が発生しています。マクロを通じて SQL クエリを「呼び出し」たいので、基本的にはクエリからのデータをコピーしてアクティブ シートに貼り付けます。

このウェブサイトで見つけた次のクエリを試してみました (自分で質問する前に多くのスレッドをチェックしたので、どのスレッドだったかはわかりません)。

Sub sql()
'Initializes variables
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim ConnectionString As String
Dim StrQuery As String

'Setup the connection string for accessing MS SQL database
   'Make sure to change:
       '1: PASSWORD
       '2: USERNAME
       '3: REMOTE_IP_ADDRESS
       '4: DATABASE
    ConnectionString = connString = "Driver={"mydriver"};Server="myserver";Database="mydatabase";UID="Myuserid";PWD="mypwd";Port=PortNum;SSL=true;Sslmode=Require"

    'Opens connection to the database
    cnn.Open ConnectionString
    'Timeout error in seconds for executing the entire query; this will run for 15 minutes before VBA timesout, but your database might timeout before this value
    cnn.CommandTimeout = 900

    'This is your actual MS SQL query that you need to run; you should check this query first using a more robust SQL editor (such as HeidiSQL) to ensure your query is valid
    StrQuery = "Select * from YYY.XXXX where date >='2020-03-01'"

    'Performs the actual query
    rst.Open StrQuery, cnn
    'Dumps all the results from the StrQuery into cell A2 of the first sheet in the active workbook
    Sheets(1).Range("A2").CopyFromRecordset rst
End Sub

次のようなエラーが発生します: ランタイムエラー

エラーをグーグルで検索してみたところ、system32 にサーバーがあるはずだということがわかりました。「コンピューターの管理」で確認しましたが、そこには SQL に関連するものはありませんでした。

何か提案はありますか?

同じ問題に関する別のスレッドがある場合は事前にお詫び申し上げますが、これまでのところ解決策は見つかりませんでした。

編集: テーブル、ユーザー ID、パスワードはオンラインで共有できない機密データなので含めませんでした。ただし、問題はドライバー、サーバー、データベースにあります。そこに何を入力すればよいかわかりません。また、クエリの URL (jdbc:...) はどこに入力すればよいですか?

私は通常、SQL ワークベンチを使用してデータを取得し、毎週ワークシートにコピーして貼り付けます。マクロで代わりに実行したいのは、このことです。編集前にすべてを正しく説明していなかった場合は申し訳ありません。

関連情報