复制范围从Excel到SQL而不使用For循环?

我想从我的Excel工作表复制一个范围(它可以是一个列,如Set DataRange = ValidSheet.Range("C22:C81")或多个列,如Set DataRange = ValidSheet.Range("C22:F81") )到SQL -表。

然而,在互联网上的一些例子build议使用DataRange(i)作为一个aray,然后使用For i = 1 to 59循环来复制每个单元格的单元格,如:

 For i = 1 to 59 SQL = "INSERT INTO Table_test (Column1) VALUES (" & DataRange(i) & ")" Next 

有没有直接的方法来复制整个范围一次,而不使用循环?

我会build议使用一个循环 – 但改变策略 – 因为INSERT语句要比Excels内部逻辑更encryption集,可能会减慢。

因此,我倾向于创build一个包含所有值的循环 – 一个接一个,例如:

 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 

这将创build一个大的丑string的所有值,但不会花很长时间 – 当然这个数量的线。

但是,如果你做的不止是几千个,你可以创build一个范围的临时文本文件,并使用“LOAD FROM FILE”导入 – 这比这些单独的操作符要快得多。