VBA将许多变量连接成字符串

Posted

技术标签:

【中文标题】VBA将许多变量连接成字符串【英文标题】:VBA Concatenate many variables into string 【发布时间】:2013-07-22 17:40:39 【问题描述】:

我通过将许多变量连接成 SQL 字符串然后在 ADO 中执行该字符串,在 VBA 中做一个相对混乱的 SQL 字符串。

下面是一些代码示例:

Sql = "insert into mydb.dbo.table values ('" & var1 & "','" & var2 & "','" & double1 & "," & double2 & "," & double3 & ")"

我不想复制整个代码,因为坦率地说,对 27 个变量执行此操作可能会让某人感到厌烦至死。无论如何,我对 SQL 中的 27 个值重复上述代码(SQL 表显然有 27 列)。然而,在这样的 21 次连接之后,字符串不再连接。

字符串字符的总长度是 208,所以它肯定不能是 VBA 最大值 252。是否有最大数量的连接值可以输入到 VBA 字符串?我可以使用其他方法来实现这个目标吗?

非常感谢

【问题讨论】:

Bobby Tables 不谈,在我看来,使用 SQL 中的导入而不是通过 VBA 导出更容易实现这个目标。 ***.com/questions/3474137/… link1, link2, link3 - 这应该足够了 - 我花了不到 2 分钟的时间找到了链接。 复制整个代码以便可以识别问题,并请清楚您所说的“不进一步连接”是什么意思。 【参考方案1】:

VBA 中字符串的最大大小为 65536 个字符...取决于应用程序版本,但在单行中您不能写这么多字符。在 VBA 的情况下,单行最多可以有 1021 个字符。 所以打破你的代码行。例如

sql = "Insert into....................."
sql = sql & "rest of the query"

【讨论】:

char 长度总共只有 208,所以以上都不重要,我也尝试分成单独的行并事件两个单独的字符串,然后使用也不起作用的字符串。【参考方案2】:

我不确定您所说的“不再连接”是什么意思,但我通常将数组用于笨重的字符串。

Dim aSql(1 to 27) As String

aSql(1) = "'" & var1 & "'"
aSql(2) = "'" & var2 & "'"
aSql(3) = double1
aSql(4) = double2
...

adCmd.Execute "INSERT INTO mydb.dbo.table VALUES (" & Join(aSql,",") & ");"

【讨论】:

这不适用于所有语言,例如在德语中,双打写成“5,33”而不是“5.33”,逗号将 f-up SQL 命令,只是说... 认为这是迄今为止最好的答案,虽然还没有实现它。我会告诉你的。【参考方案3】:

我没有找到答案。我能够将 SQL 表重构为更好的设计,但问题仍然存在于将多个变量连接到一个字符串中。

【讨论】:

以上是关于VBA将许多变量连接成字符串的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL VBA 里面如何动态获取字符串转换为变量名?

Excel vba 将数字转换成字符串的函数是哪个

VBA 连接数据库,查询中的变量如何赋值

vba中怎么将变量的值变为字符串

VBA 如何将一列字符转成日期

Excel vba 将数字转换成字符串的函数是哪个