精华内容
下载资源
问答
  • Sub Test()  Dim wb As Workbook  Set wb = Workbooks.Add(xlWBATWorksheet)  Set sht = wb.Worksheets("Sheet1")  wb.Close SaveChanges:=False Sub

    Sub Test()

      Dim wb As Workbook

      Set wb = Workbooks.Add(xlWBATWorksheet)

      Set sht = wb.Worksheets("Sheet1")

      wb.Close SaveChanges:=False

    Sub 

    展开全文
  • VBA工作表另存为工作簿

    千次阅读 2020-08-13 17:07:10
    Application.ScreenUpdating = False '屏幕更新关闭 Application.DisplayAlerts = False '显示和预警提示关闭 Dim folder As String 'String字符串 folder = ThisWorkbook.Path & "\ 班级 " If Len(Dir...
    Sub 宏1()
     Application.ScreenUpdating = False   '屏幕更新关闭
     Application.DisplayAlerts = False    '显示和预警提示关闭
     Dim folder As String   'String字符串
     folder = ThisWorkbook.Path & "\ 班级 "
     If Len(Dir(folder, vbDirectory)) = 0 Then MkDir folder   'vbDirectory文件夹   MkDir创建目录或文件夹
     Dim sht As Worksheet
     For Each sht In Worksheets
     sht.Copy
     ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & sht.Name & ".xls"   '另存在这个路径  名字是工作表名字.xls
     ActiveWorkbook.Close
     Next
     Application.ScreenUpdating = True
     Application.DisplayAlerts = True
    End Sub
    
    展开全文
  • 1 工作簿workbook 常用的事件 1.1 常用事件 workbook_open() workbook_WindowActivate() workbook_Windowresize() workbook_sheetchange() workbook_sheetselectionchange() workbook_beforesave() ...

    1 工作簿workbook 常用的事件

    1.1 常用事件

    • workbook_open()
    • workbook_WindowActivate()
    • workbook_Windowresize()
    •  
    • workbook_sheetchange()
    • workbook_sheetselectionchange()
    •  
    • workbook_beforesave()
    • workbook_beforeclose()
    • workbook_beforeprint()

     

    1.1 左边是对象选择器,右边是 对象.事件选择器

     

    2 workbook的常用事件举例

    2.1 workbook_open()

    Private Sub Workbook_Open()
    Debug.Print "wb is open"
    End Sub

     

    2.2 workbook_WindowActivate()

    • Workbook_WindowActivate(ByVal Wn As Window)
    • 参数wn
    • wn.windowstate=xlmaximized
    • wn.windowstate=xlminimized
    • wn.width=100
    • wn.name? 这个好像不行

     

    • 只有切换不同的wb时才触发,当前wb一直active是不触发的
    • 比如 workbook 和其他程序切换时,不会触发

     

    Private Sub Workbook_WindowActivate(ByVal Wn As Window)
    Debug.Print "window is active now"
    Debug.Print "只有切换wb窗口时才触发,当前wb一直active是不触发的"
    
    End Sub
    Private Sub Workbook_WindowActivate(ByVal Wn As Window)
    Debug.Print "window is active now"
    Debug.Print "只有切换wb窗口时才触发,当前wb一直active是不触发的"
    Wn.WindowState = xlMaximized
    
    End Sub

     

     

    2.3 workbook_WindowResize()

    •  只有调整workbook里面的尺寸才变化,而调整整个excel窗口大小不会触发

    Private Sub Workbook_WindowResize(ByVal Wn As Window)
    Debug.Print "window is resized"
    Debug.Print "只有调整workbook里面的尺寸才变化,而调整整个excel窗口大小不会触发"
    End Sub
    

     

    2.4 workbook_beforeSave()

    • Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    • 自带参数  saveasui 好像没啥用
    • cancel 是取消保存参数
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    x1 = MsgBox("您要保存您的修改吗,还是要放弃?", vbYesNo, "是否保存修改")
    If x1 = vbNo Then
       Cancel = True
    ElseIf x1 = vbYes Then
       ThisWorkbook.Save
       Debug.Print "now is saving"
    End If
    
    
    End Sub

     

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    
    x1 = MsgBox("您要保存您的修改吗,还是要放弃?", vbYesNo, "是否保存修改")
    If x1 = vbNo Then
       Cancel = True
       Debug.Print "用户放弃保存"
    ElseIf x1 = vbYes Then
       SaveAsUI = False
       ThisWorkbook.Save
       Debug.Print "now is saving"
    End If
    
    
    End Sub

     

    比如这样就永远无法正常保存了

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    
    Cancel = True
    
    End Sub

     

    2.5 workbook_beforeClose()

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    MsgBox "wb is closing"
    
    If ThisWorkbook.Saved = False Then
       ThisWorkbook.Save
       MsgBox "保存前检测到有内容变化,已经额外保存,再关闭"
    Else
       MsgBox "保存前检测到无内容变化,不需要额外保存即关闭"
    End If
    
    End Sub

     

    如果这样,就无法正常关闭工作簿

    • 因为现在只开了一个工作簿
    • 不让关闭这个工作簿,也就相当于无法退出EXCEL
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    
    Cancel = True
    End Sub

     

    Sub 单独写的退出()
    Application.EnableEvents = False
    ActiveWorkbook.Close
    Application.EnableEvents = True
    End Sub
    

     

     

    2.7 workbook_sheetchange()    监测内容变化

    • "只要wb里任意一个sheet内容里的cells变化都会触发"
    • 比 worksheet的 change() 更好,更通用。因为不需要每个 worksheet单独写一份 change的 事件代码
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Debug.Print "Workbook_SheetChange触发"
    Debug.Print "只要wb里任意一个sheet内容里的cells变化都会触发"
    End Sub

     

    2.8  workbook_sheetselectionchange()   监测选择变化

    • 这几个事件都是默认带参数的
    • 参数应该就是选择的范围
    • 代码1,没用这些参数也OK

    利用 sheetselectionchage()做聚光灯

    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    
    Application.ScreenUpdating = False
    Cells.Interior.ColorIndex = -4142
    
    For Each r1 In Selection.Rows
        Rows(r1.Row).Interior.ColorIndex = 38
    Next
    
    For Each c1 In Selection.Columns
        Columns(c1.Column).Interior.ColorIndex = 38
    Next
    
    Application.ScreenUpdating = True
    
    
    End Sub

    聚光灯效果加强版,可以使用 target参数

    • tarfet参数已经默认为 range 
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    
    
    Application.ScreenUpdating = False
    Cells.Interior.ColorIndex = -4142
    
    For Each r1 In Selection.Rows
        Rows(r1.Row).Interior.ColorIndex = 38
    Next
    
    For Each c1 In Selection.Columns
        Columns(c1.Column).Interior.ColorIndex = 38
    Next
    
    Application.ScreenUpdating = True
    
    
    Target.Interior.ColorIndex = 5
    
    End Sub

     

    2.9 WindowDeactivate

    • 没测出来管用
    • wb也属于 window的一种
    
    Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
    Debug.Print "thisworkbook is deactivate"
    End Sub

     

     

    2.10  打印 BeforePrint

    • BeforePrint(Cancel As Boolean)
    • cancel=true   可以禁止打印
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Cancel = True
    End Sub

     

    展开全文
  • 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

     

    展开全文
  • Workbooks 对象 Microsoft Excel 应用程序中当前打开的所有 Workbook 对象的集合。 说明 ...下例关闭所有打开的工作簿。 Workbooks.Close 使用 Add 方法可创建一个新空工作簿并将它添加到...
  • 作者:iamlaosong 为了提高VBA程序运行速度,我们一般会关闭...当返回自动计算模式时,系统自动把所有的公式计算一遍,即使返回自动计算模式,文件保存时,系统也会自动计算所有公式,如果想计算,可以关闭这个功
  • VBA单元格、工作表工作簿

    千次阅读 2019-04-30 23:08:35
    详解VBA单元格、工作表工作簿各种表示、方法,注意事项。
  • 复制指定目录下excel工作簿中同名工作表,该代码将在相同目录下创建汇总工作簿,各工作簿中同名工作表将被分别复制到汇总工作簿的不同表中(汇总工作簿中各工作表以分工作簿名命名)。 所有要汇总的工作簿在同一个...
  • VBA事件:工作簿事件-工作表事件
  • 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
  • VBA在Excel中的应用用VBA将同一工作簿中不同工作表拆成独立文件问题描述1.在“开发工具”选项卡中选择”Visual Basic”2.插入模块运行结果可能存在的问题 用VBA将同一工作簿中不同工作表拆成独立文件 问题描述 有一...
  • Excel 文件操作 一、概述 本质就是操作 workbook window 文件窗口 一个 excel 文件对应一个 workbook,打开后对应一个...是否存在:输出为 0 就是存在 Debug.Print Len(Dir("d:\test.xlsx")) 是否打开 Dim...
  • 使用情景:如题,将一个包含多工作表工作簿拆分为单工作表工作簿文件 原始文件描述:【旺旺大礼包.xlsx】中有三个工作表,分别是旺仔牛奶、旺旺仙贝、旺旺小小酥 操作流程: 打开旺旺大礼包.xlsx——在菜单栏...
  • True '保存修改并关闭工作簿 End If Next End Sub Rem 判断已打开的工作簿文件后缀名 Function FileExt ( FileName As String ) As String On Error Resume Next If ...
  • 3 直接保存工作簿的语法(EXCEL正常只能整体保存workbook,能单独保存worksheet) 3.1 workbooks().saveas 简洁的代码如这个: ActiveWorkbook.SaveAs Filename:="C:\A\" & 文件名 ".csv", FileFormat:=...
  • 一个excel文件就是一个excel工作簿例如abc.xls,一个工作簿中包含1个到若干个工作表例如sheet1,也就是说工作簿是由工作表组成的。 下面我们就来了解一下工作簿的操作 打开工作簿 Application.displayAlerts=...
  • Sub 合并当前目录下所有工作簿的全部工作表() Dim MyPath, MyName, AWbName '第一行注释,声明变量 Dim Wb As Workbook, WbN As String Dim G As Long Dim Num As Long Dim BOX As String Application....
  • Workbooks是所有工作簿对象组成的集合,而Wrokbook对象是Workbooks集合的一个成员。 1.引用集合中的工作簿 利用工作簿名引用工作...通过代码获得指定工作簿的名称、保存的路径等文件信息,示例代码如下。 Sub WbMsg...
  • Sub CloseAllWB() Dim wb As Workbook If Workbooks.Count > 1 Then  For Each wb In Workbooks  If wb.Name  wb.Close True  End If  Next End If End Sub
  • VBA-新建工作簿

    2020-02-26 12:09:43
    这节内容介绍如何应用VBA自动创建工作簿,并修改部分内容后保存关闭。和创建工作表类似,创建工作簿仍然使用add方法。下面是一个较为完整的创建例子: Sub addnewbook() Dim i As Integer Dim shtname As Variant ...
  • VBA工作簿操控备忘

    2017-06-22 22:38:08
    CreateFolder Method ...Required........Required....1、工作簿创建和保存: ...2、工作簿打开: ...'打开指定工作簿 ...Sub 关闭指定工作簿保存() Workbooks("Workbook").Close savechanges:=True End Sub
  • 工作簿对象(Workbook)的SaveCopyAs方法 SaveCopyAs方法和SaveAs方法的区别 示例: 在许多时候,希望能够为工作簿创建一个备份,以防误操作而丢失数据。如何为当前工作簿自动备份一个副本至指定目录,并以日期和...
  • 打开工作簿,弹出弹窗输入密码,如果密码错误则关闭工作簿 首先在 thisworkbook里设置 当打开工作簿时 执行代码 代码如下: Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim sht As Worksheet '隐藏所有 ...
  • (一)基础操作 1.新建工作簿 Sub 新建工作簿() Dim wbk As Workbook '定义wbk为工作簿对象,因为它是一个对象,所以下局用Set来赋值 ...wbk.SaveAs "c:\123.xls" '保存为C盘路径下的一个工作簿文件 End S...
  • 0 我觉得VBA和VB,VBS最大的区别就在A(application)上了 所以application里的 workbook , worksheet range ,cell等应该是VBA语言的核心,最复杂内容了 本身VBA里的VB语言部分,其实和很多语言语法结构也...
  • Workbooks工作簿对象 For Each 循环 第一块内容:For Each循环 Sub test1() Dim ge As Range'把变量ge定义为Range(rng)类型,单元格变量/区域变量 For Each ge In Range("A1:A10")'在单元格区域A1:A10范围内,...
  • EXCEL VBA创建sheet/工作簿

    万次阅读 2019-05-29 11:02:34
    1.需要创建以地市命名的系列sheet,但想手动创建改名。 代码实现如下: Sub SheetAdd() Dim i As Long '定义一个长整型变量 Sheets.Add After:=Sheets(Sheets.Count), Count:=Sheets(1).Range("A" &...
  • 如图所示,在“数据库.xlsx”工作簿中存有“销售数据”,在相同目录下的工作簿 希望能够将该工作簿中该工作表中的数据读入以便进行下一步操作。该如何用VBA完成? 销售经理 区域 销售数量 张万斌 崇州...
  • 上一篇文,我们初步了解了VBA,现在我们进入Excel应用篇。我们都知道,我们日常工作中...这些函数能够在不同的工作表之间处理数据,甚至在不同的工作簿之间处理数据而在VBA层面使用的是Workbooks和Workbook对象专门...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,747
精华内容 1,098
关键字:

vba关闭工作簿不保存