我想通过一个FIND方法来定位EXCEL里面的数据,然后把相关的数据录入到ACCESS里面中间用ADO来做数据库的操作
但用FIND方法时缺遇到了问题,本来在EXCEL的VBA已经能够成功运行的语句,复制到VB里面缺出现类型匹配的问题??请教请教Dim ExcelAP     As New Excel.Application
  Dim ExcelWBk     As New Excel.Workbook
  Dim ExcelWS     As New Excel.Worksheet
Set ExcelWBk = ExcelAP.Workbooks.Open(ExPath) ’EXPATH是个外界传入的参数
 Set ExcelWS = ExcelWBk.Sheets(1)
Dim d As Excel.Range  ‘这句诗我后来加进去的,但还是不行,在VBA环境中,没有这句的
   d = ExcelWS.Cells.Range("a1", "d4").Find(What:=j, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False, SearchFormat:=False) 
   If Not d Is Nothing Then
        Form2.Text2 = "1"
        d.Interior.ColorIndex = 38
        rs1.AddNew
        rs1.Fields(1) = CStr(d)
        rs1.Fields(2) = CStr(ExcelWS.Cells(d.Row, d.Column + 1))
        rs1.Update
    Else
    Form2.Text2 = "2"
    End If运行时出错,粗体部分出现问题。。错误:类型不匹配

解决方案 »

  1.   

    改这样:
    Set d = ExcelWS.Cells.Range("a1", "d4").Find
      

  2.   

    可直接用SQL对Excel的表格进行查询
      

  3.   

    直接将整个表导入ACCESS中,然后再对ACCESS数据进行操作,代码如下:
    Dim excel_app As Object 
    Dim excel_sheet As Object 
    Dim db As Database 
    Dim AccessPath As String, AccessTable As String 
    Dim sql As String 
    Dim frm As New frmMessage 
    Dim msg As String 
         
        ADOsdb.BeginTrans 
         
    '    With ADOsdb 
    '        If .State  <> adStateOpen Then 
    '            .CursorLocation = adUseClient 
    '            .ConnectionString = gsOdbcName 
    '            .Open 
    '        End If 
    '    End With 
        With dlgCommonDialog 
            .DialogTitle = "打开" 
            .CancelError = False 
            'ToDo:   设置   common   dialog   控件的标志和属性 
            .Filter = "Excel文件   (*.xls) ¦*.xls" 
            .ShowOpen 
            If Len(.FileName) = 0 Then 
                    Exit Sub 
            End If 
            sfile = .FileName 
        End With 
      
       
      AccessPath = lcspath & "\db.mdb"                                 '数据库路径 
      excelpath = sfile                                                  '电子表格路经 
      AccessTable = "db"                                                 '数据库内表格 
       
      msg = Trim(InputBox("请输入表名,如sheet1或sheet2:", "工作表", "sheet1")) 
    '  msg = Str(msg) 
      sheet = msg                                            '电子表格内工作表 
      Set db = OpenDatabase(excelpath, True, False, "Excel 8.0") '打开电子表格文件 
      sql = ("Select * into [;database=" & AccessPath & "]." & AccessTable & " FROM [" & sheet & "$]") 
    '  sql = ("Select * into [;database=" & AccessPath & "]." & AccessTable & " FROM [" & sheet & "]") 
         
      If sheet = "" Then 
          MsgBox "您选择的EXCEL表不存在,请重新导入!", vbInformation, "抱歉!" 
          Exit Sub 
      End If 
       
      If deltable = 1 Then 
        With ADOsdb 
            .Execute "drop table db", , adCmdText 
        End With 
      End If 
       
      ADOsdb.CommitTrans   db.Execute (sql)                                         '将电子表格导入数据库 
                     
                     
      ShowMessage "正在导入EXCEL表,请您稍等..." 
      Timer1.Enabled = True