获取“[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]'微软'附近的语法不正确。

时间:2010-03-26 06:50:30

标签: sql-server excel vba

我收到错误,“[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]”Microsoft“附近的语法不正确。

以下是代码:

Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim stSQL As String




Public Sub loadData()
 'This was set up using Microsoft  ActiveX Data Components version 6.0.



 'Create ADODB connection object, open connection and 
 '       construct the connection string object which is the DSN name.
 Set conn = New ADODB.Connection
 conn.ConnectionString = "sql_server"

conn.Open
'conn.Execute (strSQL)

On Error GoTo ErrorHandler

'Open Excel and run query to export data to SQL Server.
strSQL = "SELECT * INTO SalesOrders " & _
         "FROM OPENDATASOURCE(Microsoft.ACE.OLEDB.12.0;" & _
         "Data Source=C:\Workbook.xlsx;" & _
         "Extended Properties=Excel 12.0; [Sales Orders])"

conn.Execute (strSQL)

'Error handling.
ErrorExit:
 'Reclaim memory from the cntection objects
 Set rst = Nothing
 Set conn = Nothing

Exit Sub

ErrorHandler:
   MsgBox Err.Description, vbCritical
   Resume ErrorExit


'clean up and reclaim memory resources.
conn.Close
If CBool(cnt.State And adStateOpen) Then
Set rst = Nothing
Set conn = Nothing

End If

End Sub

2 个答案:

答案 0 :(得分:0)

尝试以下语法

xls

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[FilePath];Extended Properties=”Excel 8.0;HDR=YES;IMEX=1”

XLSX

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=[FilePath];Extended Properties=Excel 12.0 Xml;HDR=YES;IMEX=1

HDR = Yes指定数据的第一行包含列名而不包含数据,因此相应地设置它(是,否)

IMEX = 1指定驱动程序应始终将“混合”数据列读作文本

参考:http://weblogs.asp.net/rajbk/archive/2009/05/02/uploading-an-excel-file-to-sql-through-an-asp-net-webform.aspx

答案 1 :(得分:0)

传递给OPENDATASOURCE的provider参数是一个字符串,因此必须引用。 您还在OPENDATASOURCE电话中寻找表格,这是不正确的;

     strSQL = "SELECT * INTO SalesOrders " & _
       "FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0'," & _
       "'Data Source=C:\Workbook.xlsx;" & _
       "Extended Properties=Excel 12.0')...[Sales Orders]"