vba移动文件_VBA学习笔记8:工作表操作
学习资源:《Excel VBA从入门到进阶》第10集 by蓝色幻想
一、Excel工作表的分类
Excel工作表有两大类,一类是我们平常用的工作表(worksheet),另一类是图表、宏表等。这两类的统称是sheets。
- Sheets("A"),名称为A的excel工作表。
- workbooks(2),按从左到右的排列顺序(包含隐藏工作表),第二个打开的工作簿。
- ActiveSheet ,正在操作的那个就是ActiveSheet。
二、Excel工作表的操作
- 判断A工作表文件是否存在
- 利用for循环和if语句,查找工作表的名称是否为"A"。
- 查到后弹出窗口显示“A工作表存在”(MsgBox "......"),并退出整段程序停止操作(Exit Sub);
- 反之,继续查找直至所有工作表名称被比对完都没找到,并弹出窗口显示“A工作表不存在”。
Sub s1()
Dim X As IntegerFor X = 1 To Sheets.CountIf Sheets(X).Name = "A" ThenMsgBox "A工作表存在"Exit SubEnd If
NextMsgBox "A工作表不存在"
End Sub
2. 工作表的插入Sheets.Add
Sub 新建工作表()
Dim sh As WorksheetSet sh = Sheets.Addsh.Name = "模板"
sh.Range("a1") = 100End Sub
上面的代码是利用工作表变量给工作表赋值新名字,而下面的代码则是利用ActiveSheet的这一概念来给新工作表重命名。
Sub 新建工作表()Sheets.Add
ActiveSheet.Name = "模板"End Sub
3. 工作表隐藏和取消隐藏
是否可视是工作表的一种属性,隐藏就是更改这一属性。
Sub s3()Sheets(2).Visible = False '隐藏第二个工作表,或可写为Sheets(2).Visible = 0
Sheets(2).Visible = True '取消隐藏第二个工作表,或可写为Sheets(2).Visible = -1End Sub
4. 工作表的移动
Sub s4()Sheets("Sheet2").Move before:=Sheets("sheet1") 'sheet2移动到sheet1前面
Sheets("Sheet1").Move after:=Sheets(Sheets.Count) 'sheet1移动到所有工作表的最后面End Sub
Sheets.Count 获取本工作簿工作表的数目
5. 工作表的复制
(1)在本工作簿中复制,原表和复制到的表都在同一个工作簿中。
先来一波不用VBA的正常操作:
Sub s5() '在本工作簿中Sheets("模板").Copy before:=Sheets(1)
ActiveSheet.Name = "1日"
ActiveSheet.Range("a1") = "测试"End Sub
(2)把复制的工作表另存为新工作簿。
相当于在移动或复制工作表时,选择”将选定工作表移至新工作簿“,然后把新工作簿另存为当前工作簿保存的路径下,并命名为”1日“工作簿。
Sub s6() '另存为新工作簿Activesheet.copy '复制工作表
ActiveWorkbook.SaveAs ThisWorkbook.Path & "/1日.xls" '另存为新工作簿
ActiveWorkbook.Close True '关闭工作簿End Sub
6. 保护工作表
完整:表达式.Protect(密码, 形状,内容,方案,保护用户界面)
简洁:表达式.Protect"密码"
Sub s7()Sheets("sheet2").Protect "123"End Sub
判断工作表是否添加了保护密码:
Sub s8() If Sheets("sheet2").ProtectContents = True ThenMsgBox "工作簿保护了"ElseMsgBox "工作簿没有添加保护"End IfEnd Sub
7. 删除工作表
Sub s9()Application.DisplayAlerts = FalseSheets("模板").DeleteApplication.DisplayAlerts = TrueEnd Sub
删除工作表时,EXCEL会弹出警告,可设置关闭该警告。
Application.DisplayAlerts = False
删除完成后记得打开警告,不然以后都不会弹出警告。
8. 工作表的选取
Sub s10()Sheets("sheet2").SelectEnd Sub
三、练习
题目1:
复制“日报表模板”工作表(已隐藏)至本工作簿最后一个位置,复制后的工作表名称为最后的日期天数+1&"报表"的格式。点击“生成日报”按钮就生成一个新的日报表。
如:当前情况下,没有任何一天的日报表,则新复制的工作表名称是“1日报表”,如果再点击添加时就是1+1=2日报表。如果目前已存在5天的日报表,则复制后的工作表名称应为“6日报表”
PS:“日报表模板”工作表要用代码取消隐藏,复制后要隐藏起来。
Sub 日报表格式生成()Dim i As IntegerDim ws As WorksheetSet ws = Sheets("日报表模板")ws.Visible = True'显示"日报表模板"工作表,它是第二个工作表。i = Sheets.Count'数当前工作表的数量。ws.Copy after:=Sheets(Sheets.Count)'复制"日报表模板"工作表,并放在所有工作表的最后。EXCEL会停留在当前工作簿。ActiveSheet.Name = i - 1 & "日报表"'重命名当前工作表ws.Visible = False'隐藏"日报表模板"工作表Sheets(1).Select'回到题目所在工作表
End Sub
题目2:
把所有日报表另存为工作簿到本文夹下,工作簿名称为工作表的名称。
Sub 另存报表()
Dim i As Integer
Dim sh As WorksheetApplication.ScreenUpdating = False'取消屏幕更新,加快代码运行速度For i = 1 To Sheets.CountIf Sheets(i).Name Like "*日报表" Then'如果工作簿名称包含“日报表”,则复制该工作表,并另存为当前工作表到当前工作簿路径下Sheets(i).CopySet sh = ActiveSheetActiveWorkbook.SaveAs ThisWorkbook.Path & "" & sh.Name & ".xls"ActiveWorkbook.Close TrueEnd IfNextApplication.ScreenUpdating = True'恢复屏幕刷新End Sub
经评论蔡花花同学指出:原来写的sh.SaveAs ThisWorkbook.Path & "" & sh.Name & ".xls",修改为ActiveWorkbook.SaveAs ThisWorkbook.Path & "" & sh.Name & ".xls",只有工作簿才能使用saveas.
题目3:
删除所有日报表。
Sub 清除日报表()
Dim i As Integer
Dim sh As WorksheetFor Each sh In SheetsIf sh.Name Like "*日报表" ThenApplication.DisplayAlerts = Falsesh.DeleteApplication.DisplayAlerts = TrueEnd IfNextEnd Sub
vba移动文件_VBA学习笔记8:工作表操作相关推荐
- 陈表达VBA学习笔记-新建工作表鼠标右键菜单按钮
陈表达VBA学习笔记-新建工作表鼠标右键菜单按钮:新建一个我的菜单按钮 设置对应的宏过程名称为 [我的菜单宏] 点击按钮弹窗信息,信息可自定义设置 详细代码如下: Sub 新建右键菜单()Dim 菜单 ...
- Hive学习笔记三之函数操作
文章目录 5 函数 5.1 系统内置函数 5.2 常用内置函数 5.2.1 空字段赋值 5.2.2 CASE WHEN THEN ELSE END(类似于java中的switch case) 5.2. ...
- 从滚动条到画布的几个代码文件——Python学习笔记之十七
从滚动条到画布的几个代码文件--Python学习笔记之十七 这一章的继续学习,比在前的照片涉及代码要轻松一些,代码打完后的预期结果总能实现.特别让人欣慰的一点,文本上的文字理解好像上了一个台阶,不用多 ...
- TI CC1101学习笔记:工作原理简单入门
众所周知,在IOT的市场应用中,从通信协议细分的话,有SUB-1G,2.4G,3G, 4G,以及最新推出的5G,虽然5G通信协议已经在崭露头角,但是不同的通信协议在不同的应用领域之中还是占据着一定的重 ...
- JPA学习笔记---JPA数据的操作:增加,删除,修改,获取,使用JPQL进行查询
JPA学习笔记---JPA数据的操作:增加,删除,修改,获取,使用JPOL进行查询 创梦技术交流平台:资源下载,技术交流,网络赚钱: 交流qq群:1群:248318056 2群:251572072 技 ...
- HTML/CSS学习笔记02【表单标签】
w3cschool菜鸟教程.CHM(腾讯微云):https://share.weiyun.com/c1FaX6ZD HTML/CSS学习笔记01[概念介绍.基本标签.表单标签][day01] HTML ...
- Polyworks脚本开发学习笔记(三)-TREEVIEW进阶操作
Polyworks脚本开发学习笔记(三)-TREEVIEW进阶操作 移动/交换对象的顺序 移动对象的顺序 TREEVIEW FEATURE MOVE ( 1,2 ) 将索引号为1和2的特征交换位置 T ...
- 在php中表单传值怎么用,PHP学习笔记 01 之表单传值
一.HTML传值/PHP接收方法 1.GET(地址栏+问号+数据信息) (1)方式一:表单Form: method = 'get' GET接收数据方式: $_GET['表单元素name对应的值] (2 ...
- C# 学习笔记(19)操作SQL Server下
C# 学习笔记(19)操作SQL Server下 ADO.net操作数据库 这应该是比较老的技术了,以后有空的话学学 Linq /// <summary> /// 数据库使用类 /// & ...
最新文章
- win7 cmd 操作mysql数据库
- vue项目设置img标签的默认图片
- leetcode 105. 从前序与中序遍历序列构造二叉树 c语言递归解法
- linux 系统 权限
- C#实现人脸识别【SqlHelper】
- C++学习之路 | PTA乙级—— 1020 月饼 (25分)(精简)
- 程序员画图工具Draw.io
- angular 字符串转换成数字_3种方法搞定Excel中数字大小写转换? 123...变为壹贰叁......
- “双减”后首份半年报 新东方在线营收亏损双减
- final关键字_夯实基础:Java中final关键字的几种用法
- 数 AI 人物还看今朝!CCAI 2017 人工智能青年论坛即将启航
- python怎么命名未知数_怎样用Python计算含有未知数的方程式-百度经验
- GoogleAdSense高价关键字排行榜
- oracle undo head,一次悬挂事务的处理思路
- 黑暗欺骗恐怖游戏c++代码完整
- java 因数分解_java因数分解实例源码
- 【树】B056_LQ_三角形面积 阅兵方阵 版本分支(递归预处理)
- 鞍点Saddle Point Locator
- require.js的简单使用
- 【MySQL基础知识】查询、过滤数据关键字