您的位置:程序门 -> vb -> vba



如何使用excel vba导入大量文件(*.csv), 同时根据文件命分别将数据导入到不同的sheet中


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如何使用excel vba导入大量文件(*.csv), 同时根据文件命分别将数据导入到不同的sheet中
发表于:2007-11-22 15:19:09 楼主
实在没办法   老板要让我搞个模板    
差不多需求是这样的   使用excel   vba一次导入大量文件   通过文件名进行分类读入到不同的sheet中去   比如含有nat字符的导入到名为   nat的worksheet中   多谢
发表于:2007-11-23 08:40:061楼 得分:0
首先在你仅有的sheet前插入一个空白的新sheet,然后在宏里运行下面代码就可以了      
    假定你最初的sheet是以下格式:第一列是人命,第二列是部门      
    sub       sss()               '仅以       财务           为例,其他的很容易补充      
    sheets("sheet1").copy       after:=sheets(2)       '创建一个新的表格,在你原来有的sheet后面,内容和你开始添加的一样      
    sheets("sheet1       (2)").name       =       "财务"       '把新建的表格命名为:财务      
    k       =       0      
    for       i       =       1       to       4'你原来sheet中的行数      
                if       sheets(2).cells(i,       2)       =       "财务"       then      
                            k       =       k       +       1      
                            sheets("财务").cells(k,       1)       =       sheets(2).cells(i,       1)'       人员名称      
                            sheets("财务").cells(k,       2)       =       sheets(2).cells(i,       2)'部门      
                end       if      
    next       i      
    end       sub
发表于:2007-11-23 15:37:362楼 得分:0
想知道你的csv文件里面的数据是什么类型的,复杂吗,数据多不多。格式是怎样的。
如果方便的话还是考虑用:transferspreadsheet   直接把数据导入到access的表里面。很方便快捷。
详细情况还是考虑你csv文件的数据结构,和大量文件的类别,可以到.mdb里面表添加一个字段,对文件进行分类。
发表于:2007-11-26 16:58:203楼 得分:0
现在可以通过对文件名的判断导入到不同的sheet中去   可是还有一点就是csv文件引入后与原来的文件相比出现格式不一致的问题    
private   sub   summary_click()

    application.screenupdating   =   false
        set   fs   =   application.filesearch
with   fs
        .lookin   =   "d:\"
        .filename   =   "*.csv"
        if   .EXECute(sortby:=msosortbyfilename,   _
        sortorder:=msosortorderascending)   >   0   then
                msgbox   "there   were   "   &   .foundfiles.count   &   _
                        "   file(s)   found."
                for   i   =   1   to   .foundfiles.count
          if   .foundfiles(i)   like   "d:\*aes128-[a-z][a-z][a-z]*.csv"   then
                      msgbox   "aes128"
                      msgbox   .foundfiles(i)
        elseif   .foundfiles(i)   like   "d:\*3des-[a-z][a-z][a-z]*.csv"   then
                      msgbox   "3des"
                      msgbox   .foundfiles(i)
        elseif   .foundfiles(i)   like   "d:\*3des-sha1-[a-z][a-z][a-z]*.csv"   then
                      msgbox   "3des   sha1"
                      msgbox   .foundfiles(i)
                     
        elseif   .foundfiles(i)   like   "d:\*aes128-sha1-[a-z][a-z][a-z]*.csv"   then
                      msgbox   "aes128-sha1"
                      msgbox   .foundfiles(i)
        elseif   .foundfiles(i)   like   "d:\*aes192-sha1-[a-z][a-z][a-z]*.csv"   then
                      msgbox   "aes192-sha1"
                      msgbox   .foundfiles(i)
        elseif   .foundfiles(i)   like   "d:\*aes256-sha1-[a-z][a-z][a-z]*.csv"   then
                      msgbox   "aes256-sha1"
                      msgbox   .foundfiles(i)
        elseif   .foundfiles(i)   like   "d:\*route-[a-z][a-z][a-z]*.csv"   then
                      msgbox   "route"
                      msgbox   .foundfiles(i)
        elseif   .foundfiles(i)   like   "d:\*nat-[a-z][a-z][a-z]*.csv"   then
                      msgbox   "nat"
                      msgbox   .foundfiles(i)
        elseif   .foundfiles(i)   like   "d:\*trans*.csv"   then
                      msgbox   "transparent"
                      msgbox   .foundfiles(i)
        end   if
                next   i
        else
             
                msgbox   "there   were   no   files   found."
        end   if
end   with    


end   sub



快速检索

最新资讯
热门点击