永发信息网

vba请教高手,新建工作簿并保存的问题。

答案:2  悬赏:60  手机版
解决时间 2021-01-30 22:18
表1数据按表2格式进行分页,要求每分一页新建一个工作簿保存到e盘,名字等于分页后工作表名字。下面代码是在当前工作簿新建工作表,哪位大哥帮忙改下面代码并加上注释,万分谢谢!!
Sub 拆分工作表()
Dim G1&, i&, iR&, R1&, x&, N&
Dim T1$, T2$
Dim arr, arr1()
With Sheets("sheet1")
iR = .Range("A65536").End(xlUp).Row
arr = .Range("A2:D" & iR).Value
End With
i = 2: N = 1: R1 = 1
G1 = Sheets.Count
If G1 > 2 Then MsgBox "你已经执行过了!": End
T1 = Sheets("sheet2").Range("B3")
T2 = Left(T1, Len(T1) - 3) & Right(T1, 3) + i
Sheets("sheet2").Copy after:=Sheets(G1)
With ActiveSheet
.Range("B3") = T2
ActiveSheet.Name = T2
ActiveSheet.TextBox1.Value = .TextBox1.Text + N
End With
For R1 = 1 To UBound(arr)
k = k + arr(R1, 4)
If k <= 50 And x < 40 Then
x = x + 1
ReDim Preserve arr1(0 To 5, 1 To x)
arr1(0, x) = x
arr1(1, x) = arr(R1, 1)
arr1(2, x) = arr(R1, 2)
arr1(3, x) = arr(R1, 3)
arr1(4, x) = arr(R1, 4)
arr1(5, x) = arr1(2, x) * arr1(3, x) * arr1(4, x) / 1000000
h1 = h1 + arr1(4, x)
h2 = h2 + arr1(5, x)
Else
Range("A6").Resize(UBound(arr1, 2), 6) = Application.Transpose(arr1)
Range("E46") = h1
Range("F46") = h2
G1 = G1 + 1: N = N + 1: i = i + 2: x = 0: h1 = 0: h2 = 0: k = 0: R1 = R1 - 1
Erase arr1
Sheets("sheet2").Copy after:=Sheets(G1)
With ActiveSheet
T2 = Left(T1, Len(T1) - 3) & Right(T1, 3) + i
.Range("B3") = T2
ActiveSheet.Name = T2
ActiveSheet.TextBox1.Value = .TextBox1.Text + N
End With
End If
Next R1
With ActiveSheet
.Range("A6").Resize(UBound(arr1, 2), 6) = Application.Transpose(arr1)
.Range("E46") = h1
.Range("F46") = h2
End With
ActiveWorkbook.Save
End Sub
Sub 删除折分表()
Dim x&
If Sheets.Count > 2 Then
For x = Sheets.Count To 3 Step -1
Application.DisplayAlerts = False
Sheets(x).Delete
Application.DisplayAlerts = True
Next x
Else
MsgBox "你还没进行拆分,不能删除!": End
End If
End Sub
最佳答案
问题太多,没时间逐一解释,总结几点:
一、With Sheets("sheet1")……Sheets("sheet2").……工作页名称为"sheet1”"sheet2”的一般都是新建的文件才有,一般编辑过的excel表格不改工作页名的很少,建议指定特定工作页时注意改名,且必需要有你输入名称的工作页。
二、arr = .Range("A2:D" & iR).Value这句明显是错误语句,单元格区域的value值究竟指的是哪个值,一般有一组数值,如何赋值给一个变量ARR。
三、If G1 > 2 Then MsgBox "你已经执行过了!": End这句不能在vba里运行,end出现在这里是结束程序吗,应该用exit sub;一般工作页数超过2都是正常的,你用工作页的数量>2来判断是否拆分过,只能是用具体表格来运行才行了,没有通用性了。
四、上边代码显示对很多excel 表格的数据模型还不了解。
还有很多地方,无法逐一列举。
全部回答
通过记录宏的方式得到下面这个代码。 sub macro1() ' macro1 macro workbooks.add activeworkbook.saveas filename:="c:\users\think\documents\myfile.xlsx", _ fileformat:=xlopenxmlworkbook, createbackup:=false activewindow.close end sub 注:要学习vba编程,这个记录宏功能要好好利用。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
海信空调KFR26-GW/18BP开机外机模块3个指示灯
2015年广西公安警察学院录取分数线是多少?
油桐的意思是什么啊?知道的请说下!
索菲亚衣柜地址有知道的么?有点事想过去
市场调查的类型中,具有工作量小、耗时短、费
骆驼的身体构造。.
东城窗帘地址在什么地方,想过去办事
《世纪三国》和《三国演义》这两本书内容一样
诛仙3仙豆怎么换玉
【牛角挂书】写出下面成语故事的主角:闻鸡起
槌轮的意思是什么啊?知道的请说下!
Win10系统怎么查看补丁是否更新到最新
七彩毛线地址有知道的么?有点事想过去
调教富家女游戏怎么解领带?
东营鑫联东营市东营区西三路28号附近有什么公
推荐资讯
合肥市第五十中学上学后会不会分班?分班一般
老脸的意思是什么啊?知道的请说下!
在Excel 2003中,函数count(1,"3",TRUE)是什
上海正典汽车销售中心地址有知道的么?有点事
如图茎a侧生长生长素在曲线B点以下的浓度范围
修天下电脑(四川路店)地址在什么地方,我要处
广州南站附近有什么可以玩的么?
八方轮胎经销处地址有知道的么?有点事想过去
磨砂皮鞋弄上化学容剂怎么清洗
张根硕有首歌,里面有中文,什么框框心跳的,
having said that 是什么意思?
高数二重积分问题 有图1.图上红线位置,其实我
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?