. : : ClassiClub ForuM : : .

会员中心 论坛帮助 日历事件 标记论坛已读
返回   精品技术论坛 » 技术论坛 » 『软件使用』

『软件使用』: 电脑软件推荐, 电脑软件使用, 经验分享



发表新主题 关闭主题
 
主题工具
wxh5
 
wxh5 的头像
终极会员
 
资 料:
注册日期: Jul 2004
帖子: 13,405 声望值: 1
精华: 0,解答: 29
#1 旧 2012-11-14, 15:18:00 默认 【求助】excel中vba命令把当前表中的数据另存到新文件中
wxh5 当前离线  

花了一天时间,把平常一些固定的工作做成vba了,真的很省事。

现在在最后一项碰到难题,如标题。

附excel文件:

想把test文件中sheet1的内容(A-G项固定,长度不定,说不定有10条,说不定有20条)复制到新xls表中,在新xls表头附上标题,标题的代码我写好了,很简单:
代码:
    '生成2.xls
    Set wb = Workbooks.Add
    wb.Sheets(1).Cells(1, 1) = "序号"
    wb.Sheets(1).Cells(1, 2) = "名称"
    wb.Sheets(1).Cells(1, 3) = "规格"
    wb.Sheets(1).Cells(1, 4) = "单位"
    wb.Sheets(1).Cells(1, 5) = "单价"
    wb.Sheets(1).Cells(1, 6) = "数量"
    wb.Sheets(1).Cells(1, 7) = "类型"
    'wb.SaveAs 2
    wb.SaveAs ThisWorkbook.Path & "\2.xls"
现在要在中间加入一些代码,把test中sheet1表中内容复制到2.xls里A2开头,一直复制到空白行为止(空白行不需要)
上传的附件
文件类型: rar test.rar (9.3 KB, 4 次查看)


感谢ccf
lee1892
 
lee1892 的头像
荣誉版主
 
资 料:
注册日期: Sep 2001
帖子: 1,572 声望值: 14
精华: 4,解答: 10
#2 旧 2012-11-14, 15:31:14 默认
lee1892 当前离线  

你在原来那个表里,第一行插入表头内容,另存一下不就完事了...
自己录制宏看看吧


行行复行行...人生路漫长...
wxh5
 
wxh5 的头像
终极会员
 
资 料:
注册日期: Jul 2004
帖子: 13,405 声望值: 1
精华: 0,解答: 29
#3 旧 2012-11-14, 15:35:30 默认
wxh5 当前离线  

另存的话,里面有很多表,我要拿了2.xls(就是新生成的表)做导入用

而且自己录制宏的话,如何确定到数据底了?
panmona
 
panmona 的头像
核心会员
 
资 料:
注册日期: Jan 2002
帖子: 3,538 声望值: 3
精华: 0,解答: 7
#4 旧 2012-11-14, 16:08:45 默认
panmona 当前离线  

代码:
    Set wb = Workbooks.Add
    wb.Sheets(1).Cells(1, 1) = "序号"
    wb.Sheets(1).Cells(1, 2) = "名称"
    wb.Sheets(1).Cells(1, 3) = "规格"
    wb.Sheets(1).Cells(1, 4) = "单位"
    wb.Sheets(1).Cells(1, 5) = "单价"
    wb.Sheets(1).Cells(1, 6) = "数量"
    wb.Sheets(1).Cells(1, 7) = "类型"
    
    i = 1
    While Len(Sheet1.Cells(i, 1)) > 0
        For j = 1 To 7
        wb.Sheets(1).Cells(i + 1, j) = Sheet1.Cells(i, j)
        Next
        i = i + 1
    Wend
    'wb.SaveAs 2
    wb.SaveAs ThisWorkbook.Path & "\2.xls"


Hello world!
wxh5
 
wxh5 的头像
终极会员
 
资 料:
注册日期: Jul 2004
帖子: 13,405 声望值: 1
精华: 0,解答: 29
#5 旧 2012-11-14, 16:42:55 默认
wxh5 当前离线  

