精华内容
下载资源
问答
  • 要解决的问题: 同一个文件夹有多个工作簿工作簿中有相同格式的多个sheet表,其中有两个固定的SHEET需要...2、使用dir在文件夹中遍历文件,然后打开工作簿,再打印指定的工作表,然后关闭文件。 EXCELVBA代码如.

    要解决的问题:

    同一个文件夹有多个工作簿,工作簿中有相同格式的多个sheet表,其中有两个固定的SHEET需要打印(所有EXCEL工作簿表格中两个固定SHEET的名字相同)。每次打开这么多文档,再将表格一个个打印很繁琐,有什么快捷的方法可以直接打印这个文件夹下所有EXCEL表中这两个固定的SHEET表内容?

    解决思路:

    1、将要打印的工作簿放在同一个文件夹内,如:D:\mywbooks\

    2、使用dir在文件夹中遍历文件,然后打开工作簿,再打印指定的工作表,然后关闭文件。


    EXCEL VBA代码如下:

     

    1. Sub myprint()
    2.     Dim file$, folder$, wb As Workbook
    3.     folder = "D:\mywbooks\"
    4.     file = Dir(folder & "*.xlsx") ’如有其他后辍,可以使用Dir(folder & "*.xls*")
    5.     Do While file <> ""
    6.         Set wb = GetObject(folder & file)
    7.         wb.Worksheets("sheet1name").PrintOut
    8.         wb.Worksheets("sheet2name").PrintOut
    9.         wb.Close
    10.         set wb=nothing
    11.         file = Dir
    12.     Loop
    13. End Sub

    或者使用如下方法:

     

     

    1. Sub myprint()        
    2.     Dim file$, folder$, wb As Workbook, sht As Worksheet        
    3.     folder = "D:\mywbooks\"        
    4.     file = Dir(folder & "*.xlsx") '如有其他后辍,可以使用Dir(folder & "*.xls*")        
    5.     Do While file <> ""        
    6.        With Workbooks.Open(folder & file)        
    7.             For Each sht In .Sheets                    
    8.                    If sht.Name = "sheet1name" Or sht.Name = "sheet2name" Then sht.PrintOut            
    9.             Next sht                    
    10.             .Close                
    11.         End With        
    12.         file = Dir
    13.     Loop
    14. End Sub
       

     

     

     

    展开全文
  • Excel 批量生成指定名称工作簿

    千次阅读 2019-07-06 17:10:59
    1、将需批量创建工作簿名称放入A列,如下图所示: 2、输入VBA代码并运行 Sub newbooks() Dim i&, p$, temp$ On Error Resume Next '忽略代码运行中的错误,避免存在异常名称工作簿等问题时,代码运行中断。 ...

    1、将需批量创建工作簿名称放入A列,如下图所示:
    在这里插入图片描述

    2、输入VBA代码并运行

    Sub newbooks()
        Dim i&, p$, temp$
        On Error Resume Next
    '忽略代码运行中的错误,避免存在异常名称工作簿等问题时,代码运行中断。
        Application.ScreenUpdating = False
      '关闭屏幕刷新
        p = ThisWorkbook.Path & "\"
      '取得当前工作薄所在路径
        For i = 1 To Cells(Rows.Count, 1).End(3).Row
      '循环读取A列数据
            temp = Cells(i, 1) & ".xlsx"
      'temp是完整的含文件后缀的工作薄名称
            With Workbooks.Add
       '新建工作薄
                .SaveAs p & temp
     '保存工作薄,p & temp是要保存的文件的名称
                .Close False
         '关闭工作薄
            End With
        Next
        Application.ScreenUpdating = True
      '恢复屏幕刷新
    End Sub
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    3、这样就生成啦
    在这里插入图片描述

    展开全文
  • Sheets("评级审批表").PrintOut Copies:=ol '打印指定工作表 ActiveWorkbook.Save '保存当前工作簙 ActiveWorkbook.Close '关闭当前工作簙 Next i '打开下一个工作簙 Else MsgBox "没有找到任何工作簿文件" '...
  • 学习Excel技术,关注微信公众号:excelperfect下面的一系列文章将重点讲解如何在功能区中添加不同类型的自定义控件,它们与最底层的自定义命令相关。这里的自定义命令是指程序员...2. 关闭工作簿,然后在CustomUI...

    学习Excel技术,关注微信公众号:

    excelperfect

    下面的一系列文章将重点讲解如何在功能区中添加不同类型的自定义控件,它们与最底层的自定义命令相关。这里的自定义命令是指程序员自已编写的VBA过程。

    添加按钮

    如果要在内置功能区选项卡中添加两个按钮,在单击这些按钮时会调用VBA过程,那么执行下面的步骤:

    1. 创建新工作簿并保存为启用宏的工作簿。

    2. 关闭该工作簿,然后在CustomUI Editor中打开该工作簿。

    3. CustomUI Editor中,单击“插入”并选择“Office 2007 Custom UI Part”。

    4. 选择“Insert | Sample XML | Custom Tab”,作一些修改,或者复制并粘贴下面的XML代码,在功能区“插入”选项卡中添加包含两个按钮(标记为Insert 0Insert 1,带有Mso图像01)的标记为Attn Sh的组。

    b6684f9d37f8b1d647cf44d8fc49c4da.png

    选项卡元素:

    idMso属性的值是内置选项卡的名称。本例中,TabInsert是“插入”选项卡的idMso。如果要在其他内置选项卡中插入按钮,那就使用其他选项卡的idMso替换掉TabInsert

    组元素:

    group元素中label属性的值指定功能区中组显示的文本。

    按钮元素:

    imageMso属性为按钮指定预定义的图像。如果要使用自已设计的图像,只需使用image属性替换掉imageMso属性。

    onAction属性是一个回调属性。该属性的值是在单击按钮时要执行的VBA过程的名称。

    5. 单击工具栏中的Validation按钮来检查是否有错误。

    6. 单击Generate Callbacks按钮。

    由于XML代码中有两个回调属性(每个按钮一个),因此生成两个回调:

    'Callback for BtnInsert0onAction

    SubInsert0(control As IRibbonControl)

    End Sub

    'Callback for BtnInsert1onAction

    SubInsert1(control As IRibbonControl)

    End Sub

    复制回调代码。之后,要将其粘贴到工作簿的VBA模块中。

    7. 保存并关闭该文件。

    8. Excel中打开该工作簿文件。

    9. Alt+F11键打开VBE

    10. 插入一个标准VBA模块并粘贴刚才复制的回调代码。

    11. 添加一些代码来测试这两个按钮:

    'Callbackfor BtnInsert0 onAction

    Sub Insert0(control AsIRibbonControl)

        With control

            MsgBox "单击了" & .Context.Caption &"中的" & .ID

        End With

    End Sub

    'Callbackfor BtnInsert1 onAction

    Sub Insert1(control AsIRibbonControl)

        With control

            MsgBox "单击了" & .Context.Caption &"中的" & .ID

        End With

    End Sub

    单击按钮时会显示:

    fab289c4fc928696a737eca39e4d396e.png

    Insert0回调过程中的参数control3个属性:

    IDXML代码中指定的控件的id

    Context包含该功能区的活动窗口。Context.Caption是出现在该窗口标题栏中的名称,本例中,为该工作簿的名称。

    TagXML代码中元素(本例中是按钮元素)的tag属性的值。通常,标签用于识别控件执行的操作。

    下图展示在功能区的“插入”选项卡出现了含有两个按钮的Attn Sh组。

    5bb9fa9848e497c9b5653a5cdcaf1f7f.png

    说明:本专题系列大部分内容学习整理自《Dissectand Learn Excel VBA in 24 HoursChangingworkbook appearance》,仅供学习研究。

    欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

    欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。

    f2a89b8d285054e3a90a5522db84e500.png

    展开全文
  • 时不时有同学问,一个工作簿中每天一份报表,一个月下来30份报表需要汇总成一张表,每个月都要复制,粘贴,复制,粘贴……还有的是有很多个格式一样的表位于不同的工作簿中,需要合并到一个工作表里,需要打开,复制...

    我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务。支持我,也为自己加油!

    时不时有同学问,一个工作簿中每天一份报表,一个月下来30份报表需要汇总成一张表,每个月都要复制,粘贴,复制,粘贴……还有的是有很多个格式一样的表位于不同的工作簿中,需要合并到一个工作表里,需要打开,复制,粘贴,关闭,打开,复制,粘贴,关闭……都感觉自己快成了一个机器人了……对于同一个工作簿中有很多格式相同的表想合并在一起的情况,如果不懂VBA代码的话,可以参考我以前写的一篇文章:通过查询快速合并多个报表当然,我们也可以通过下载一些Excel插件来实现报表的合并,但今天我们分享的主要是通过VBA代码来合并报表。大家可以收藏本文,需要的时候直接使用,非常方便。

    1工作簿内多个sheet合并到一个sheet

    c7cb89756e5bd84c51632c224d8cdbe8.gif

    上边的动图中有1、2、3、4,4个sheet,分别是不同部门的人员信息,需要合并到汇总sheet里。

    具体步骤:

    右键点击汇总sheet表名,查看代码,把下面代码复制进去,点击运行,很快就可以看到合并后的结果了。

    代码如下:

    Sub 合并当前工作簿下的所有工作表()Application.ScreenUpdating = FalseFor j = 1 To Sheets.Count   If Sheets(j).Name <> ActiveSheet.Name Then       X = Cells(Rows.Count,1).End(xlUp).Row + 1       Sheets(j).UsedRange.Copy Cells(X, 1)   End IfNextApplication.ScreenUpdating = TrueMsgBox "当前工作簿下的全部工作表已经合并完毕!", vbInformation, "提示"End Sub

    注意:此代码是把每个sheet里面的内容(包括标题行)直接复制到汇总sheet里了,所以汇总后需要手动删除多余的表头。

    2多个工作簿中的sheet合并到一个sheet

    36c5b746a262db7d2be515b3a0d003c9.gif

    大家仔细观察,工作簿1中有两个sheet,合并的时候都会合并进去。

    代码如下:

    Sub 合并当前目录下所有工作簿的全部工作表()Dim MyPath, MyName, AWbNameDim Wb As Workbook, WbN As StringDim G As LongDim Num As LongDim BOX As StringApplication.ScreenUpdating = FalseMyPath = ActiveWorkbook.PathMyName = Dir(MyPath & "\" & "*.xlsx")AWbName = ActiveWorkbook.NameNum = 0Do While MyName <> ""    If MyName <> AWbName Then        Set Wb = Workbooks.Open(MyPath & "\" & MyName)        Num = Num + 1        With Workbooks(1).ActiveSheet            .Cells(.Range("B65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)            For G = 1 To Sheets.Count                Wb.Sheets(G).UsedRange.Copy .Cells(.Range("B65536").End(xlUp).Row + 1, 1)            Next            WbN = WbN & Chr(13) & Wb.Name            Wb.Close False        End With    End If    MyName = DirLoopApplication.ScreenUpdating = TrueMsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"End Sub

    注意此代码合并的是扩展名为xlsx的工作簿中的表,如果扩展名为xls,请修改代码中红色字体部分,请根据自己的版本更改。

    3多个工作簿中指定的sheet合并到新的工作簿中

    550aed17f6c097c05c44dee225f3210e.gif

    多个工作簿中的表合并到一个工作簿中,不进行汇总,只是放到一个工作簿,保留原来的表名。

    代码如下:

    Sub 汇总数据()Application.ScreenUpdating = FalseDim wb, wb1 As Excel.WorkbookDim sh As Excel.Worksheets = Split(ThisWorkbook.Name, ".")(1)f = Dir(ThisWorkbook.Path & "\*" & s) '生成查找EXCEL的目录Do While f <> "" '在目录中循环    If f <> ThisWorkbook.Name Then  '如果不是打开的工作簿        Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & f)        wb.Worksheets("sheet1").Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)        ActiveSheet.Name = Split(wb.Name, ".")(0)        wb.Close    End If    f = DirLoopThisWorkbook.Worksheets("汇总").ActivateApplication.ScreenUpdating = TrueEnd Sub

    三种情况下的合并全在此了,当然能看懂VBA代码那就更好了,至少出问题时知道怎么去修改,而且以上的代码并不难,参加我的VBA入门班,6节课程全部学习完后,上面的代码全部可以自己写出来。

    所以如果你想做自动化报表,如果你常做一些重复性的工作,如果你想提升自己的技能以便节省出更多的时间做更多有意义的事情,那还考虑什么呢,下定决心学习下VBA吧!

    今天的分享就到这里,当然还是建议你学习下VBA,至少能看懂代码,会简单的修改!

    5a0aba4ef937c9bd108cdc5706d03dfa.gif

    鼓励一下,赞完再走

    展开全文
  • vba常用英文

    2014-10-26 17:02:30
    vba语句 (1) Option Explicit '强制对模块内所有变量进行声明 (2) Option Base 1 '指定数组的第一个下标为1 ...(13) ThisWorkbook.close '关闭当前工作簿 (14) ActiveWorkbook.Sheets.Count '获取活动工作薄中工作表数
  • VBA常用技巧

    2014-12-21 16:39:28
    技巧43 判断指定工作簿是否打开 12 43-1 遍历Workbooks集合方法 12 43-2 错误处理方法 12 技巧44 禁用宏则关闭工作簿 12 技巧45 关闭工作簿不显示保存对话框 12 45-1 使用Close方法关闭工作簿 12 45-2 单击工作簿...
  • VBA编程技巧大全

    2013-08-05 09:03:19
    技巧43 判断指定工作簿是否打开 106 43-1 遍历Workbooks集合方法 106 43-2 错误处理方法 106 技巧44 禁用宏则关闭工作簿 107 技巧45 关闭工作簿不显示保存对话框 111 45-1 使用Close方法关闭工作簿 111 45-2 单击...
  • 对象/属性/方法/事件(Object/Attribute/ Method/Event) 描述(Description) Save 保存指定工作簿所做的更改本示例保存当前活动工作簿。 ActiveWorkbook.Save本示例保存所有打开的工作簿,然后关闭 Microsoft ...
  • Excel_VBA教程

    2014-09-22 11:36:34
    2.3.2 使用并编辑个人宏工作簿中的宏 5 2.4 将宏指定给按钮 6 2.5 将宏指定给图片或其他对象 6 2.6 小结 7 第三课 学习控件 7 3.1 EXCEL开发过程简介 7 3.2 认识不同的控件 7 3.3 向工作表添加控件 7 3.4 设置控件的...
  • 02002通过名称指定工作簿 02003引用当前的活动工作簿 02004引用最后打开的工作簿 02005引用当前宏代码运行的工作簿 02006引用新建的工作簿 02007引用包含特定工作表的工作簿 02008判断工作簿是否已经打开(之一) ...
  • Excel VBA程序设计.doc

    2009-07-06 22:16:12
    2.3.2 使用并编辑个人宏工作簿中的宏 13 2.4 将宏指定给按钮 14 2.5 将宏指定给图片或其他对象 14 2.6 小结 14 第三课 学习控件 15 3.1 EXCEL开发过程简介 15 3.2 认识不同的控件 15 3.3 向工作表添加控件 15 3.4 ...
  • ExcelVBA程序设计.doc

    2011-04-05 21:32:51
    2.3.2 使用并编辑个人宏工作簿中的宏 5 2.4 将宏指定给按钮 6 2.5 将宏指定给图片或其他对象 6 2.6 小结 7 第三课 学习控件 7 3.1 EXCEL开发过程简介 7 3.2 认识不同的控件 7 3.3 向工作表添加控件 7 3.4 设置控件的...
  • Excel_VBA程序设计.pdf

    热门讨论 2009-08-31 23:05:20
    2.3.2 使用并编辑个人宏工作簿中的宏 13 2.4 将宏指定给按钮 14 2.5 将宏指定给图片或其他对象 14 2.6 小结 14 第三课 学习控件 15 3.1 EXCEL开发过程简介 15 3.2 认识不同的控件 15 3.3 向工作表添加控件 15 3.4 ...
  • EXCEL VBA常用语句100句

    2008-09-08 10:36:29
    EXCEL VBA常用语句100句 定制模块行为 (1) Option Explicit '强制对模块内所有变量进行声明 Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示 Option Compare Text '...工作簿
  • Excel VBA 基础教程

    2019-01-01 18:51:06
    7 关闭........................................................................ 7 其他文件函数................................................................ 7 二、VISUAL BASIC程序设计网络教学..........
  • 2.3.2 使用并编辑个人宏工作簿中的宏 5 2.4 将宏指定给按钮 6 2.5 将宏指定给图片或其他对象 6 2.6 小结 6 第三课 学习控件 7 3.1 EXCEL开发过程简介 7 3.2 认识不同的控件 7 3.3 向工作表添加控件 7 3.4 设置控件的...
  • 2.宏会自动复制Sheet2到新工作簿,并插入你所选文件夹中的全部JPG图片到B列,对应的图片名自动填到C列; 3.图片的大小会自动适应Sheet2的B3单元格,因此可以在点击执行前调整Sheet2的B3单元格的大小来控制插入图片的...
  • 中文版Excel.2007高级VBA编程宝典 1/2

    热门讨论 2012-04-06 16:00:16
     11.2.2 保存和关闭所有工作簿  11.2.3 隐藏除选区之外的区域  11.2.4 同步工作表  11.3 VBA技巧  11.3.1 切换布尔类型的属性值  11.3.2 确定打印页面的数量  11.3.3 显示日期和时间  11.3.4 获得字体列表 ...
  • 中文版Excel.2007高级VBA编程宝典 2/2

    热门讨论 2012-04-06 16:41:38
     11.2.2 保存和关闭所有工作簿  11.2.3 隐藏除选区之外的区域  11.2.4 同步工作表  11.3 VBA技巧  11.3.1 切换布尔类型的属性值  11.3.2 确定打印页面的数量  11.3.3 显示日期和时间  11.3.4 获得字体...
  • EXCEL编程VBA高级教程

    2015-04-16 11:40:55
    关闭........................................................................7 其他文件函数................................................................7 二、VISUALBASIC程序设计网络教学...............
  • sub 本文件夹下其他工作簿的每个工作簿的第B\C\D列 25行查询求和 Dim cn As Object, f$, arr&(1 To 25, 1 To 3), i% Application.ScreenUpdating = False Set cn = CreateObject("adodb.connection") f = Dir...
  • EXCEL多文件查找替换是由金浚软件工作室推出的一款excel多文件查找替换软件,本软件可同时对指定文件夹中的多个excel工作簿文件批量进行查找内容并替换,绿色小巧,批量操作,省时省力,需要的朋友欢迎前来下载使用...
  • Excel百宝箱9.0无限制破解版

    热门讨论 2012-02-03 19:05:29
    【折分工作簿】:将指定工作簿的每个工作表拆分成单独的工作簿,新工作簿名称等于原工作表名称 【工作表折分】:将当前工作表的数据按条件拆分成多个工作表,可以用任意列的数据做为拆分条件 【合并工作簿】:将指...
  • Excel百宝箱

    2012-10-27 17:09:21
    【折分工作簿】:将指定工作簿的每个工作表拆分成单独的工作簿,新工作簿名称等于原工作表名称 【工作表折分】:将当前工作表的数据按条件拆分成多个工作表,可以用任意列的数据做为拆分条件 【合并工作簿】:将指...
  • 【折分工作簿】:将指定工作簿的每个工作表拆分成单独的工作簿,新工作簿名称等于原工作表名称 【工作表折分】:将当前工作表的数据按条件拆分成多个工作表,可以用任意列的数据做为拆分条件 【合并工作簿】:将...
  • Application对象是Excel对象模型中最高层级的对象,代表Excel应用程序自身,也包含组成工作簿的许多部分,包括工作簿、工作表、单元格集合以及它们包含的数据。 Application对象包含: • 应用程序设置和选项,许多...
  • 【折分工作簿】:将指定工作簿的每个工作表拆分成单独的工作簿,新工作簿名称等于原工作表名称 【工作表折分】:将当前工作表的数据按条件拆分成多个工作表,可以用任意列的数据做为拆分条件 【合并工作簿】:将指...

空空如也

空空如也

1 2 3
收藏数 43
精华内容 17
热门标签
关键字:

vba关闭指定工作簿