Private Sub cmdNew_OK_Click()
On Error GoTo PROC_ERRg_Conn.CursorLocation = adUseClient
If g_Conn.State = 0 Then '判断连接有没有建立,state=1就表示已经建立连接
    g_Conn.Open "Provider =SQLOLEDB;DataSource=local;database=bukong;UID=sa;Password=123"
End If
g_Conn.Execute "INSERT INTO check_list SELECT * FROM OPENROWSET('MSDASQL','DRIVER={Microsoft Excel Driver (*.xls)};DBQ=filename','SELECT * FROM [Sheet1$]')"
 
PROC_EXIT:
  Exit Sub
PROC_ERR:
  Call ShowError(Me.Name, "cmdNew_OK_Click", Err.number, Err.Description)
  Resume Next
End Sub
其中运行到红色字段的时候,出现错误“Microsoft jet数据库引擎找不到对象'sheet1$'。请确定对象是否存在,并正确地写出它的名称和路径。”
请问这是什么错误?应该怎么修改?

解决方案 »

  1.   

    EXCEL文件中存在sheet1工作蒪吗
      

  2.   

    语句分开没有效果,EXCEL里面肯定存在SHEET1工作簿
      

  3.   

    DBQ= 后面需要完整的 xls 文件名,例:
    g_Conn.Execute "INSERT INTO check_list SELECT * FROM OPENROWSET('MSDASQL','DRIVER={Microsoft Excel Driver (*.xls)};DBQ=C:\book1.xls','SELECT * FROM [Sheet1$]')" 
      

  4.   

    EXCEL文件中存在sheet1工作蒪吗?
      

  5.   

    filename是自己设的一个变量,经过设断点跟踪,确定其包含包括完整路径的文件名
      

  6.   

    基本概念不清
    g_Conn.Execute "INSERT INTO check_list SELECT * FROM OPENROWSET('MSDASQL','DRIVER={Microsoft Excel Driver (*.xls)};DBQ=“ & _
            filename & "','SELECT * FROM [Sheet1$]')" 
      

  7.   

    试试改成这样
    g_Conn.Execute "INSERT INTO check_list SELECT * FROM OPENROWSET('MSDASQL','DRIVER={Microsoft Excel Driver (*.xls)};DBQ=filename','SELECT * FROM [" & sheet1 & "$]')" 
      

  8.   

    问题解决的关键:
    打开Excel,先"插入"->"名称"->"定义",
    输入一个名称,如:OK,按"添加"按钮,然后指定引用位置,
    最后按"确定",然后存盘.
    注意:1.你可以在一个Excel文件中定义多个名称,当多个表使用            2.此方法不能用于Excel中的Chart等元素
      

  9.   

    g_Conn.Execute "INSERT INTO check_list SELECT * FROM OPENROWSET('MSDASQL','DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & filename & "','SELECT * FROM [Sheet1$]')" 
      

  10.   

    filename既然是变量,怎么能直接写在sql中?
      

  11.   

    我8楼早就指出来了,cuag49 没反应,打算太监了?