-
2021-12-24 01:16:13
- 工作簿事件
Activate 激活工作薄时 AddinInstall 当工作簿作为加载宏安装时 AddinUninstall 工作簿作为加载宏卸载时 BeforeClose 关闭工作薄前 BeforePrint 打印工作薄(或其中任何内容)之前 BeforeSave 保存工作薄前 Deactivate 工作簿从活动状态转为非活动状态时 NewSheet 在工作簿中新建工作表时 Open 打开工作簿时 PivotTableCloseConnection 在数据透视表关闭与其数据源的连接之后 PivotTableOpenConnection 在数据透视表打开与其数据源的连接之后 SheetActivate 激活任何一张表时 |SheetBeforeDoubleClick 双击任何工作表时 SheetBeforeRightClick 鼠标右键单击任一-工作表时 |SheetCalculate 工作表重新计算时 SheetChange 更改工作表中的单元格时 |SheetDeactivate 任一工作表由活动状态转为非活动状态时 SheetFollowHyperlink 单击MicrosoftExcel中的任意超链接时 |SheetPivotTableUpdate 数据透视表的工作表更新之后 SheetSelectionChange 工作簿中的数据透视表更新之后 WindowActivate 工作簿的窗口激活时 WindowDeactivate 工作簿的窗口变为非活动状态时 WindowResize 工作簿窗口调整大小时
·
- 工作表事件
Activate 激活工作表时 Deactivate 工作表从活动状态转为非活动状态时 BeforeDoubleClick 双击工作表前 BeforeRightClick 右键单击工作表时 Calculate 对工作表进行重新计算之后. Change 更改工作表中的单元格,或外部链接引起单 |FollowHyperlink 单击工作表上的任意超链接时 PivotTableUpdate 在工作簿中的数据透视表更新之后 SelectionChange 工作表上的选定区域发生改变时
更多相关内容 -
VBA关闭工作簿和退出Excel
2013-07-12 10:01:54要用VBA来关闭工作簿,用Workbook.Close 方法即可,而要退出Excel,则用Application.Quit 方法。下面是一些代码示例: 关闭活动工作簿,如果工作簿有更改,提示是否保存: Sub CloseWorkbook() ...要用VBA来关闭工作簿,用Workbook.Close 方法即可,而要退出Excel,则用Application.Quit 方法。下面是一些代码示例:关闭活动工作簿,如果工作簿有更改,提示是否保存:
Sub CloseWorkbook()
ActiveWorkbook.Close
End Sub如果要避免出现提示,可添加“SaveChanges”参数,如直接保存并关闭工作簿:
Sub ClostAndSaveWorkbook()
ActiveWorkbook.Close Savechanges:=True
End Sub将上述代码中的“True”改为“False”,则直接关闭工作簿而不保存。
关闭所有打开的工作簿,并提示是否保存:
Sub CloseAllWorkbooks()
On Error Resume Next
Workbooks.Close
End Sub退出Excel,并提示对有更改的工作簿进行保存:
Sub QuitExcel()
Application.Quit
End Sub保存活动工作簿并退出Excel:
Sub SaveActiveWorkAndQuit()
ActiveWorkbook.Save
Application.Quit
End Sub下面的代码在退出Excel时都不会提示是否保存工作簿。
保存所有打开的工作簿并退出Excel:
Sub SaveAllAndQuit()
For Each wbk In Workbooks
wbk.Save
Next
Application.Quit
End Sub退出Excel,所有的改动都不保存:
Sub QutiAndNoAlerts()
Application.DisplayAlerts = False
Application.Quit
End Sub -
VBA 创建一个工作簿
2021-04-08 09:53:59一、代码 Sub test() Dim wb As Workbook, sht As Worksheet '定义一个... Set wb = Workbooks.Add '新建一个工作簿 Set sht = wb.Worksheets(1) With sht .Name = "另存工资表" '修改第一张工作表的标签名称 .R一、代码
Sub test() Dim wb As Workbook, sht As Worksheet '定义一个Workbook对象和一个Worksheet对象 Set wb = Workbooks.Add '新建一个工作簿 Set sht = wb.Worksheets(1) With sht .Name = "另存工资表" '修改第一张工作表的标签名称 .Range("A1:F1") = Array("序号", "姓名", "部门", "职位", "基本工资", "实际到账") '设置表头 End With wb.SaveAs ThisWorkbook.Path & "\另存工资表.xls" '保存新建的工作表到本工作簿所在的文件夹中 ActiveWorkbook.Close '关闭新建的工作簿 End Sub
二、运行结果
-
Excel·VBA合并工作簿中所有工作表
2022-03-29 22:36:05对Excel活动工作簿进行合并,汇总所有工作表,保存在工作簿最前,适用于同格式 合并工作簿中所有工作表 Sub 合并工作簿中所有工作表() '当前工作簿wb所有工作表ws合并保存至新建工作表(插入最前),但之前ws不修改...对Excel活动工作簿进行合并,汇总所有工作表,保存在工作簿最前,适用于同格式
合并工作簿中所有工作表
Sub 合并工作簿中所有工作表() '当前工作簿wb所有工作表ws合并保存至新建工作表(插入最前),但之前ws不修改(工作表格式相同) Dim wb, ws, title_row, end_row, copy_title, i '--------------------参数填写:title_row,数字,第1行为1向下递增;end_row,数字 title_row = 1 '表头行数,仅复制1次;如果为0,则表示没有表头或表头每次都复制 end_row = 0 '表尾行数,不参与合并 Set wb = Application.ActiveWorkbook '当前工作簿即为待合并工作簿 Set ws = wb.Worksheets.Add(before:=Sheets(1)) '最前添加新sheet,即为合并工作表 ws.Name = "合并表" If title_row > 0 Then copy_title = True Else copy_title = False '是否复制表头 If title_row < 0 Then Debug.Print "title_row参数错误,必须为>=0的整数": Exit Sub Application.ScreenUpdating = False '关闭屏幕更新,加快程序运行 Application.DisplayAlerts = False '不显示警告信息 '遍历,复制表体 For i = 1 To Worksheets.count: If Worksheets(i).Name <> ws.Name Then If copy_title = True Then '复制表头,仅执行1次 Worksheets(i).Rows(1 & ":" & title_row).Copy ws.Range("A1") copy_title = False End If '首行为空,会导致后续数据被覆盖 If WorksheetFunction.CountA(ws.Rows(1)) = 0 Then ws.Rows(1).Delete write_row = ws.UsedRange.Rows.count + 1 '合并工作表的第一个空行写入 sheet_row = Worksheets(i).UsedRange.Rows.count Worksheets(i).Rows(title_row + 1 & ":" & sheet_row - end_row).Copy ws.Range("A" & write_row) End If Next Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub
合并文件夹下所有工作簿中所有工作表
Sub 合并文件夹下所有工作簿中所有工作表() '文件夹下所有工作簿wb所有工作表ws合并保存至新建工作表(但不含子文件夹),但不修改原数据(工作表格式相同) Dim wb, ws, title_row, end_row, copy_title, file_path, file_name, save_file, i '--------------------参数填写:title_row,数字,第1行为1向下递增;end_row,数字;file_path,合并文件夹 title_row = 1 '表头行数,仅复制1次;如果为0,则表示没有表头或表头每次都复制 end_row = 0 '表尾行数,不参与合并 file_path = "E:\测试\拆分表\" '待合并工作簿所在的文件夹 file_name = Dir(file_path & "*.xlsx") If title_row > 0 Then copy_title = True Else copy_title = False '是否复制表头 If title_row < 0 Then Debug.Print "title_row参数错误,必须为>=0的整数": Exit Sub Application.ScreenUpdating = False '关闭屏幕更新,加快程序运行 Application.DisplayAlerts = False '不显示警告信息 Workbooks.Add '新建工作表 Set ws = ActiveSheet ws.Name = "合并表" Do While file_name <> "" Set wb = Workbooks.Open(file_path & file_name) For i = 1 To Worksheets.count: If copy_title = True Then '复制表头,仅执行1次 wb.Worksheets(i).Rows(1 & ":" & title_row).Copy ws.Range("A1") copy_title = False End If '首行为空,会导致后续数据被覆盖 If WorksheetFunction.CountA(ws.Rows(1)) = 0 Then ws.Rows(1).Delete write_row = ws.UsedRange.Rows.count + 1 '合并工作表的第一个空行写入 sheet_row = wb.Worksheets(i).UsedRange.Rows.count wb.Worksheets(i).Rows(title_row + 1 & ":" & sheet_row - end_row).Copy ws.Range("A" & write_row) Next wb.Close (False) file_name = Dir '下一个文件名 Loop '保存文件 save_file = file_path & "合并表.xlsx" ws.Parent.SaveAs filename:=save_file ws.Parent.Close (False) Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub
举例
1,合并《Excel·VBA按列拆分工作表》,sub1拆分后的工作表
合并sub1参数:title_row = 1,end_row = 0
2,合并《Excel·VBA按列拆分工作表》,sub2拆分后的工作表
合并sub2参数:title_row = 0,end_row = 0
-
【VBA研究】关闭保存工作簿时重新计算功能
2015-08-25 17:16:21为了提高VBA程序运行速度,我们一般会关闭屏幕更新,停止自动计算,如下: Application.ScreenUpdating = False Application.Calculation = xlManual 当返回自动计算模式时,系统自动把所有的公式计算一遍,即使不... -
VBA 批量打开workbook工作簿,汇总到同一workbook工作簿中
2019-07-02 23:00:50VBA 批量打开workbook工作簿,汇总到同一workbook工作簿中 ** 前言:此VBA程序用于,对母婴玩具行业的各一级维度的数据进行汇总。 Sub 收集文件夹中文件路径() Dim f '1.批量打开文件,将文件路径记录到数组f... -
第037篇:VBA之拆分工作簿(将一个包含多工作表的工作簿拆分为单工作表工作簿文件)
2020-05-10 22:41:40使用情景:如题,将一个包含多工作表的工作簿拆分为单工作表工作簿文件 原始文件描述:【旺旺大礼包.xlsx】中有三个工作表,分别是旺仔牛奶、旺旺仙贝、旺旺小小酥 操作流程: 打开旺旺大礼包.xlsx——在菜单栏... -
VBA从工作表另存为工作簿
2020-08-13 17:07:10Application.ScreenUpdating = False '屏幕更新关闭 Application.DisplayAlerts = False '显示和预警提示关闭 Dim folder As String 'String字符串 folder = ThisWorkbook.Path & "\ 班级 " If Len(Dir... -
VBA多工作簿中多工作表分类汇总
2022-05-13 16:53:27将某一文件夹下所有工作簿中的多张表单汇总到一个工作薄中的一张表单中 最终效果: 步骤流程: 完整代码: ========================================================================= 1、汇总当前... -
excel VBA自动化 - 多个工作簿自动合并到一个工作簿
2022-03-31 10:26:51多个excel表自动合并到同一表格,该段vba代码的逐句拆解 -
Excel 2010 VBA 入门 068 将当前工作簿备份至指定目录
2021-04-26 16:05:30工作簿对象(Workbook)的SaveCopyAs方法 SaveCopyAs方法和SaveAs方法的区别 示例: 在许多时候,希望能够为工作簿创建一个备份,以防误操作而丢失数据。如何为当前工作簿自动备份一个副本至指定目录,并以日期和... -
Excel 2010 VBA 入门 066 读取其他工作簿的数据
2021-04-23 14:30:41打开关闭的工作簿 示例 如图所示,在“数据库.xlsx”工作簿中存有“销售数据”,在相同目录下的工作簿 希望能够将该工作簿中该工作表中的数据读入以便进行下一步操作。该如何用VBA完成? 销售经理 区域 ... -
如何用vba给excel工作簿批量设置添加打开密码? - EXCEL VBA - ExcelOffice【微信公众号:水星Excel】
2021-08-08 11:26:47今天给大家介绍如何用vba批量给excel工作簿设置添加打开密码。今天的内容主要分为以下三个部分:手动设置添加打开密码;在vba中用工作簿Workbook对象的SaveAs方法设置添加打开密码;在vba中用工作簿Workbook对象的... -
VBA在Excel中的应用——用VBA将同一工作簿中不同工作表拆成独立文件
2020-04-01 23:48:14VBA在Excel中的应用用VBA将同一工作簿中不同工作表拆成独立文件问题描述1.在“开发工具”选项卡中选择”Visual Basic”2.插入模块运行结果可能存在的问题 用VBA将同一工作簿中不同工作表拆成独立文件 问题描述 有一... -
VBA单元格、工作表、工作簿
2019-04-30 23:08:35详解VBA单元格、工作表、工作簿各种表示、方法,注意事项。 -
VBA基础,工作簿workbook相关的方法和属性
2020-01-27 08:18:070 我觉得VBA和VB,VBS最大的区别就在A(application)上了 所以application里的 workbook , worksheet range ,cell等应该是VBA语言的核心,最复杂内容了 本身VBA里的VB语言部分,其实和很多语言语法结构也... -
Excel VBA:打开与关闭工作簿——Workbooks对象
2020-01-13 20:52:29Workbooks 对象 Microsoft Excel 应用程序中当前打开的所有 Workbook 对象的集合。 说明 ...下例关闭所有打开的工作簿。 Workbooks.Close 使用 Add 方法可创建一个新空工作簿并将它添加到... -
使用vba把一个工作簿的多个sheet拆分成两个sheet为一个工作簿的多个工作簿
2022-01-20 14:55:22Fals '保存文件到某个路径,和文件名 xlsx格式 加上下面注释的,True为xls格式 ActiveWorkbook.SaveAs ipath & sht.Name ',True '删除第三个sheet Sheets(newwork.Worksheets(3).Name).Delete '关闭指定工作簿 ... -
VBA-新建工作簿
2020-02-26 12:09:43这节内容介绍如何应用VBA自动创建工作簿,并修改部分内容后保存关闭。和创建工作表类似,创建工作簿仍然使用add方法。下面是一个较为完整的创建例子: Sub addnewbook() Dim i As Integer Dim shtname As Variant ... -
VBA学习笔记5:将同一工作簿的数据按照类别拆分为多个工作簿
2022-04-18 13:04:57VBA学习笔记5:将同一工作簿的数据按照类别拆分为多个工作簿 -
VBA 复制同文件夹下多工作簿中同名工作表 分别粘贴至同一工作簿的不同工作表
2019-02-10 20:41:56复制指定目录下excel工作簿中同名工作表,该代码将在相同目录下创建汇总工作簿,各工作簿中同名工作表将被分别复制到汇总工作簿的不同表中(汇总工作簿中各工作表以分工作簿名命名)。 所有要汇总的工作簿在同一个... -
VBA实战(09) - 工作簿(WorkBook)
2022-01-05 22:49:35工作簿(workbook)汇总 打开一个文件 Set originalWb = Workbooks.Open(originalFileStr) 如果文件是带用户名和密码时,可以使用如下函数。 Set originalWb = Workbooks.Open(originalFileStr, 0, True, "用户名",... -
poi excel 保护工作簿_奇妙的VBA代码之三十一:如何新建EXCEL工作簿文件
2020-12-11 15:20:48各位好,今日我们讲VBA代码的第三十一讲,如何新建EXCEL...在VBA中使用Add方法新建工作簿。一:ADD方法:使用Workbooks对象的Add方法创建新工作簿,其语法为:Workbooks对象.Add(Template)参数Template可选,确定如... -
VBA工作簿操控备忘
2017-06-22 22:38:08CreateFolder Method ...Required........Required....1、工作簿创建和保存: ...2、工作簿打开: ...'打开指定工作簿 ...Sub 关闭指定工作簿并保存() Workbooks("Workbook").Close savechanges:=True End Sub -
Excel 合并当前目录下所有工作簿的全部工作表的VBA代码
2019-05-24 08:50:07With Workbooks(1).ActiveSheet '第六行注释,当前Excel工作簿的第一个sheet页 For G = 1 To Wb.Sheets.Count '第七行注释,复制打开的Excel文件的sheet页到当前Excel文件,如果当前Excel文档为xlsx格式,此处... -
VBA 代码如何跟随Excel保存
2021-07-31 11:12:43背景:一般情况下,打开Excel的文件类型为.xlsx,编写VBA代码后,关闭Excel,再次打开Excel后,代码消失 解决办法:更换文件类型,启用宏编辑 1.直接ctl+s保存VBA代码,弹出提示 2.根据弹框提示选择“否” 3.将... -
第033篇:VBA之工作簿基础操作与实例应用
2020-04-29 20:22:21(一)基础操作 1.新建工作簿 Sub 新建工作簿() Dim wbk As Workbook '定义wbk为工作簿对象,因为它是一个对象,所以下局用Set来赋值 ...wbk.SaveAs "c:\123.xls" '保存为C盘路径下的一个工作簿文件 End S... -
Excel:Day04-VBA操作工作簿-For Each循环
2020-06-18 20:57:44Workbooks工作簿对象 For Each 循环 第一块内容:For Each循环 Sub test1() Dim ge As Range'把变量ge定义为Range(rng)类型,单元格变量/区域变量 For Each ge In Range("A1:A10")'在单元格区域A1:A10范围内,... -
ExcelVBA Workbook工作簿对象介绍
2020-02-24 20:48:38Workbooks是所有工作簿对象组成的集合,而Wrokbook对象是Workbooks集合的一个成员。 1.引用集合中的工作簿 利用工作簿名引用工作...通过代码获得指定工作簿的名称、保存的路径等文件信息,示例代码如下。 Sub WbMsg... -
VBA 工作簿workbook常用的事件,比如聚光灯,禁止保存,禁止关闭EXCEL,禁止打印,监测内容变化等等
2020-01-29 23:50:081 工作簿workbook 常用的事件 1.1 常用事件 workbook_open() workbook_WindowActivate() workbook_Windowresize() workbook_sheetchange() workbook_sheetselectionchange() workbook_beforesave() ...