在VBA中格式化SQL

我正在使用VBA打开ODBC连接并检索数据。 我有一些SQL查询,填充我所需要的:

SELECT tbl.a AS test1 tbl.b AS test2 tbl.c AS test3 FROM db.tbl AS tbl INNER JOIN db.more AS more ON more.a = tbl.a 

有没有办法,我可以在VBA中input这个查询,所以它保留其结构,看起来可读? 我做到了这一点:

 Dim sql AS string sql = "" sql = sql & "SELECT" sql = sql & " tbl.a AS test1" sql = sql & " tbl.b AS test2" sql = sql & " tbl.c AS test3" sql = sql & "FROM" sql = sql & " db.tbl AS tbl" sql = sql & "INNER JOIN db.more AS more" sql = sql & " ON more.a = tbl.a" 

这对我来说并不好看,如果我能够pipe理的话,这是我能做的最好的。 我只是想看看有没有更好的办法。

这只是偏好,但也许这个?

 sql = "SELECT" + _ " tbl.a AS test1" + _ " tbl.b AS test2" + _ " tbl.c AS test3" + _ "FROM" + _ " db.tbl AS tbl" + _ "INNER JOIN db.more AS more" + _ " ON more.a = tbl.a" 

另一个select是将SQLinput到工作表中的单元格中,然后隐藏该工作表,然后在VBA中使用:

 sql = Worksheet("NameOfHiddenWorkSheet").Range("A1").Value 

在我的需要,我通常命名工作表为设置和命名范围(范围名称)

那么你可以这样称呼它:

 sql = Sheets("Settings").Range("Sql").Value 

这有帮助吗?

 Sub test() Dim sql As String sql = "SELECT " & _ "tbl.a AS test1 " & _ "tbl.b AS test2 " & _ "tbl.c AS test3 " & _ "FROM " & _ "db.tbl AS tbl" & _ "INNER JOIN db.more AS more" & _ "ON more.a = tbl.a" End Sub