精华内容
下载资源
问答
  • 今天分享一个VBA实现自动打印的功能,录制宏+修改代码实现。▍这篇文章你将学到以下知识点:录制宏并修改代码;instr函数;循环打开工作簿的通用写法;选择文件夹对话框。我会认真写,希望看完文章后,能在遇到类似...

    c9dd6ac813c50f327572e3b4f97738d6.png

    c0b7bb791f571a67f2d7813e135569ec.png

    今天分享一个VBA实现自动打印的功能,录制宏+修改代码实现。

    ▍这篇文章你将学到以下知识点:

    录制宏并修改代码;instr函数;循环打开工作簿的通用写法;选择文件夹对话框。

    我会认真写,希望看完文章后,能在遇到类似问题的某个瞬间能想到:好像我在哪个公众号见过类似的例子和知识点。再回来翻看这篇文章就行了。

    ▍问题引入:

    在知乎Excel有多厉害?这个回答中,大V何明科老师介绍过这个功能。今天我们就来说一下实现的步骤。

    0c953695c73d9481716bb32858cbdc21.png

    ▷我自己随便下载了几个表格当做案例附件。

    bbfd0df64092e42bc45fd650d731f1a4.png

    110c126d8bc81f4de0c95c9ca541e7cf.png

    ▍实现步骤:

    录制宏,获取打印活动表格动作的代码。(没有真实打印机,以pdf虚拟打印机作为例子)

    录制宏视频连接:

    录制批量打印的宏dldir1.qq.com

    录制宏的到的代码:

    a71007f51f16c57aaca81afcdd6e5059.png

    修改代码,经过修改和补充,得到最终的代码(初学可以不修改录制宏得到的代码):

     1Sub 批量打印()
     2Application.ScreenUpdating = False
     3    With Application.FileDialog(msoFileDialogFolderPicker)
     4        If .Show = -1 Then fl = .SelectedItems(1) & ""
     5    End With
     6    f = Dir(fl & "*.xls*")
     7    Do While f <> ""
     8        Workbooks.Open (fl & f)
     9        For Each sht In ActiveWorkbook.Worksheets
    10            If InStr(1, sht.Name, "标准表") > 0 Then
    11                sht.Select
    12                With ActiveSheet.PageSetup
    13                    .PaperSize = xlPaperA4
    14                    .Zoom = 80
    15                End With
    16                ActiveWindow.SelectedSheets.PrintOut IgnorePrintAreas:=False, _
    17                printtofile:=True, prtofilename:=fl & ActiveWorkbook.Name & sht.Name & ".pdf"
    18            End If
    19        Next
    20        ActiveWorkbook.Close False
    21        f = Dir
    22    Loop
    23    Application.ScreenUpdating = True
    24    MsgBox "完成"
    25End Sub

    代码超级详解:

     1sub过程名
     2关闭屏幕刷新提高运行速度
     3弹出FileDialog对话框,提示用户选择文件夹作为路径
     4如果选择了文件夹,则返回参数-1,如果点取消则返回参数0
     5End With
     6利用DIR函数取出路径文件夹下的第一个工作簿,并赋值给变量f
     7只要能取出来工作簿名称,就做循环,直到取出的文件名为空停止循环
     8打开工作簿
     9for each函数对打开的活动工作簿中每个表格进行循环
    10如果工作表名称中存在“标准表”字段,则进行以下循环
    11激活工作表,为下一步打印做准备
    12使用pagesetup对象对打印页面进行设置
    13纸张大小为A4纸
    14缩放比例为80%
    15End With
    16利用printout方法对打印过程进行设置
    17将表格打印到文件,全路径是活动工作簿的名字+工作表的名字+“.pdf”
    18   End If
    19   Next
    20关闭当前打开的工作簿,不保存
    21再次使用Dir函数,获取下一个工作簿,第二次使用可以直接写成f=Dir,省略参数
    22Loop
    23开启屏幕刷新
    24MsgBox "完成"
    25End Sub

    运行代码,泡杯茶,等待自己打印完成。

    d8da8a94e9b301ab59cf56ad590b8d28.gif

    ▍知识点讲解:

    ■instr函数

    指定一字符串在另一字符串中最先出现的位置。

    语法:

    InStr([start, ]string1, string2[, compare])
    参数解释:
    start可选参数。为数值表达式,设置每次搜索的起点。如果省略,将从第一个字符的位置开始。如果指定了 compare 参数,则一定要有 start 参数。
    string1 必要参数。接受搜索的字符串表达式。
    string2 必要参数。被搜索的字符串表达式。
    Compare可选参数。指定字符串比较。如果省略 compare,Option Compare 的设置将决定比较的类型。(一般默认不写,特殊情况这里不叙述)


    举个例子就很好理解了

    InStr(1, sht.Name, "标准表") 

    这里就表示,在工作表的名字中搜索“标准表”字符串,如果包含这个字符串,他将会返回出现的位置。

    InStr(1, “ABCD”, "C")   '这里结果会返回3
    InStr(1, “ABCDC”, "C")   '这里结果仍然会返回3

    ■选择文件夹对话框

    如果要选择文件夹作为路径,参照我的写就可以,是个通用模式。

     1选择文件夹
     2Sub SelectFolder()  
     3    '选择单一文件夹  
     4    With Application.FileDialog(msoFileDialogFolderPicker)  
     5        If .Show = -1 Then  
     6        'FileDialog 对象的 Show 方法显示对话框,并且返回 -1(如果您按 OK)和 0(如果您按 Cancel)。  
     7            MsgBox "您选择的文件夹是:" & .SelectedItems(1)  
     8        End If  
     9    End With  
    10End Sub  

    FileDialog对象的更多应用:获取文件全路径(二)FileDialog对象

    = 推荐阅读 =

    你的小黄鸭来了~ | 操作Txt | VBA学习经验 | 合并拆分 | 字符串函数 | 循环知识 | 封装Dll | 进度条 | 生成二维码 | 联想输入

    展开全文
  • 具体操作方法如下:1、把需要合并的excel表格文档放到同一个文件夹里(注意,文件夹中不要有其他的Excel文件)。2、新建一个“合并数据.xlsm“文档(文件名称自定义即可,xlsm为启用宏的Excel文件格式)。3、打开“合并...
    具体操作方法如下:0224e06d00de1c08ba91bb4a359bb358.png1、把需要合并的excel表格文档放到同一个文件夹里 (注意,文件夹中不要有其他的Excel文件)0224e06d00de1c08ba91bb4a359bb358.png2、新建一个“合并数据.xlsm“文档(文件名称自定义即可,xlsm为启用宏的Excel文件格式)0224e06d00de1c08ba91bb4a359bb358.png3、打开“合并数据.xlsm“文件,在”Sheet1“工作表处右键→查看代码(快捷键:“Alt+F11”,或者打开“开发工具”-选择“Visual Basic”)进入到Microsoft Visual Basic for Applications 的窗口。

    dce13fdf354d2f24d8dd43801d1a749e.png

    369013cf07bc2f59c0c90c7b31c6027c.png

    0224e06d00de1c08ba91bb4a359bb358.png4、双击工程资源管理器里面的sheet1或者ThisWorkbook,在右侧的代码区粘贴如下代码(当然处理的VBA代码不止一种,以下仅为举例)
    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.ScreenUpdating = False
    MyPath = ActiveWorkbook.Path
    MyName = Dir(MyPath & "\" & "*.xls")
    AWbName = ActiveWorkbook.Name
    Num = 0
    Do While MyName <> ""
    If MyName <> AWbName Then
    Set Wb = Workbooks.Open(MyPath & "\" & MyName)
    Num = Num + 1
    With Workbooks(1).ActiveSheet
    .Cells(.Range("A65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)
    For G = 1 To Sheets.Count
    Wb.Sheets(G).UsedRange.Copy .Cells(.Range("A65536").End(xlUp).Row + 1, 1)
    Next
    WbN = WbN & Chr(13) & Wb.Name
    Wb.Close False
    End With
    End If
    MyName = Dir
    Loop
    Range("A1").Select
    Application.ScreenUpdating = True
    MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"
    End Sub
    0224e06d00de1c08ba91bb4a359bb358.png5、运行→运行子过程/用户窗体(或者直接点击运行按钮,快捷键:F5),即可合并所有Excel表格到”数据合并.xlsm“文档的Sheet1工作表里面。

    2326f708082b38c2827f0bcc5e9ef20b.png

    0224e06d00de1c08ba91bb4a359bb358.png6、稍微处理一下合并后的数据,就完成了Excel表格的合并。

    PS : 如果处理的是多个.csv文件呢?只需将代码中的第9行改为:MyName = Dir(MyPath & "\" & "*.csv") ,即可完成数据合并。

    展开全文
  • 将所有要复制的excel文件放到同一个文件夹下边。新建一个excel文件,在sheet1处右击鼠标,打开代码窗口,复制上述代码到代码窗口,点击运行即可。
  • Excel VBA实用技巧大全 附书源码

    热门讨论 2010-10-08 18:59:24
    01007获取打开Excel文件时的默认路径 01008获取模板保存的默认路径 01009获取库文件夹的路径 01010获取路径分隔符 01011获取Excel主窗口标题栏的名称 01012获取Excel窗口的状态(大小) 01013获取Excel主窗口的高度...
  • 利用EXCEL批量提取超链接

    千次阅读 2016-12-04 12:31:21
    打开宏工具时excel 2013 可能提示无法打开,需要解决VBE6EXT.OLB无法加载的问题 ...打开VBA文件夹,里面有两个子文件夹VBA6和VBA7;打开VBA6文件夹,将里面的VBE6EXT.OLB复制到VBA7文件夹里;打开VBA7文件夹,将里

    打开宏工具时excel 2013 可能提示无法打开,需要解决VBE6EXT.OLB无法加载的问题

    • 打开C:\Program Files\Common Files\Microsoft Shared\VBA(Office版本不同可能会略有不同);
    • 打开VBA文件夹,里面有两个子文件夹:VBA6和VBA7;
    • 打开VBA6文件夹,将里面的VBE6EXT.OLB复制到VBA7文件夹里;
    • 打开VBA7文件夹,将里面的VBE7.DLL复制到VBA6文件夹里;
    • 重新运行Office软件。

    使用宏来完成超链接提取,步骤如下:

    • excel菜单栏——工具——宏——Visual Basic编辑器(或使用Alt+F11调出Visual Basic编辑器)。
    • Visual Basic编辑器菜单栏——插入——模块,复制以下代码插入:
    • Sub ExtractHL()
         Dim HL As Hyperlink
         For Each HL In ActiveSheet.Hyperlinks
             HL.Range.Offset(0, 1).Value = HL.Address
          Next
      End Sub

    • Visual Basic编辑器菜单栏——运行——运行子过程/用户窗体。

    • 此时,EXCEL表格内有超链接的单元格右边的单元格则会出现超链接的地址,复制即可。

    展开全文
  • Excel_VBA教程

    2014-09-22 11:36:34
    第八章 利用VBA操纵文件和文件夹 144 1.获取当前文件夹的名称(CURDIR函数) 144 2.更改文件或文件夹名称(NAME函数) 145 3.检查文件或文件夹是否存在(DIR函数) 145 4.获得文件修改的日期和时间(FILEDATETIME...
  • 今天我们来看看如何利用DOS批处理结合EXCEL来实现高效办公吧。01我们来看个简单的例子:任务要求:将c:\tmp\data.txt 打开、分列处理。筛选出零库存。另存为0库存报表.xlsx在d:\data\temp\创建以当前日期使命的...

    上次节课我们简单介绍了下DOS批处理。我们学习DOS批处理是为了实现更高效更智能的办公。今天我们来看看如何利用DOS批处理结合EXCEL来实现高效办公吧。

    01

    我们来看个简单的例子:

    任务要求:

    将c:\tmp\data.txt 打开、分列处理。筛选出零库存。另存为0库存报表.xlsx在d:\data\temp\创建以当前日期使命的文件夹将生成的0库存报表.xlsx 移动到d:\data\temp\当前日期文件夹

    02

    本例实现步骤:

    在C:\tmp\创建文本文件——生成0库存报表.txt

    编写如下批处理脚本代码:

    如图:

    1fd5201b-d51e-eb11-8da9-e4434bdf6706.jpeg

    将生成0库存报表.txt 扩展名改为.cmd或.bat ,本例改为: 生成0库存报表.cmd

    03

    生成0库存报表的VBA程序文档

    新建 生成0库存报表.xlsx

    按ALT+F11,进入VBE编程环境 ,编写如下VBA代码:

    如下图所示:

    21d5201b-d51e-eb11-8da9-e4434bdf6706.jpeg

    04

    将 生成0库存报表.xlsx 另存为 :生成0库存报表.xlsm。

    在excel 文件-选项-信任中心-宏设置-启用所有宏

    如下图所示:

    23d5201b-d51e-eb11-8da9-e4434bdf6706.jpeg

    至此就完成了本例的制作。

    鼠标双击 生成0库存报表.cmd 即可实现

    将c:\tmp\data.txt 打开、分列处理。筛选出零库存。另存为0库存报表.xlsx在d:\data\temp\创建以当前日期使命的文件夹将生成的0库存报表.xlsx 移动到d:\data\temp\当前日期文件夹

    25d5201b-d51e-eb11-8da9-e4434bdf6706.jpeg

    05

    思路

    本例是利用DOS批处理 调用包含宏或VBA代码的EXCEL文档实现高效办公。此方法是比较常见实用的方案希望对大家提高工作效率有所启发和帮助。

    喜欢我的文章请关注、转发、点赞、收藏,谢谢大家的支持!

    展开全文
  • 利用活动工作表中的所有图片的旧名与新名的对照,对指定文件夹中JPG图片进行重命名; 1.打开Excel文件,不要关闭; 2.再另外打开你自己需要操作的另一个Excel文件,并保持你要操作的工作表做为当前活动工作表; 3...
  • 写入Word文档当前文件夹中存在一个test的Word文档,文档中仅有一张六列三行的空表格,现在我们在Excel利用VBA向此Word文档中写入内容。当前文件夹打开一个Excel打开Visual Basic视图,输入以下代码:点击运行...
  • EXCEL编程VBA高级教程

    2015-04-16 11:40:55
    1.2EXCEL环境中基于应用程序自动化的优点................................................................................1 1.3录制简单的宏....................................................................
  • 写入Word文档当前文件夹中存在一个test的Word文档,文档中仅有一张六列三行的空表格,现在我们在Excel利用VBA向此Word文档中写入内容。当前文件夹打开一个Excel打开Visual Basic视图,输入以下代码:点击运行...
  • 写入Word文档当前文件夹中存在一个test的Word文档,文档中仅有一张六列三行的空表格,现在我们在Excel利用VBA向此Word文档中写入内容。当前文件夹打开一个Excel打开Visual Basic视图,输入以下代码:点击运行...
  • 二、利用VBA文件处理语句来处理文件 VBA包含了许多用于文件操作的语句和函数,可以满足绝大多数情况下的文件操作要求。下面我们按照操作目的进行一一介绍。(一)文件处理 1.Name 语句语法:Name oldpathname As ...
  • ★★Excel-VBA操作文件四大方法之二

    千次阅读 2008-09-12 17:29:00
    二、利用VBA文件处理语句来处理文件 VBA包含了许多用于文件操作的语句和函数,可以满足绝大多数情况下的文件操作要求。下面我们按照操作目的进行一一介绍。(一)文件处理 1.Name 语句语法:Name oldpathname As ...
  • 怎么批量将CSV格式转换为xlsx或xls格式...2、利用ExcelVBA 在你要转换的CSV文件夹中新建一个EXCEL文件并打开,创建一个宏。 然后在VBA通用窗体中输入下面代码: Sub 转换() Application.ScreenUpdating = False p...
  • 之前讲过怎样利用OPEN方法从多个Excel中获得数据,今天我们再来看一个类似的例子,这次我们不是从Excel中取数据,而是要对Excel进行一系列的操作,例如我们要对文件夹中的所有Excel的Sheet1的A1输入“战战如疯”,将...
  • 第16章介绍了使用VB开发AutoCAD的一些知识(将VBA代码转换到VB中,VB窗体和AutoCAD的焦点切换,使用ActiveXDLL封装带有窗体的VB程序)、搜索某个文件夹中所有的文件和VBAIDE的编程,利用这些知识,完全有可能开发出...
  • Excel百宝箱

    2012-10-27 17:09:21
    一个教导和辅助利用Excel的工具 公农双历查询】:生成多功能日历,可以查询所有节、假日和农历 【高级定位】:多功能选择(查找)工具。可以选择大于某值或者小于某值或者在某范围之间的值,文本定位时支持通配符。...
  • 2、在Excel打开开发工具–VBA; 3、利用如下宏代码【注意:此代码只适应于每行数据全在A列的情况】。 Sub DaoChu() Dim I As Integer For I = 1 To 2816 '根据总行数进行修改 Open "D:\按行导出\第" & I &a...
  • EXCEL集成工具箱V6.0

    2010-09-11 01:44:37
    Excel集成工具箱6.0是利用VBA(Visual Basic for Applications)语言编写的增强应用型插件。包括160个菜单功能和100个左右 自定义函数,集160个工具于一身,但体积小于15MB。当安装集成工具箱后,如果您使用Excel ...
  • Excel集成工具箱8.0是利用VBA(Visual Basic for Applications)语言编写的增强应用型插件。包括160个菜单功能和100个左右 自定义函数,集160个工具于一身,但体积小于16MB。当安装集成工具箱后,如果您使用Excel ...
  • Excel集成工具箱8.0是利用VBA(Visual Basic for Applications)语言编写的增强应用型插件。包括160个菜单功能和100个左右 自定义函数,集160个工具于一身,但体积小于15MB。当安装集成工具箱后,如果您使用Excel ...
  • Excel集成工具箱7.0是利用VBA(Visual Basic for Applications)语言编写的增强应用型插件。包括160个菜单功能和100个左右自定义函数,集160个工具于一身,但体积小于15MB。当安装集成工具箱后,如果您使用Excel ...
  • 上节课我们讲了怎么用VBA代码实现弹出一个打开对话框,让用户自行选择文件夹,本节课我们分享下,如何利用VBA代码实现弹出一个对话框,可以让用户在某个具体的文件夹中选择文件,点击确定以后,打开选择好的文件。...
  • 可用数据文件(能被Excel 97打开);Oracle 8.1.x表格空间文件 DBX:DataBearn图像;Microsoft Visual FoxPro表格文件 DCT:Microsoft Visual FoxPro数据库容器 DCU:Delphi编译单元文件 DCX:Microsoft Visual...
  • 13.4.2 在Access中调用Excel 402 13.4.3 在Access中调用Microsoft Graph 404 13.4.4 在Access中调用Microsoft Project 407 13.5 使用自动化功能在Microsoft Project中驱动Access 410 13.6 应用自动化功能在...
  • aspnet公共类cs文件.rar

    2020-07-16 11:07:28
    Excel操作辅助类(无需VBA引用)(ExcelHelper.cs)利用VBA对象,导出DataView到一个Excel文档中的Excel辅助类(Export2Excel.cs)关联文件(ExtensionAttachUtil.cs)注册文件关联的辅助类(FileAssociationsHelper.cs...
  • 1517.3.2 链接Excel工作表 1567.4 使用Microsoft Outlook和Exchange 文件夹 1567.4.1 用Outlook导出和导入Jet 4.0表 1577.4.2 使用Exchange/Outlook向导的链接 1597.5 导入文本文件 1607.5.1 使用导入文本向导 1617....
  • 382.5 探索窗体设计视图和VBA类模块 392.6 现实世界—所学知识的透视 40第3章 Access导航 423.1 理解Access功能和模式 423.1.1 定义Access功能 423.1.2 定义Access操作模式 443.2 理解Access的表显示 443.2.1 最大化...
  • 382.5 探索窗体设计视图和VBA类模块 392.6 现实世界—所学知识的透视 40第3章 Access导航 423.1 理解Access功能和模式 423.1.1 定义Access功能 423.1.2 定义Access操作模式 443.2 理解Access的表显示 443.2.1 最大化...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

利用excelvba打开文件夹