您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页VBA教程

VBA教程

来源:化拓教育网
一. 宏和VBA

宏:用Excel录制的动作称作“宏”。

VBA(Visual Basic for Application):手动编写的控制Excel的代码。 实例演示:

假设我们的Excel报告经常使用一种适合公司风格的专用字体:隶书,16号字,蓝色,粗体。如果手工操作设置这些格式,

至少需要单击四五次鼠标,下面通过录制一个宏来

完成这些操作并把这些操作指定到一个快捷键上。

1. 首先选择一个需要设置格式的单元格区域,单击“开发工具—>录制宏”命令,开始录

制我们的Excel操作。

如果Excel界面中没有找到“开发工具”标签,请按以下步骤操作:

1) 单击“文件”—“选项”打开“Excel选项”窗口。

2) 在“自定义功能区”选项中,勾选右侧列表中的“开发工具”。

3) 单击“确定”,功能区中即可显示“开发工具”选项卡,其中包含了宏命令。

2. 此时弹出“录制新宏”对话框,在该对话框中,可以给即将录制的宏去一个新的名字。

在这里使用Excel提供的默认名称,如下图所示:

在“快捷键”选项中,这里把即将录制的宏指定给快捷键组合“Ctrl+M”,需要注意的

是,由于很多与Ctrl键组合的字母已经被Excel使用为内置快捷键,因此在指定快捷键时

要尽量避免和内置快捷键发生冲突。

在“保存在”选项中需要告诉Excel,即将录制的宏保存在哪里,这里有三个选项: (1) 个人宏工作簿

如果把录制的宏保存在“个人宏工作簿”中,那么该宏在所有本机上打开的Excel文件中都能使用,“个人宏工作簿”在正常情况下是隐藏的,并随着Excel的启动而开启。

(2) 新工作簿

如果把录制的宏保存在“新工作簿”中,那么录制的宏会保存在一个新建的工作簿中,当前工作簿并不保存录制宏所自动生成的VBA代码。 (3) 当前工作簿

如果把录制的宏保存在“当前工作簿”中,那么录制宏后所自动生成的VBA代码将保存在当前工作簿文件中,可以随着当前文件分发给其他用户。

注意:如果选择了“当前工作簿”这个选项,保存当前文件时,必须保存为“.xlsm格式(表示该文件中含有宏代码)。

3. 我们在这里选择把宏保存在“个人宏工作簿中”,然后设置所选单元格格式为:隶书,

16号字,蓝色,粗体。全部动作完成后,单击“开发工具—>停止录制”命令结束录制过程。此时,我们刚才录制的宏已经被保存到了所选择的“个人宏工作簿”中了,并且指定了用快捷键“Ctrl+M”来调用它,如下图所示。

4. 在Excel其他任意一个单元格中输入任意字符,选中这些字符,然后按下快捷键Ctrl+M,

这时会发现,选中的单元格区域变成了我们所期望的格式。

5. 我们可以查看录制的宏转变成的VBA语言,可以按照如下方式操作。

(1) 单击“开发工具—>Visual Basic”命令。此时进入VBA编程环境。

(2) 由于我们把宏保存在了个人宏工作簿,因此在VBA编程环境界面的左侧单击

VBAProject(PERSONAL.XLSB)下方的“模块”文件夹,在展开的列表中单击“模块1”,此时在右边的VBA代码编辑界面显示的就是我们录制的宏所对应的VBA代码.

我们录制的宏所对应的VBA

Sub 宏1() ' 宏1 宏 ' 快捷键: Ctrl+M

Selection.Font.Italic = False Selection.Font.Bold = False Selection.Font.Bold = True With Selection.Font .Name = \"宋体\" .Size = 16

.Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False

.Underline = xlUnderlineStyleNone .ThemeColor = xlThemeColorLight1 .TintAndShade = 0

.ThemeFont = xlThemeFontMinor End With

