假设指定目录"D:\VBA"
在他下边有不定个.xls文件
形式如:
LPB-MDI-MODEL.xls
MEAH-MDI-MODEL.xls
MEAH-MODEL.xls
MEAS-MDI-MODEL.xls
MEAS-MODEL.xls
等,每个文件里的数据形式都是一样的,里边有多条数据,我要取这些文件的固定列里的值(假设A,B,C)列的值,我要按照文件名字进行汇总
例如:LPB-MDI-MODEL.xls 那么我想将 LPB打头的数据放到一个集合里边
特殊情况:MEAH-MODEL.xls,MEAS-MDI-MODEL.xls这两个文件里的数据要合到一起
也就是说,已打头名字为条件汇总,第二位如果是"MDI"这个是固定的,那么要放到一起
返回我所需要的几个集合
这些文件个数是不一定的,小弟接触vb,vba,很多不懂,也想不通,在一个据说vb里边没有hashtable这样的对象,我不知道怎么实现,请大家帮忙,先谢谢过

解决方案 »

  1.   

    对于你的问题点,我有二点要弄清.第一.你统计的数据是怎么样的字段.(比如A列,是否统计A列里面全部的数据.是否能保证所有数据是数值型的.如果不是数值型的,统计结果会有误.) 且,统计后的结果放在什么地方?第二.比如以下二个文件
    MEAS-MDI-MODEL.xls 
    MEAS-MODEL.xls 要统计,是否分别统计相同的列的数据,再将这二个数据相加,算统计的结果.第三.你的特殊清况是否指:只有二个文件.不会有第三个.二个文件的区别就是一个有中段.MDI,一个没有.
      

  2.   

    fvflove你终于出现了,先感谢你上午帮我解决的两个问题
    1,我的统计的数据都是Integer型的,有可能是负数,给我的例子来看貌似没有为空的情况,不过考虑进去更好
       是要统计A列里所有的数据,其实这个文件类似于csv文件,多条记录
    2,对于MEAS-MDI-MODEL.xls 和MEAS-MODEL.xls 其实就是要吧他们当作一个文件来看,只不过是来源不同,所以是两个名字应该把他们统计到一起
    3,特殊情况就是只有两个文件,没有第三个,多出来的那个就是中段有个MDI,MDI是固定,不能有别的
      

  3.   

    能把自己的需求清晰的告诉别人是件很难的事.上传MDB文件 www.access911.net/csdn (请勿使用RAR,最好是mdb)或 加入QQ群 46057031 或 64021637  晚19:00 - 24:00在线.
        [align=center]====  ====
    [/align]
    .
    贴子分数<20:对自已的问题不予重视。
    贴子大量未结:对别人的回答不予尊重。
    .
      

  4.   


    http://download.csdn.net/source/573011
    示例代码已上传至资料.请下载.说明:请将ABC里面的文件解压至D:\ABC 
    如果解压在别的地方,请将book1.Xls里面的代码路径改一下.
    Book1.xls  此文件放在什么地方都可以.当你按了book1.xls按扭后,会统计文件夹中的Excel文件的Sheet1工作本中A列的所有数据的和.
      

  5.   

    运行到:
    vFileInfo(i).File_Cxx = Mid(FileName(i), 1, InStr(1, FileName(i), "-") - 1)
    的时候有错,错误消息
    ---------------------------
    Microsoft Visual Basic
    ---------------------------
    実行時エラー '5':プロシージャの呼び出し、または引数が不正です。
    (过程不正确或者参数有错)
    ---------------------------
    OK   ヘルプ   
    ---------------------------
      

  6.   

    按下面的方式就可以对多个 Excel 文件进行查询。
    至于哪些文件要组合,先用 Dir() 取得全体 .xls 文件名,按你的规则对文件名字符串进行变换就可以了。
    Option ExplicitSub Main()
        Dim cnn As ADODB.Connection
        Dim rst As ADODB.Recordset
        
        Set cnn = New ADODB.Connection
        cnn.Open "Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=D:\VBA\LPB-MDI-MODEL.xls;DefaultDir=D:\VBA;"
        
        Set rst = cnn.Execute("SELECT * FROM [sheet1$]")
        Debug.Print "直接查询 LPB-MDI-MODEL.xls"
        Debug.Print rst.GetString()
        
        Set rst = cnn.Execute("SELECT * FROM [Excel 8.0;Database=D:\VBA\MEAH-MODEL.xls].[sheet1$]")
        Debug.Print "跨文件查询 MEAH-MODEL.xls"
        Debug.Print rst.GetString()
        
        Set rst = cnn.Execute("SELECT * FROM [Excel 8.0;Database=D:\VBA\MEAH-MODEL.xls].[sheet1$] " & _
                              "UNION " & _
                              "SELECT * FROM [Excel 8.0;Database=D:\VBA\MEAS-MDI-MODEL.xls].[sheet1$]")
        Debug.Print "跨文件联合查询 MEAH-MODEL.xls, MEAS-MDI-MODEL.xls"
        Debug.Print rst.GetString()
        
        Set rst = Nothing
        Set cnn = Nothing
    End Sub
      

  7.   

    vFileInfo(i).File_Cxx = Mid(FileName(i), 1, InStr(1, FileName(i), "-") - 1)你的文件名都是以下这种格式的吗?
    一般有二个或三个字段,中间用 "-" 分开?
    如果有文件名不是这种格式,读出的时候,会出问题.
    建议,你将你所有的文件名格式给我看一下.我再进行处理.
    LPB-MDI-MODEL.xls 
      

  8.   

    我是菜鸟,不好意思,看你的代码是直接用sql语句查询excel文件,不过我跑不起来
    我直接吧你的代码放在了一个控件的OCLICK时间下,没好用,能详细的说一下吗,在想问问我如迭代这个结果集对查询的数据进行使用,这个方法真的很好很简单,直接