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

作者&投稿:符芬 (若有异议请与网页底部的电邮联系)
使用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、如下图所示,我想将桌面上第一章中的每个工作簿名称放置到工作表中。
2、新建一个工作簿,将其命名为“第一章目录”,按alt+f11组合键,打开宏界面。

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

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

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

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

代码如下:
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、如下图所示,我想将桌面上第一章中的每个工作簿名称放置到工作表中。

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

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

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

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

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



学习电脑的几个主要方法

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



代码如下:
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’表的前面
是一个位置的问题


定西市18718558524: excel如何用VBA将一个单元格的公式复制到另一单元格 -
载堂丁那: 点击“工具”——“宏”——“录制新宏”,复制单元格——选择性粘贴——公式,停止录制宏.点击“工具”——“宏”——“宏”,就可以看到了.

定西市18718558524: 如何使用VBA代码将EXCEL中一部分区域的单元格进行从小到大排序,并填充在制定的区域内?求详细代码. -
载堂丁那: 因为截图不全,我这里先假设数据区为A1:F9, 填充区为H1:M9 代码如下: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim arr1(1 To 54), arr2(1 To 54) Dim x, y, z As Integer Dim b, c Dim a As Variant z = 1 x = 1 y = 1 c = ...

定西市18718558524: 如何运用VBA将指定路径下的某一文件复制到另一指定路径下 -
载堂丁那: 1、我们需要批量提取新建文件夹里的文件完整路径,打开批量提取文件名的excel文件. 2、单击视图按钮中的查看宏按钮. 3、在弹出的对话框中找到对应操作的宏命令,批量获取文件名,并单击执行. 4、接着会弹出文件选择对话框,我们需要找到对应文件,并单击确定. 5、确定后,即可看到文件的路径已经找到. 6、接着我们需要输入函数将文件路径和文件名合并为完整路径,函数为简单的&文本链接. 7、最后把宏代码分享给大家,需要打开工作簿,然后按快捷键ALT+F11打开宏窗口. 8、然后插入一个模块,并将代码写入.

定西市18718558524: 如何用vba将excel一列值取出来运算然后将结果注入另一列?
载堂丁那: 首先在Sheet1建立一个对照表,第一行是省份,其下是所属各市县.在Sheet2的第二行起实现所需功能.把下面的宏粘贴到对应的工作表(Sheet2)的模块中(按Alt+F11,双击Sheet2,).思路:由于Excel内置函数(我所知的)只能查找一行...

定西市18718558524: EXCEL中如何用VBA将某个单元格填充颜色? -
载堂丁那: 如你的数据在A列,代码如下.sub aa ()for x =1 to range("A65536").end(xlup).row'建立循环 if cells(x,1)=6 then'判断单元格值 cells(x,1).interior.colorIndex = 3'单元格值等于6时,该单元格填充红色 end ifnext xend sub

定西市18718558524: 使用VBA, 如何将一个EXCEL文档中某个区域的内容自动复制到另一个EXCEL文档中指定的某个区域? -
载堂丁那: 这就一句话的事呀,两个工作簿都已经打开的情况下 Sub MyCopy() Workbooks("工作簿1.xls").Sheet1.Range("A1:C50").Copy ThisWorkbook.Sheet2.Range("A1") End Sub 意思就是把工作簿1中工作表sheet1的A1:C50区域复制到当前工作簿sheet2工作表的A1区域(这个区域与前面的区域是一样的,只需要写左上角的单元格即可)

定西市18718558524: excel如何用vba将一系列数据根据某一列数据从高到低排列 -
载堂丁那: vba有个优点,就是可以录制宏 所以楼主的这个排序,完全可以录制一段排序的宏 然后根据录制的结果再进一步处理即可

定西市18718558524: 怎样用VBA读取一个excel表格中的某一列,然后提取出来放到另一个sheet的一行里如何写代码求详细,谢谢 -
载堂丁那: Sheets("sheet1").Range("a1:a30").CopySheets("Sheet2").Select[a5].SelectSelection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _False, Transpose:=True

定西市18718558524: 怎样把一个表里里面的某一列用vba赋值给另一个表里面的某一列
载堂丁那: 你的需要实际可以这样做:打开Excel,菜单点视图-宏-录制宏,然后做一遍你想做的事,再点菜单的“宏”-停止录制宏,按Alt+F11,点击“模块”-“模块1”,你就能看到你想要的代码.整理一下,代码如下:Sub Macro1() Sheets("Sheet2...

定西市18718558524: excel中如何使用vba实现将另一个文件以某单元格内容为文件名保存 -
载堂丁那: savecopyas 是复制,还会保留原先的格式 另存为一下xlsx就好了,FileFormat:=xlOpenXMLWorkbook ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & Range("Q3").Value & ".xlsx", FileFormat:=xlOpenXMLWorkbook

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网