使用VBA从SQL查询字符串中删除别名



我有一个SQL查询字符串。在这个字符串中有多个不同的数据列,它们都来自同一个表。为了简化起见,这里有一个简短的例子:SELECT 'A'.'B', 'A'.'C', 'A'.'D'其中'A'是别名。我的问题是:有没有一种方法可以使用VBA获取查询字符串,并删除别名'A'的所有实例,只返回数据列'B', 'C', 'D'?请不要完整的代码,我喜欢起点。我喜欢自己填。它有助于学习过程。

  1. 恢复QueryTable下的SQL,如下所示:

恢复SQL:

Range("A1").Select 'Your query worksheet
With Selection.QueryTable
    queryText = .CommandText
End With
  1. 然后将别名替换为LEFTRIGHTINSTRRegExp对象(如果您想学习一些有用且快速使用的RegExp正则表达式)。如果您需要一个正则表达式示例,请在评论中告诉我。如果你想在VBA中学习Regex,我在这里做了一个教程。

  2. 替换查询并刷新QueryTable

替换和刷新查询

Range("A1").Select 'Your query worksheet
With Selection.QueryTable
    .CommandText = queryText
    .Refresh BackgroundQuery:=False
End With

是否直接从表中选择?除非您在查询中执行某个函数,否则直接从表中获取列名。另一种选择是:

选择[A]AS columnName、[B]AS ColumnName2等

最新更新