Excel VBA入门(九)操作工作薄】的更多相关文章

虽然我前面讲过,在VBA中操作工作薄并不是件明智的事,但有些时候,还是避免不了要这么做.绝大多数情况下,我们要做的是获取到某个工作薄对象,并以此来获得其中的工作表对象,然后再对工作表中的数据进行处理.而后面这一部分(操作工作表)在前面已经讲过了,所以本章只讲如何在VBA中打开.关闭工作薄,以及介绍两个常用的工作薄对象.在VBA中打开工作薄有两种方法:显式打开及隐式打开. 1. 显式打开 显式打开即跟我们手动双击打开一个Excel文件一样,可以看到工作薄的内容,可以在里面进行各种操作.代码及示例如…
本章是本系列教程的重点.但我觉得应该不是难点.从第零章开始到学完本章,应该可以把VBA用于实战中了. Excel对象主要有4个: 工作薄 Workbook 工作表 Worksheet 单元格区域 Range 单元格 Cell 这里我只讲后面3个,不讲工作薄.原因有2点: 第零章里面讲过,工作薄其实就是一个Excel文件.我不建议直接操作Excel文件.因为文件属性被更改的机率高.比如修改了文件名,或者文件被移动到其它地方去了,这样的话,写死的VBA代码就不管用了.这是主要原因 学完本章,或者后面…
本文基于以下文件 http://pan.baidu.com/s/1nvJtsu9 (部分)内容预览: 1. 边框样式 Sub cell_format() Dim sht As Worksheet Dim rng As Range Set sht = Worksheets("Parameter") Set rng = sht.Range("B2:C20") ' 设置边框格式 ' 这是常规的实线.细线,默认颜色为黑色 rng.Borders.LineStyle = xl…
系统性的知识前面已经讲完,从本章开始,本系列教程涉及的将会是一些相对凌散的内容. 1. 注释 代码注释是一件利人利己的事,为了方便自己在代码需要更新修改时,依然能够快速地看懂自己完的每一行代码到底是什么意思有何用处,在关键点加上代码注释是很有必要的.如果要让别人也能看懂自己的代码,那么注释更是不可或缺的. VBA中有两种注释的方法,其一是使用单引号,另一种是Rem.在单引号后面或Rem后面的所有内容,在程序运行时都不会被执行,它们就是注释的内容.通常注释的内容会被用其它颜色标识.如下: 有点不方…
前面讲过,VBA代码有两种组织形式,一种就是过程(前面的示例中都在使用),另一种就是函数.其实过程和函数有很多相同之处,除了使用的关键字不同之外,还有不同的是: 函数有返回值,过程没有 函数可以在Excel表格中像一般的Excel函数那样使用,但过程不可以 过程可以指定给Excel表格中的按钮或者图片等对象,但是函数不可以 函数只能在被调用时执行,比如在过程中调用,或者在另一个函数中调用,或者在Excel表格中调用.但不能直接执行,而过程是可以的 虽然可以把所有代码都放在一个过程,或者一个函数里…
所谓循环控制,即在循环执行一段代码,用于完成一些重复性任务. VBA中的循环控制语句主要有3种:for.while.loop.对于大多数人来说,for的使用频率最高,而我个人也觉得for是最为灵活的,在很多场合下都可以使用,相较while和loop,其逻辑也再加清晰,更便于对循环进行控制. 1. For循环 for循环有两种形式,一种为明确地知道要循环的次数的,比如从1到10循环执行10次:另一种则用于循环历遍某个集合对象,这个对象有多少个单位就循环执行多少次,可以视为是未知循环次数的. ① 循…
VBA中的流程控制分为两种,其一是条件结构式的,即根据条件判断的结果去选择性执行相应的语句(块):另一种是循环,即循环地执行语句(块).本节介绍第一种. 1. IF if 语句其实包含有几种形式: ① If...Then...End If 其格式为: If 逻辑表达式 Then ' 如果逻辑表达式为真,则执行这里的语句 End if 例如: If 8 > 5 Then Debug.Print "Yes" End If 输出结果为:Yes ② If...Then...Else...…
与其它的编程语言一样,VBA也有它自己的数据类型.讲到数据类型,就离不开"变量"与"常量"这两个概念,变量与常量,都是用于保存数据的.顾名思义,"变量"是会变的,即它的值是可以改变的:而常量,则它的值通常是固定不变的. 定义数据类型的优点有2个: 便于内存管理 便于程序进行计算(数值型)和其它使用(非数值型) VBA中的基本数据类型有多种,但常用到的只有其中一半左右. 0. 变量的定义 VBA中用 Dim 变量名 As 数据类型 的格式来定义基本…
数组和字典也是VBA的常用到数据类型之一.但是我翻了有四五本VBA教程相关的书,里面都没有介绍到字典,数组到是在介绍数据类型时有介绍,而并没有提到字典. 事实上,字典不是VBA内置的类型,它是Windows脚本语言的.但其实字典在VBA中也是非常重要的,它非常适用于需要进行非重复性数据的操作.我多次需要使用到字典,但很少用到数组. 1. 数组 如果有学过其它编程语言,应该对数组不陌生.其实数组就是多个变量的集合,而且它是有顺序的,通过索引来访问一个数组中的各个值. 但应该记住的是:数组中的各个数…
本教程所用系统环境: Windows 10 Excel 2013 1. 添加开发工具 打开Excel,依然找到"文件"->"选项"->"自定义功能区",在右侧主选项卡下面的选项中,找到"开发工具",在前面的小框打勾,确定.返回Excel,即可在菜单栏右侧看到有开发工具: 2. 使用VBE VBE即VBA的编辑环境.通常有两种方式可以进入 菜单栏 -> 开发工具 -> Visual Basic 快捷键:A…
VBA 中的用户窗体就是指带 UI 的用户界面,在运行的时候会单独弹出一个窗口,类似于在 windows 系统中运行的一个可执行程序一样(这个说法不太严谨,因为可执行程序也可能是只有命令窗口而没有 UI 的).再具体一点,就是一个窗口界面当中,有可能会包含有文本框.复选框.单选按钮.下拉列表,就如在网页中填写的表单一样.再具体一点,就是如下图这样的: 1. 用户界面设计 如上图,UI 设计的部分其实是很简单的,微软的特色,直接拖拉拽就可以实现了.而每一个控件(或者称为元素,也即放进窗体中的各种按…
一.Excel VBA 表格的操作1. Excel表格的指定以及表格属性的设置 Sub main() '把表格B2的值改为"VBA Range和Cells函数" Range("B2").Value = "VBA Range和Cells函数" '把D4:E6范围内的每一个表格的值都改为"Excel VBA" Range("D4:E5").Value = "Excel VBA" End Su…
Private Sub RegExp_Replace() Dim RegExp As Object Dim SearchRange As Range, Cell As Range '此处定义正则表达式 Set RegExp = CreateObject("vbscript.regexp") RegExp.Pattern = "[0-9]{5}" '此处指定查找范围 Set SearchRange = ActiveSheet.Range("A1:A99&qu…
前提:工作薄首行不能有合并的单元格 准备工作:将要合并的工作簿放在一个文件夹里面,文件夹中不能有乱七八糟的东西,只能有你要合并的工作薄 操作步骤:在此文件夹下创建Excel表格并打开,按下alt+F11打VBA编辑器,在菜单栏中[插入]=>[模块],粘贴下方代码即可. 代码: Sub 合并当前目录下所有工作簿() Dim Wb As Workbook Application.ScreenUpdating = False MyPath = ActiveWorkbook.Path MyName =…
我们项目管理有两个工作薄,一个里面有多个表,每天建一个,记录当天项目,另一个工作薄,有多个表,其中一个是所有项目汇总. 以前都是第一个工作薄一个表做完,再复制粘贴到第二个工作薄的汇总表中. 写了个VBA宏完成这个工作. Sub CopyToOtherBook() ' ' copyToOtheBook Macro ' 宏由 cuianzhu 录制,时间: 2013-6-18 ' ' Dim fname As String Dim maxLine As Integer Dim maxLineS As…
一.文件格式 要使用VBA,excel文件必须保存为启用宏的工作簿,即xlsm格式. 二.启动VBA编辑器 打开工作簿后,要启动VBA编辑器,有两种方法,一是在工作表的名字上面点击右键,选择“查看代码”,另一种就是快捷键Alt+F11 三.工程资源管理器简介 VBA编辑器右边的树形目录就是工程资源管理器,如下图,列示了一个工程(VBAProject)及其下面的各个对象.一个工作簿就是一个工程,下面的sheet1就代表一张工作表,双击它可以查看和编辑这张工作表的代码,在里面实现各种功能,ThisW…
VBE有丰富的调试工具, 比如立即窗口, 本地窗口, 监视窗口, 断点调试... 第一个博文中已经讲过调试的基本操作: 设置断点, F5运行, F8逐条运行 断点就是程序中暂停停止运行的位置, 设置断点之后, 当运行到断点行所在的语句程序就进入中断模式, 此时在本地窗口和立即窗口中 可以查看变量以及对象的属性值. 1. debug 介绍: 调试工具的基石 debug.print x   在不中断程序的情况下输出x 的值 debug.assert 与if 类似, 用与判断一个条件是否成立, 但是i…
三. Excel 工作薄(Book)的操作1. Excel 创建工作薄(Book) Sub addWorkbook() Workbooks.Add End Sub 2. Excel 打开工作薄(Book) 方法名 参数 参数值 说明 Open Filename 文件名 要打开的工作薄文件名 Password 密码 文件密码(打开加密文件时使用) WriteResPassword 密码 指定文件的修改密码 ReadOnly 只读模式 指定是否以只读模式打开文件,默认为FALSE '打开文件 Sub…
原文地址 本文的对象是:有一定Excel VBA基础,对Word VBA还没有什么认识,想在Excel中通过VBA操作Word还有困难的人.   一.新建Word引用 需要首先创建一个对 Word Application 对象的引用.在VBA中,工具-引用,选取“MicroSoft Word 11.0 Object Library”. 方法一.New Word.Application     Dim Wordapp As Word.Application     Set Wordapp = Ne…
Excel在数据领域万物互联的特性,其中一个使用场景是连接非本工作薄的外部性文件内容,如其他Excel工作薄文件里的内容或直接用OLE对象的方式嵌入一个文件链接,使其在不离开Excel环境,也可提供类似快捷方式一样轻松访问到其他文件(可能在PPT场景中更多一些).Excel催化剂提供较原生功能更方便的管理外部链接的方式,使批量管理这些外部链接更轻松,使用体验更佳. 使用场景 Excel外部链接的方式,让当前的工作薄有能力访问外部独立文件内容,因需要与外界独立文件连接,文件的连接方式以文件绝对路径…
合并工作薄.工作表功能,几乎每一款Excel插件都提供,而且系列衍生功能甚至有多达10多个.今天Excel催化剂重拾武器,在现有众多插件没提供到位的部分场景中,给予支持和补充,做到人有我优,人无我有的境地,重新定义怎样才算是一个精品级功能. 背景介绍 Excel催化剂一直留空没开发工作薄功能,并非因其太复杂或无需求.正是因为需求很大,而现有的插件都有提供. 最重要的是连微软官方都提供了此功能,使用PowerQuery的ETL功能,无论从易用性还是功能强大性来说,秒杀市面一切的第3方开发的功能.…
一个工作薄有多个相同类型的工作表,然后想通过批量操作,把每个工作表都另存为一个工作薄文件,这个批量拆分工作薄,绝大多数插件都有此功能,就如懂点VBA的高级用户也常常有点不屑于用插件来完成,自己写向行VBA代码都已经可以实现.今天Excel催化剂保持人有我优的标准,给大家带来堪称Excel界的单反一般的新体验,极丰富灵活的可配置功能,玩转拆分工作薄的一切场景需要. 文章出处说明 原文在简书上发表,再同步到Excel催化剂微信公众号或其他平台上,文章后续有修改和更新将在简书上操作, 其他平台不作同步…
Excel催化剂在完善了数据分析场景的插件需求后,决定再补充一些日常绝大多数Excel用户同样可以使用到的小功能,欢迎小白入场,在不违背太多Excel最佳实践的前提下,Excel催化剂乐意为广大Excel用户们增添有价值和高频使用的快捷操作类功能,欢迎多多使用并反馈,提出更好的建议,一起完善Excel催化剂的功能矩阵. 文章出处说明 原文在简书上发表,再同步到Excel催化剂微信公众号或其他平台上,文章后续有修改和更新将在简书上操作, 其他平台不作同步修改更新,因此建议阅读其他出处的文章时,尽可…
在传统的VBA开发中,若是用的是普通加载项方法,是可以存储数据在xlam上的,若用的是Com加载项方法同时是Addins程序级别的项目开发的,配置文件没法保存到工作薄中,一般另外用配置文件来存放供调用. 但无论以上两种方式都会带来一点缺陷,若用户配置好自己的数据,这些配置数据只能保存到自己电脑上,无法在文件共享给其他人使用时,配置文件一并传递过去. 当然一个折衷的方式是,在Excel文件中新建一个工作表并隐藏它来实现配置数据跟着工作薄一起带走. 这种方式有一缺点是,在用户工作薄里进行数据操作,用…
一般遇到标题这样的情况,许多人可能会一个一个的复制粘贴,其实完全不必那么麻烦. 你可以按以下步骤来操作: 第一步:打开所有要操作的excel工作薄\n 第二步:按住Shift键,选择所有要复制的工作表,在选择的工作表上单击右键\n 第三步:在弹出的菜单中,选择移动或复制(M)...选项.\n 第四步:在新弹出的窗口中选择转移到的目标工作薄,以及放置的位置.点击确定,转移成功.\n 完毕!…
帮朋友来写个Excel VBA 以前写过ASP,所以对vb略微熟悉,但VBA 没有仔细研究过. 以前只研究过 vba 写一个 计算个人所得税的程序. 这次写的功能也算是简单,但也耗费了两天的功夫. 需求: 1 从[操作]表中,查找最后一行的数据,每一列 都为关键字 2 遍历这些关键字,从[总表]中查询这个关键字,把这一行后面的内容复制到 [预算]表中去 3 把[操作]中制定内容复制到[信息统计]中 Function Get操作NullLine() ' '从 操作表 获取最后一个有数据下面的空行…
excel如何将一个工作薄中的工作表生成独立的工作薄  '用vba代码 Sub 另存所有工作表为工作簿() Dim sht As Worksheet Application.ScreenUpdating = False ipath = ThisWorkbook.Path & "\" For Each sht In Sheets sht.Copy ActiveWorkbook.SaveAs ipath & sht.Name & ".xls" '…
前言: 代码都是建立在实际需求上的,上周做完一个调外部电影券接口的项目,这周产品又要excel表格,大致内容为:券所属影院.图片URL.等信息制作为excel表格,把每次同步过来的数据给他分析. jxl:全称JavaExcelAPI,是一个用来读写修改EXCEL的JAVA开源类库,使用起来相对简单. jar包下载地址: http://www.andykhan.com/jexcelapi/download.html 下面是刚写完的一个简单不能再简单的Demo了,没有任何附加样式,下班了,样式这周末…
//1.引用单元 uses ComObj; //2.建立工作薄与工作表 procedure TForm1.Button1Click(Sender: TObject); Var ExcelApp,Sheet:Variant; begin ExcelApp:=createoleobject('excel.application'); ExcelApp.workbooks.add(); ExcelApp.worksheets.add; ExcelApp.worksheets.add; ExcelApp…