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

如题所述

代码如下:
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’表的前面
是一个位置的问题
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-05-29

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

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

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

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

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

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

本回答被网友采纳
第2个回答  2018-03-10

学习电脑的几个主要方法

1:电脑对初学者,老师引进门很重要,但以后就要靠自学。自学能力对于计算机学习尤为重要,原因就是计算机发展奇快,掌握了自学方法,具备了自学能力,才能应付计算机日新月异的发展形势。有人说,"自学,谈何容易!"我说别的学科自学可能较难,而计算机却相对容易一些。为什么这样说呢?因为计算机越来越"平易近人",让人能够看得见、摸得着。能够让人动的东西就好学,比如几岁的娃娃就敢去开电视机和调台,能够去控制VCD等,难道电视机和VCD机不是高科技产品吗?计算机作为学习对象,理论知识和实践环境是统一的,学习内容和进度自己可以掌握,自学当中有弄不懂的东西,大多可以通过上机加以解决。因此,我说它易于自学、便于自学。当然,有一本便于自学的指导书就更好了。

第3个回答  2018-02-13
代码如下:
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’表的前面
是一个位置的问题

excel中如何将用vba把表一的信息录入表二
1、可以先利用宏录制来自动生成代码,然后再进行修改。操作方法如下:第一步,打开一个excel应用,新建一个白空表格,并录入数据。2、第二步,点击excel应用程序窗口状态栏中左侧的“宏录制”按钮。3、第三步,然后在表1中,选中左上角第一个有数据的单元格。4、第四步,接着按下CTRL+SHIFT键,再...

使用Excel VBA,如何将某一个工作表保存到新建的Excel中?
Path&"\\"'保存路径为当前工作簿所在路径\\x0d\\x0aSetWk1=Workbooks.Add\\x0d\\x0aSetWk2=Workbooks.Add\\x0d\\x0aWk1.SaveAsiPath&"部门"&".xls"\\x0d\\x0aWk2.SaveAsiPath&"基层"&".xls"\\x0d\\x0a'将工作表分别复制到部门或基层工作薄中\\x0d\\x0aForEachShInThisWorkbook.Worksheets\\...

使用Excel VBA,如何将某一个工作表保存到新建的Excel中
1、如下图所示,我想将桌面上第一章中的每个工作簿名称放置到工作表中。2、新建一个工作簿,将其命名为“第一章目录”,按alt+f11组合键,打开宏界面。3、在VBA中,单击插入按钮,点击插入菜单下的模块,即可新建模块,系统默认为模块1,当然也可以根据需要重命名。4、使用do~~loop循环语句,在VBA...

请教如何利用VBA实现将一个工作表复制到另一个工作簿中
在VBA编辑器中,编写以下代码来创建一个名为"复制表"的宏:SubCopySheet()DimMyBook1AsWorkbookSetMyBook1=Workbooks.Open("C:\\Users\\Administrator\\Desktop\\工作表1.xls")'选择需要移动的工作表Sheets("移动表").Activate'复制该工作表Sheets("移动表").CopyDestination:=Workbooks("工作表2.xls")....

在VBA中怎么把一个excel工作表或工作傅保存到其它表中?
我的思路是:利用VBA文件操作打开Excel文件,然后读取你文件模板中特定位置的数据,保存到当前表中,然后可以当前表一行存储一个Excel文件。比如:源表中A1、B2、B5、C3是数据内容。可以依此保存到当前文件中的A1~D1。然后A2~D2保存另一个同样格式文件的数据。当然,如果你想完全用二进制保存应该也可以...

在EXCEL中如何用VBA另存工作铺中的其中一中文名工作表,另存为新路径...
Set new_Book = Workbooks.Add ' 新建一个EXCEL文件 ThisWorkbook.Sheets("指定工作表").Copy before:=new_Book.Sheets(1) ' 将“指定工作表”复制到新文件中 new_Book.Activate ' 切换到新文件 Cells.Select ' 全选单元格 Selection.Copy ' 复制并选择性粘贴为数值,去除公式 Select...

vba如何copy一个sheet 并paste到一个新建的sheet
1、在电脑上打开软件创建一个项目,并添加poi的jar包。2、将一个excel表格的sheet复制到另一个excel表格中,需要先获得原excel表格和新excel表格存放的路径。3、可以看到一下将原excel表格的sheet复制到新创建excel表格的方法。4、运行项目,在控制台可以看到已经读取原excel表格sheet的内容了。5、在电脑...

将excel中数据保存至另一个excel中用vba
将excel中数据保存至另一个excel中用vba,可以这样:1、插入一个ActiveX控件中的按钮,双击添加如下代码:Private Sub CommandButton1_Click()ThisWorkbook.SaveAs Filename:="C:\\Users\\Administrator\\Desktop\\Book1.xlsx"End Sub "C:\\Users\\Administrator\\Desktop\\“是要存的路径,我放的是桌面 book1....

如何用VBA将EXCEL的一个SHEET移动到另一个EXCEL里?
Sub myMove()i = Sheets.Count Workbooks.Open Filename:="带路径的EXCEL工作簿名.xls"Sheets("工作表名").Select Sheets("工作表名").Move After:=Workbooks("当前打开的EXCEL工作簿名.xls").Sheets(i)End Sub

vba将一个excel的数据复制到另一个excel中vba把一个表格内容复制到另外...
Public Sub Copy()Range(\\"A1:C10\\").Select '复制的区域,自行修改 Selection.Copy '复制 Workbooks(2).Activate'激活第二个BOOK Range(\\"A1\\").Select'区域,自行修改 ActiveSheet.Paste'粘贴 End Sub

相似回答