Exécuter des requêtes SQL sur des feuilles Excel sans plages de codage en dur
Dans Microsoft Excel, l'exécution de requêtes SQL sur les données des tableaux d'un classeur est souvent une méthode idéale pour une récupération et une manipulation efficaces des données. Cependant, le codage en dur de l'adresse de plage dans la requête limite sa flexibilité et son applicabilité. Cet article aborde les défis rencontrés par les utilisateurs cherchant à utiliser des requêtes SQL sur des plages nommées dynamiques ou des noms de tables Excel.
Le code VBA suivant montre comment obtenir dynamiquement une adresse de plage et la fusionner dans une instruction 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>
Ce code permet aux utilisateurs de définir des plages nommées dynamiques ou d'utiliser des noms de tables Excel et d'exécuter des requêtes SQL sans codage en dur. De plus, cela élimine le besoin de connaître le nom de la table où réside la table ou la plage nommée. En utilisant cette approche, les développeurs VBA peuvent offrir aux utilisateurs d'Excel une plus grande flexibilité et des capacités de récupération de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!