範囲をハードコーディングせずに Excel シートで SQL クエリを実行します
Microsoft Excel では、ワークブック内のテーブルのデータに対して SQL クエリを実行することが、効率的なデータの取得と操作を行うための理想的な方法であることがよくあります。ただし、クエリ内の範囲アドレスをハードコーディングすると、その柔軟性と適用性が制限されます。この記事では、動的名前付き範囲または Excel テーブル名に対して SQL クエリを使用しようとしているユーザーが直面する課題に対処します。
次の VBA コードは、範囲アドレスを動的に取得し、それを SQL ステートメントにマージする方法を示しています。
<code class="language-vba">Sub SQLQueryDynamic() ' 将命名范围地址定义为变量 Dim rngAddress As String ' 将活动命名范围地址转换为单个字符串 rngAddress = ActiveWorkbook.Names.Item("namedRangeName").RefersToLocal ' 使用动态范围地址构造SQL字符串 Dim strSQL As String strSQL = "SELECT * FROM [" & rngAddress & "]" ' 打开ADODB连接和记录集 Dim cn As ADODB.Connection, rs As ADODB.Recordset Set cn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") strFile = ThisWorkbook.FullName strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _ strFile & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";" cn.Open strCon ' 执行SQL查询 rs.Open strSQL, cn ' 打印结果 Debug.Print rs.GetString ' 清理 rs.Close cn.Close End Sub</code>
このコードにより、ユーザーは動的名前付き範囲を定義したり、Excel テーブル名を使用したり、ハードコーディングせずに SQL クエリを実行したりできます。さらに、テーブルまたは名前付き範囲が存在するテーブル名を知る必要がなくなります。このアプローチを使用すると、VBA 開発者は Excel ユーザーに優れた柔軟性とデータ取得機能を提供できます。
以上がハードコーディングせずに動的に名前が付けられた Excel 範囲で SQL クエリを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。