我用VB写一个小程序查找一指定目录下的EXCEL工作表(目录中有近两千个表),但在运行一段时间后(不同机器有点不同),会出现EXCEL停止响应。(每打开一个工作薄后我都关上了),不知各位写过类似程序的有没有什么好的建议?

解决方案 »

  1.   

    用jet连接,不要直接创建excel.application这样很慢的哦!
      

  2.   

    wkbook.Close 
    xlapp.Quit
    set wkbook=nothing
    Set xlapp = Nothing
      

  3.   

    据说这里有VBA的培训:http://training.yesky.com/topic/topic_vba.htm
      

  4.   

    henrryzhang(North Wolf):
    我这样做了,回家后用我的XP+office2000好象没什么问题!
     VisualSW(程序员和钳工是一个工种):
    Jet连接是怎么连的,什么地方有资料?
      

  5.   

    就是把excel文件当作一个数据库,这样快很多的啊!
      

  6.   

    Dim adoCon As New ADODB.Connection
    Dim rec As New ADODB.Recordset
    adoCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;" & _
                                    "Data Source=D:\1.xls" & _
                                    ";Extended Properties='Excel 8.0;HDR=Yes'"rec.Open "select * from [ImportTable$]", adoCon, adOpenKeyset, adLockOptimisticFor i = 0 To rec.RecordCount - 1
        arrtmp(i) = Trim$(rec.Fields.Item(0).Value)
        rec.MoveNext
    Next i
      

  7.   

    上面的方法读取很快,但是有几个小小的问题:
    1。这样读取,Jet默认将第一行作为表的字段,所以如果
    excel中第一行含有相同的value,那么这样读出来之后,
    相同的字段后面的会自动加上1来区分。
    2。某些特殊的字符读取出来之后会被替换,
    比如~,!等,具体的你去试一下就知道了。
      

  8.   

    To:
     VisualSW(程序员和钳工是一个工种) 
    这样是好,但能在指定位置插入一行吗?
    用AddNew加在最后了!
      

  9.   

    这个不大好控制,
    因为这个是专门要来模拟成数据库的,
    如果不是把第一行当为字段的话,
    就还是用创建excel对象吧!