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



vb编码实现合并sheet,并能按某列去除重复行


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


vb编码实现合并sheet,并能按某列去除重复行
发表于:2007-04-13 22:05:39 楼主
要实现的功能:两个excel文件中sheet的列结构完全相同,以某列为主键,把sheet2的数据插到sheet1中,要保证主键唯一

我现在有两个方案:
1.   把sheet2的所有数据拷贝粘贴到sheet1的后面,然后删除主键重复的行
2.   在sheet2中先按sheet1的主键进行筛选,把sheet1中不存在的行过滤出来,然后再把这些行拷贝粘贴过去

现在拷贝粘贴的方法我已经会弄了,但是遇到了以下技术问题:
1.   删除重复行,如果用vb代码遍历实现的话,首先需要排序,我先用录制宏的办法找到了vba中的sort方法,但该方法移植到vb中就不好用了,然后即使排了序,在遍历的话,速度也会很慢
2.   筛选功能也没搞出来,我还是用vba录制宏的方法,找到了advancedfilter方法,但该方法也不能移植到vb中,不知道怎么回事。总是报1004错误,advancedfilter方法无效,调用方法如下
xlsheet.range( "a1:a10 ").advancedfilter   xlfilterinplace,   ,   ,   true
发表于:2007-04-14 10:40:441楼 得分:0
最好把excel文件导入数据库,这样查询、排序、删除都很方便快捷
发表于:2007-04-14 18:58:492楼 得分:0
我这个东西是帮朋友做,还要他装个数据库,可能不太好。
发表于:2007-04-14 19:00:463楼 得分:0
所以我用vb6做,就不用c#了,要不他还得装个.net   framework
发表于:2007-04-15 16:15:074楼 得分:0
经过实验我已经搞定问题了,呵呵
原来在vba中使用的参数宏定义,在vb中是不能用的
xlfilterinplace的值为1,所以这个方法调用写成这样就可以用了,搞了我好几天
xlsheet.range( "a1:a10 ").advancedfilter   action:=1,   unique:=true
发表于:2007-04-16 09:36:355楼 得分:0
恭喜楼主
没帮上忙   帮顶
发表于:2007-04-16 09:43:006楼 得分:0
mark


快速检索

最新资讯
热门点击