With Selection.Font .Name = \"华文隶书\" .Size = 16

.Strikethrough = False .Superscript = False

代码如下:

.Subscript = False .OutlineFont = False .Shadow = False

.Underline = xlUnderlineStyleNone .ThemeColor = xlThemeColorLight1 .TintAndShade = 0

.ThemeFont = xlThemeFontNone End With

With Selection.Font .Color = -1003520 .TintAndShade = 0 End With End Sub

用Excel录制宏所生成的VBA语句往往过于啰嗦,如果我们自己编写VBA代码的话,

完全可以用如下非常精简的语言完成个很难过同样的操作。

Sub 宏1()

With Selection.Font

.Size=16 .Name=“隶书” .Bold=“True”

.ThemeColor=xlThemeColorAccentl

End With

End Sub

二.Excel报告自动化

实例演示:

假设你是某家公司的管理人员,每天需要汇总一下前一天的产品出货情况,前一天的产

品出货数据由公司的业务系统在每天凌晨1点钟以文本文件的形式保存到共享磁盘空间的指定位置。你每天早晨的第一件事就是对这些数据进行分析汇总,第一时间报告给老板,以便老板进行当天的生产安排。

为了避免无关细节的干扰,下面对问题进行了最大程度的简化,我们只要明白其中的逻

辑就可以了。在实际工作中,我们可以根据具体情况无限扩展。

如图2-1所示的数据就是在每天凌晨1点保存到共享磁盘空间指定位置的上的文本文

件,新的数据会以相同的文件名覆盖旧的数据。

图2-1

如图2-2所示是老板需要的数据分析汇总结果,注意这只是简化的示例,真实的情况

是,我们可能需要对原始数据做各种各样的分析汇总并辅以各种图表使数据可视化。而这些都可以在保持数据的连接性完整的情况下扩展达成的。

图2-2

下面的任务是,建立Excel与数据源的链接,然后对数据进行分析处理,最后利用Excel

录制的“宏”和自行编写的VBA代码(只有一句)让整个工作自动化。

具体实现过程:

(1)导入文本数据,此时需要注意,为了避免每次刷新数据时出现选择文本文件的对话框,终端自动化进程,需要作如下设置。

将鼠标放置在数据到如需的任意单元格上,单击“数据—>连接—属性”命令,弹出

“外部数据区域属性”对话框,在该对话框中,取消勾选“刷新时提示文件名”复选框。数据导入到Excel后效果如图2-3所示。

图2-3

(2)在导入的文本数据的基础上制作数据透视表、图表或其他统计图表。为说明问题 简便,我们只做了一个数据透视表(鼠标选中数据区域,单击“插入—>数据透视表”),如图2-4所示。

图2-4

(3)录制宏。我们通过录制Excel宏把“刷新数据源”和“刷新数据透视表”这两个动作自动化完成。单击“开发工具—>录制宏”命令。在弹出的“录制新宏”对话框的“宏名”的位置给即将录制的宏取一个有意义的名字,在这里我们取名“myMacro”。

在“录制新宏”对话框的“保存在”选项处,我们选择把即将录制的宏保存在“当工作

簿”,这是因为我们只希望在当前工作簿中执行该宏,如图2-5所示。

图2-5

(4)从现在开始,我们对Excel的所有操作都会被Excel录制宏功能记录在案,因此 为了使录制的宏简洁高效,我们必须认真对待每一步操作,尽量避免任何多余的操作。

在这一步里,我们只需要录制两个动作,即“刷新数据源”和“刷新数据透视表”。 首先选择Sheet1工作表,把鼠标置于导入数据区域的任意单元格,然后到单击“数据

—>连接—>全部刷新”命令刷新数据源。

选择Sheet2工作表,把鼠标置于数据透视表区域的任意一个单元格,然后单击“数据

透视表工具—>选项—>数据—>刷新”命令,数据透视表刷新完毕,如图2-6所示。此时,Excel宏的两个动作录制结束。

