问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

使用Excel VBA,如何将某一个工作表保存到新建的Excel中?

发布网友 发布时间:2022-04-23 04:46

我来回答

2个回答

热心网友 时间:2022-04-20 10:32

1、如下图所示,我想将桌面上第一章中的每个工作簿名称放置到工作表中。

2、新建一个工作簿,将其命名为“第一章目录”,按alt+f11组合键,打开宏界面。

3、在VBA中,单击插入按钮,点击插入菜单下的模块,即可新建模块,系统默认为模块1,当然也可以根据需要重命名。

4、使用do~~loop循环语句,在VBA中输入如下图所示代码:

5、返回名为“第一章目录”的工作簿中,按alt+f8组合键,弹出宏对话框。

6、点击宏对话框中的执行按钮,宏对话框自动关闭,代码自动执行,即第一章中的每个文件夹名称全部显示在工作表sheet1中。最后根据自己的需要调整格式。

热心网友 时间:2022-04-20 11:50

代码如下:
Sub 分开存为工作薄()

Dim Sh As Worksheet
Dim Wk1 As Workbook
Dim Wk2 As Workbook
Dim iPath As String

Application.ScreenUpdating = False ‘将屏幕更新关闭
Application.DisplayAlerts = False

iPath = ThisWorkbook.Path & "\" '保存路径为当前工作簿所在路径
Set Wk1 = Workbooks.Add
Set Wk2 = Workbooks.Add
Wk1.SaveAs iPath & "部门" & ".xls"
Wk2.SaveAs iPath & "基层" & ".xls"
'将工作表分别复制到部门或基层工作薄中
For Each Sh In ThisWorkbook.Worksheets
With Sh
If .Name Like "*部门*" Then
.Copy before:=Workbooks("部门").Worksheets("sheet1")
ElseIf .Name Like "*基层*" Then
.Copy before:=Workbooks("基层").Worksheets("sheet1")
Else
MsgBox "工作表" & .Name & "不含有部门或基层"
End If
End With
Next
'删除新建工作薄时默认新建的工作表
For Each Sh In Wk1.Worksheets
With Sh
If .Name Like "*Sheet*" Then
.Delete
End If
End With
Next
For Each Sh In Wk2.Worksheets
With Sh
If .Name Like "*Sheet*" Then
.Delete
End If
End With
Next
'保存部门和基层工作薄
Wk1.Save
Wk2.Save
Wk1.Close
Wk2.Close
Set Wk1 = Nothing
Set Wk2 = Nothing
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
其中Application.DisplayAlerts、 Application.ScreenUpdating 语句把过程中的无必要的警告都删除了,像在删除多余的工作表时会提示“数据可能在你要删除的工作表中,请问是否要删除”等等的警告,在写程序的过程中可以写不加人,有利于了解工程是怎么运作的,但是最后还是加上这两句比较好,否则用户使用时太多的警告信息感觉不是很好。
.Copy before:=Workbooks("基层").Worksheets("sheet1")
此句是拷贝sheet到新的xls里,由于使用了with语句,前面的workbook的信息省略了,但是有copy before与copy after注意选择,具体区别自己也不是很清楚。Workbooks("基层").Worksheets("sheet1")拷贝到基层.xls的sheet1里,但是看到下面删除sheet时并没有把此表分别开,会不会出错?
以下是我自己的程序:
Set sht = newbk.Worksheets(1) '删除新建的newbk里的两个sheet,必须留一个,否则会出错
sht.Delete
Set sht = newbk.Worksheets(1)
sht.Delete
oldbk.Worksheets(sSheetName).Copy After:=newbk.Worksheets(1) '拷贝
Set sht = newbk.Worksheets(1) ’删除一个工作表,会删错么?
sht.Delete
newbk.Worksheets(1).Name = sSheetName
newbk.Save
拷贝处选用的是Worksheets(1),本想用Worksheets(sSheetName),但是系统出错,应该是新xls中没有此sheet,只有默认的1、2、3,所以出错。
对删除工作表的操作表示疑问,因为怕删错,Worksheets(1)是选择当前最前端的窗口,此程序测试正确,那么应该是新生成的没有作为active?
===============================================
所以拷贝时有3个问题:
1、copy before 与copy after的区别?
2、copy后新的名称是什么?
3、copy后的表是不是最前端的?