回楼上的兄弟,大致能用了,但真奇怪,我把这个工式弄到我自己的表中,却是在复制另外一个sheet的东西。
原表的顺序是sheet1--1--2--3--4--sheet3
然后在sheet1上生成数据透视表sheet2
现在想把sheet2上的这些数据,就是1楼test中的东西,弄到2.xls文件中。
用楼上的代码,发现是把1这个sheet的内容复制到2.xls了。
lee1892
 
lee1892 的头像
荣誉版主
 
资 料:
注册日期: Sep 2001
帖子: 1,572 声望值: 14
精华: 4,解答: 10
#6 旧 2012-11-15, 08:46:38 默认
lee1892 当前离线  

引用:
作者: wxh5 查看帖子
回楼上的兄弟,大致能用了,但真奇怪,我把这个工式弄到我自己的表中,却是在复制另外一个sheet的东西。原表的顺序是sheet1--1--2--3--4--sheet3然后在sheet1上生成数据透视表sheet2现在想把sheet2上的这些数据,就是1楼test中的东西,弄到2.xls文件中。用楼上的代码,发现是把1这......
4楼的代码是复制当前激活的工作簿中的内容。
再有就是,Sheet1.Cells() 和 Sheets(1).Cells() 和 Sheets("Sheet1").Cells() 三者不等价。

话说你把要完成的事详细点描述一下吧,VBA干这点事不比你复制粘贴快多少,也没看出来你是要批量处理的。

另外,用VBA复制数据切忌一个一个单元格的提取、赋值,效率很低的,应该用数组一次读取一次赋值。

比如:
PHP 代码:
Dim arr
With Workbooks
("Test.xls").Sheets("Sheet1")
    
arr = .Range("A1:G" & .[a65536].End(xlUp).Row)
End With
wb
.Sheet1.Range("A2").Resize(UBound(arr1), UBound(arr2)) = arr 

此帖于 2012-11-15 08:58:22 被 lee1892 编辑. .
wxh5
 
wxh5 的头像
终极会员
 
资 料:
注册日期: Jul 2004
帖子: 13,405 声望值: 1
精华: 0,解答: 29
#7 旧 2012-11-15, 09:13:38 默认
wxh5 当前离线  

多谢楼上的版主

主要是省事,因为前面一连串的活,tset.xls已经是最后一部得到的数据了,现在想另存到一个新文件中,就这样完了。也不追求快,只是少点几下鼠标的活。

用了你的代码,现在提示:
错误438
对象不支持该属性或方法
lee1892
 
lee1892 的头像
荣誉版主
 
资 料:
注册日期: Sep 2001
帖子: 1,572 声望值: 14
精华: 4,解答: 10
#8 旧 2012-11-15, 10:30:31 默认
lee1892 当前离线  

引用:
作者: wxh5 查看帖子
多谢楼上的版主

主要是省事,因为前面一连串的活,tset.xls已经是最后一部得到的数据了,现在想另存到一个新文件中,就这样完了。也不追求快,只是少点几下鼠标的活。

用了你的代码,现在提示:
错误438
对象不支持该属性或方法
错在哪行呢?代码是不是看懂了呢?学着调试一下呀...

===================
楼主好好看看我前面一帖的写法

Sheet1
Sheets(1)
Sheets("Sheet1")

此帖于 2012-11-15 11:12:27 被 lee1892 编辑. .
panmona
 
panmona 的头像
核心会员
 
资 料:
注册日期: Jan 2002
帖子: 3,538 声望值: 3
精华: 0,解答: 7
#9 旧 2012-11-17, 20:13:26 默认
panmona 当前离线  

楼主问题解决没?
如果用我的代码,把我加的那些代码里面的sheet1换成sheet2就行了.
用版主的那个更高效率,也需要把这么干.

实在不行,把真实的文件pm我.我帮你debug一下.
发表新主题 关闭主题

主题工具

论坛规则  发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子
论坛启用 vB 代码
版面启用 表情符号
版面启用 [IMG] 代码
版面禁用 HTML 代码


所有时间均为北京时间, 现在的时间是 10:37:20.

本论坛带宽由迅通网络提供
SSL证书由TrustAsia提供

Copyright © 2000 - 2019 ClassiClub Forum All Rights Reserved.
粤ICP备09123456号