图2-6

(5) 结束录制宏。单击“开发工具—>停止录制”命令结束录制宏。

(6) 查看刚刚录制的宏。单击“开发工具—> Visual Basic”命令,打开Visual Basic 编辑界面。

双击“模块”文件夹,然后双击“模块1”,即可看到Excel刚刚录制的Excel宏的后

台VBA代码,如图2-7所示。

图2-7

下面解释一下每一句代码的含义。

Sheets(\"Sheet1\").Select——选择名称为“Sheet1”的工作表。

ActiveWorkbook.RefreshAll——刷新当前工作簿的所有外部链接的数据源。

Sub myMacro ()——我们给宏取的名字,录制的宏在此开始。 myMacro 宏——Excel 录制宏时自动添加的注释。

Sheets(\"Sheet2\").Select——选择名称为\"Sheet2\"的工作表。

Range(\"B4\").Select——因为上一句代码选择了\"Sheet2\",因此这一句选取的是\"Sheet2\"的B4单元格,该单元格位于数据透视标范围内。

ActiveSheet.PivotTables(\"数据透视表1\").PivotCache.Refresh——刷新“数据透视表1”,我们制作数据透视表时,Excel会自动给每个数据透视表取一个名字。 End Sub——录制的宏在此结束。

(7) 让Excel文件打开时自动执行宏。我们在VBA编辑界面左侧的Excel对象浏览 器里双击“ThisWorkbook”,进入“ThisWorkbook”的代码编辑界面。在该界面的右侧代码编辑区的上方单击写有“通用”字样的下拉框,从中选择“Workbook”选项,如图2-8所示。

图2-8

此时Excel自动生成以“Private Sub Workbook_Open()”开始,以“End Sub”结束的Excel宏开始和结束标识。该Excel宏标识表示,当Excel文件打开时(即Workbook_Open()),将执行“Private Sub Workbook_Open()”和End Sub”之间的所有动作。

我们的目的是让Excel文件打开时自动执行我们刚刚录制的宏“myMacro”,因此我们在两句代码之间输入“Call myMacro”,表示我们要调用执行我们刚刚录制的宏“myMacro”,如图2-9所示。

图2-9

(8)所有工作完成后,保存文件。单击Excel VBA编辑界面上的保存图标,在弹出的“另存为”对话框中选择保存位置,在“保存类型”出必须选择“Excel启用宏的工作簿(*.xlsm)”类型,然后单击“保存”按钮。

(9)打开刚刚保存的启用了宏的工作簿,默认情况下会弹出一个安全警告框,这里单击“启用宏”按钮,可以看到Excel执行的效果。

在默认情况下弹出的安全警告框可以在Excel选项里设置为不显示,设置方法如下:选择“文件—>信任中心”命令,打开“信任中心”对话框,如图2-11所示。

图2-10

在“信任中心”的对话框的左侧,选择“受信任的位置”,在对话框右下角单击“添加

新的位置”按钮,再打开的“Microsoft Office 受信任的位置”对话框中选择受信任的文件夹,如果该文件夹下的子文件夹也受信任,则需要同时勾选“同时信任此位置的子文件夹”复选框。然后单击“确定”按钮关闭所有对话框,如图2-11所示。现在,打开文件夹下的含有宏或VBA的Excel文件时,都不会弹出安全警告框了。

图2-11

如果想修改Excel中的文件代码或者暂时不想执行Excel宏可以按住Shift键双击打开文件即可忽略自动执行的宏。

为了证明我们的宏确实起了作用,下面修改数据源文本文件,把出货数量全部由1改

成10,然后保存关闭文本文件。现在再次双击打开我们刚刚设计的Excel文件,此时可以看到Excel界面快速闪动两下后,停留在了数据透视表页面,我们发现,新的数据汇总结果已经在那里了,如图2-12所示。

注意:演示的Excel版本为2010版。

图2-12

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务