从网上看到的,可以对第一个问题很好的解释:
Sheets("mainREPORT").Copy Before:=Sheets(4)
after:是将表mainreport创建拷贝到‘4’表的后面
before:是将表mainreport创建拷贝到‘4’表的前面
是一个位置的问题
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
中国水利水电科学研究院水环境研究所机构简介 水利部中国科学院水工程生态研究所科研成果 水土保持与生态环境研究中心简介 中科院水保所考研科目 中国科学院水利部水土保持研究所研究所概况 音频服务未运行怎么办(win7音频服务未运行怎么办) apex英雄客户端未运行反作弊系统EAC报错怎么办 ...好几个喷嚏和流鼻涕,下午就会好一点,冬天特别严重... ...流鼻涕,打喷嚏等。近一个月,晚上睡觉鼻塞严重,无法正常入睡,会大 ... 每天都会连续打喷嚏,右鼻孔经常鼻塞,经常会流鼻涕,流出来是清水状态,这... 求一个excel 新建多个表格的宏,要求该表格名称用Sheet1中列A中所有单元格命名。 在excel中如何录制一个建表格的宏 “新建表格为sheet3 然后在把他的名字改掉的”宏 excel里面创建的宏,如何在新建的工作表里面使用? 求一段Excel的vba宏指令,功能是随机筛选并创建新的sheet 利用EXCEL的宏新建工作簿,再将原工作簿中的一页内容复制到新建的工作簿中 EXCEL 自动新建sheet excel 宏 自动新建工作表 EXCEL中,如何使用宏,新建一个Sheet ,然后重命名为自己想要的名字,如abc? Excel 新建工作表的宏怎样编写 excel:如何用快捷键增加sheet4、sheet5、、、 excel用宏建立工作表 excel用宏怎么写新建工作表 求excel宏 新建sheet,然后将当前sheet的内容复制的新建sheet excel怎么使用宏新建一个工作表? 包子的面怎么整 包子做好了需放冰箱里,请间是面醒过再冷冻还是马上冷冻? 包子面醒过头了,蒸的面硬而且有酸味,怎么处理 包子,面发好了,在和面,和完了搓小剂子在醒,完了在包,在醒,上锅还用在醒吗,还是放锅里在醒啊? 做包子待揉好。面醒好后要不要再加点面粉现再揉一下 做包子是先醒好面,还是先做好包子再发酵?为什么醒好后的面会粘手? 期货多单和空单的区别 空单和多单是什么意思? 原油期货里面的空单和多单是什么意思? 期货实物交割是,空单有什么义务,多单什么义务 期货理论上讲多单和空单应该是一样的为什么不一样 期货空单与多单的问题 期货开空单是什么意思 期货中,多单必须等于空单,如果多单少的话,多余出来的空单其不虾米了,出不去了吗? 期货交易中 卖出空单 和 买入多单 有何不同?? 排卵试纸一样深的时候是不是强阳? 商品期货中,如果要开多单,是否一定有相同手数的空单才能成交? 在期货软件中怎么可以看到空单与多单的持仓多少? 排卵试纸两道杠代表什么? 同一个期货合约可以同时持有多单和空单吗 今天是安全期怎么排卵试纸测出来2条红线,是强阳吗? 股指期货交易时,咋么会空单持仓与多单持仓不一样多呢?而且听说,机构做... 关于期货仓位的问题:我手里持有1手空单 现在我买入该商品2手多单,结果是不是我持有一手多单? 排卵试纸出现两条杠,是强阳了吗? 排卵试纸两条线一样红是排卵了吗,可以同房不 国内公募基金行业发展情况是怎样的?