我想从Excel工作表到SQL表复制范围(可以是Set DataRange = ValidSheet.Range("C22:C81")
之类的列或Set DataRange = ValidSheet.Range("C22:F81")
之类的几列)。
但是,互联网上的一些示例建议使用DataRange(i)
作为aray,然后使用For i = 1 to 59
循环按单元格复制每个值单元格,如:
For i = 1 to 59
SQL = "INSERT INTO Table_test (Column1) VALUES (" & DataRange(i) & ")"
Next
有没有直接的方法可以在不使用循环的情况下一次复制整个范围?
答案 0 :(得分:3)
我建议使用循环 - 但是改变策略 - 因为INSERT语句比Excel内部逻辑更加密集且可能会变慢。
因此,我倾向于创建一个包含所有值的循环 - 一个接一个,例如:
For i = 1 to 59
if i = 1 then
SQL = "INSERT INTO Table_test (Column1) VALUES (" & DataRange(i) & "),"
elseif i < 59 then
SQL = SQL & " (" & DataRange(i) & "), "
else
SQL = SQL & " (" & DataRange(i) & ")"
End if
Next i
SQL.execute
这将创建一个包含所有值的大丑陋字符串,但不会花费太长时间 - 当然对于这些行数。
如果你的工作量不超过几千,你可以创建一个范围的临时文本文件,并使用&#39; LOAD FROM FILE&#39; - 这比这些个体经营者要快得多。