使用SQL插入到空的Excel表中,而不会丢失数据types属性

我正在运行SOM VBA代码与SQL插入到另一个工作表。 我的问题是,当我使用INSERT INTO语句,我失去了空表中的数据types属性。

这是我正在运行的代码:

 Sub InsertTest() Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset Dim fromFile As String fromFile = "C:\some\file.xlsx" Dim cnStr As String cnStr = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & fromFile & ";" & _ "Extended Properties=Excel 12.0" Dim query As String query = "INSERT INTO [TableTwo$](lastname, age) SELECT lastname, age FROM [TableOne$]" rs.Open query, cnStr, adOpenUnspecified, adLockUnspecified End Sub 

表一是从哪里得到我的数据:

在这里输入图像说明

表二是我插入数据的地方,下面是代码执行后的样子:

在这里输入图像说明

我注意到如果TableTwo填充了正确数据types的数据, INSERT INTO语句也插入了正确数据types的数据。 我不知道是谁擅长这个或者如果是ADODB。 你知道吗?

我试图改变TableTwo的模式。 我也试过了CAST()CONVERT()函数,但是我不能让它工作:(

我知道我可以很容易地通过一些简单的VBA代码来修复数据types,但是在我的脑海里,这打破了使用SQL的一些目的。 我真的很讨厌用VBA迭代我的表和表,因为在我的经验中,它比SQL慢得多。

我注意到的另一件事是,当我使用SQL时,公式行中的数据在单词的开头有一个引号(如'')。 但它不在细胞中。 为什么这样做?

提前致谢!