Excel外部データ要求でパラメーターを使用するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/612664

  •  03-07-2019
  •  | 
  •  

質問

Excel(2007)を使用してSQL Server 2005からデータをインポートできます。データ接続を追加し、目的のデータを取得するカスタムSQLクエリを入力します。クール。

しかし、追加したいのは、スプレッドシートの既知のセルで見つかった値に基づいてそのクエリをパラメーター化する機能です。

クエリの送信元

SELECT * FROM dbo.MyDataTable WHERE Col1 = 'apples'

次のようなもの

SELECT * FROM dbo.MyDataTable WHERE Col1 = 'Cell("B2")'

これは可能ですか?もしそうなら、どのように?

役に立ちましたか?

解決

MS Queryを使用している場合データをExcelに取得するには、このページが表示されますワークシートのセルの値をクエリのパラメーターとして使用する方法。

他のヒント

次のようにコードを構造化してみてください:

Dim strSQL as String
Dim strFruit As String

strFruit = CStr(ThisWorkbook.Sheets("Sheet1").Range("A1").FormulaR1C1)

strSQL = "SELECT * FROM dbo.MyDataTable WHERE Col1 = '" & strFruit & "'"

パラメータをSQLクエリにマージする前に、最初に変数にパラメータをロードすると便利であることがわかりました。

SQL文字列を読みやすくし、使用する前にパラメータをチェック/クリーニングできるようにします。

Excel 2007は使用していませんが、以前のバージョンのExcelでは、SQLクエリの統合が本当に嫌いです。特に、多くのVBAコードを一緒にハッキングすることなしに、あなたが尋ねたとおりのことを正確に行うのは難しいと感じました。私はいくつかの調査を行い、最終的にRob Van GelderのExcelクエリアドインを使用することにしました:

http://vangelder.orconhosting.net.nz/excel/queryeditor.html

GUIの「パラメータ」セクションでは、パラメータを設定し、ユーティリティに値の入力を求めるか、セル参照から値を取得させることができます。後者はまさにあなたがやりたいことだと思います。また、セル値が変更されたときに自動更新する機能もあります。 DBのデータを検証するときに、自動更新機能を頻繁に使用します。

クエリが破損し、クエリを開いたりテキストを表示できなくなったりする状況がいくつかありました。そのため、クエリ用にExcelスプレッドシートにタブを保持し、クエリのテキストをその特別なページのセルにコピーすることをお勧めします。そうすれば、クエリツールがクエリを処理する場合、最初からクエリを再構築する必要はありません。

無料ではありますが、サードパーティのツールはあなたが探しているものではないかもしれませんが、私にとってはうまくいきます。がんばろう!

Dim SQLString as String

SQLString = "SELECT * FROM dbo.MyDataTable WHERE Col1 = '" & Cells("B2") & "'"

このアプローチの欠点を確認するには、 SQLインジェクション攻撃をご覧ください。しかし、あなたが何をする必要があるかを必ずしも考慮する必要はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top