Set xlbook22 = xlapp22.Workbooks.Open(yuan_wenjian & jiancha_name_1 & "评估数据模板.XLSX")
Set jianche_XlsSheet22 = xlbook22.Worksheets(1)
jianche_MaxWidth = jianche_XlsSheet22.Range("IV" & 2).End(xlToLeft).Column 'End(xlToLeft).Column 是第一行的最后列数的代码。应该为不算第一列一共多少列
jianche_hang = jianche_XlsSheet22.Range("G65536").End(xlUp).Row '查A列的上下限界,从列的开始往下查,
Set Conn = CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & access_wenjian_path
Set rs = CreateObject("ADODB.Recordset")
MaxWidth = jianche_MaxWidth
hang = jianche_hang
Sql = "create table " & "评估数据" & " ("
FieldLine = 1
InsertSql = ""
For j = 1 To MaxWidth '开始导入字段名这一行
If (j >= 2 And j <= 6) Or (j >= 9 And j <= 15) Or (28 <= j And j <= 40) Or (j >= 42 And j <= 46) Then '
Sql = Sql & jianche_XlsSheet22.Cells(FieldLine, j) & " varchar(255)," '设置此字段为字符串即文本型 (长整型直接用int即可??)
Else
Sql = Sql & jianche_XlsSheet22.Cells(FieldLine, j) & " double," '设置此字段数据类型为double型
End If
InsertSql = InsertSql & jianche_XlsSheet22.Cells(FieldLine, j) & ","
Next j
Sql = Left(Sql, Len(Sql) - 1) 'remove last char
InsertSql = Left(InsertSql, Len(InsertSql) - 1)
Sql = Sql & ")"
Conn.Execute Sql
For j = 2 To hang '这个地方的2或者是3代表的是从第几行开始为数据部分。
valstr = ""
For k = 1 To MaxWidth
valstr = valstr & "'" & jianche_XlsSheet22.Cells(j, k) & "',"
Next k
valstr = Left(valstr, Len(valstr) - 1)
Conn.Execute "insert into " & "评估数据" & " (" & InsertSql & ") values (" & valstr & ")"
Next j
Conn.Close
Set rs = Nothing
Set Conn = Nothing
问题已经解决,在此记录一下。首先数据库只是数据的存储的仓库,当打开access文件看到的数据并不是排列好的,想要得到有顺序的数据,只需要在读出的时候有顺序的读出即可。