首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

VBA编写笔记:常用的对象和方法

Application.FileDialog 属性 返回一个 FileDialog 对象,该对象表示文件对话框的实例 TypeName 函数 返回一个 String,提供有关变量的信息。...TypeName(varname),必要的 varname 参数是一个 Variant,它包含用户定义类型变量之外的任何变量。...非易失性函数只在输入变量改变时才重新计算,若不用于计算工作表单元格的用户自定义函数,则此方法无效。 记录   GetObject获取的表格对象是多应用模式。...VB数组维度的问题 Ubound(array,dimenssion),获取指定数组的指定维度的维数上限。 Lbound(array,dimenssion),获取指定数组的指定维度的维下限。...VBScript.RegExp,正则对象 MSXML2.XmlHttp,用于HTTP获取数据(GET、POST) WinHttp.WinHttpRequest.5.1,用于HTTP获取数据(GET、POST) 踩坑 模块变量需要用

1.7K20

进击的恶意文档之 VBA 进阶之旅

例如一个 docm 文件,文件头的魔是 504b0304(ZIP 文件的魔),修改其后缀为 doc 后,文件头的魔不变,且能够正常执行。...而老版的 doc 文件头的魔是d0cf11e(docfile 的十六进制表示 ^_^),所以我们可以通过文件后缀和魔是否匹配来判断一个文档是不是恶意的。...,源头上讲 Word 是一个 zip 文件,解压之后的 vbaProject.bin 包含着要执行的信息,也是杀软的重点关注对象,可以修改该文件名用于规避检测,步骤分以下三步 1、将“vbaProject.bin...”替换为“txt” 二、很多诱饵文档喜欢在 VBA 启动脚本程序执行 ps 或者网络上下载一段 shellcode 或恶意程序等等,这样非常容易被杀软的行为拦截拦住,同时沙箱可以根据进程链和流量判定该...三、动态检测沙箱可以利用 dotnet 属性以及 WMI 来检测 Office:是否含有最近的文档,正在运行的任务,特定进程检查(vbox,vmware 等等),检测备用数据流(ADS),判断计算机是否是域的一部分

4.4K30
您找到你想要的搜索结果了吗?
是的
没有找到

VBA编程With语句

With 语句 上节涉及一个对象的执行多个操作时,如多条属性时,每条属性的设置都具体的写出对象的完整形式,如上节的单元格字体属性的例子: 在代码如果是写入单元格字体完整形式,worksheets(...,而录制后得到的代码,通常都有with语句,如下图: 了解with语句,有助于查看录制的代码,同时在以后编写代码时,同样的情形下可以用于简化代码。...VBA 代码运行时间 上面提到with语句可以提高vba代码的执行效率,代码的执行效率是后期编写程序时需要注意的问题。...下面简单说下在程序通过代码,如何记录程序运行的时间。以一段繁琐的代码为例,新建10张工作表,并修改工作表单元格字体,看代码运行时间。...原理很简单,即首先把当前时间赋值给变量,作为初始时间,在程序运行代码的最后,用当前时间减去初始时间得到的时间差,即是vba程序运行时间,代码如下: Sub test() Dim star As Double

2.7K20

数据分析必备技能:数据透视表使用教程

本文首先手把手的教你如何在 Excel 手动构建一个基本的数据透视表,最后用 VBA 展示如何自动化这一过程。...注意观察对话框的各种选项,这里我们都采用默认值 点击“确定”后,一个空的数据透视表出现在了新工作表: ?...下面用不同的方法加入两个自定义字段: 1.简单运算的公式 首先简单计算一下各队的场均进球: 点击数据透视表的任意位置,以激活“数据透视表分析” Ribbon 标签 点击“字段、项目和集”按钮,在弹出的下拉菜单中选择...本例中使用 VBA 脚本完成与上述例子一样的任务,对于 VBA 语言仅做简单注释,想更多了解可以自行查阅官方的文档等 1.一键生成 此处我们放置一个按钮在源数据所在的数据表,用于每次点击自动生成一个数据透视表...在 Ribbon 的“开发工具”中点击按钮 在界面任意位置框选一个按钮的尺寸 释放鼠标后弹出“指定”对话框 此处我们将“名称”框填入 ThisWorkbook.onCreatePovit “的位置

4.5K20

VBA变量5年踩坑吐血精华总结

bottom(最小值)和top(最大值)之间的随机,且每次Excel编辑后该公式都会自动刷新返回的随机; 我们一起思考一下,这样一个需求用第02篇(todo文章传输门)分享的能够实现吗?...如果按照上面这个思路,是不是我们需要在每行后面都加上一个「查看答案」的按钮,然后关联每一个。 image.png 如果是这样的话,那么还学什么VBA,直接手工输入,它不香吗?...是的,那么我们用VBA如何实现呢? image.png 我们观察发现:行号是变化的,而且是「正向递增加1」的规律。 在VBA,我们将这种根据需要能够随时变化的称为变量。...以上我们使用VBA变量使我们的程序更加的灵活。...但是这样操作,有以下几点缺点: 1)程序写起来特别的长,非常容易出错; 2)代码不易维护,修改难度大; 3)VBA内存读取变量的时间要远低于读取单元格的时间; 因此,可以总结使用变量有以下好处(拿小本本记好

1.6K00

Agent Tesla新感染链解析

感染过程 鱼叉邮件附件 感染链 RTF 文件开始,该文件作为鱼叉邮件的附件进行发送。受害者执行后会向用户连续显示 5 个启用的请求。...这五个请求时由 RTF 带有的 5 个嵌入式 OLE 对象产生的,每个对象都包含一个 OOXML。每个 OOXML 内部都含有一个 VBA ,当用户启用宏代码时,其中一个将会被执行。...每个 OOXML VBA 代码都很短,而且带有很多空格和换行符来阻碍研究人员进行分析。 ? 为了阻止对代码进行静态分析,代码使用的变量包含在每个 OOXML 中表格的特定单元格内。...其中一个主要变量是较长的混淆字符串,在 OOXML 的 xl/sharedStrings.xml 。...实际上,诸如 oletools 和 oledump 之类的静态分析工具无助于提供有关 VBA 代码的任何详细信息。此外,使用 ViperMonkey 对 VBA 进行动态分析也并不成功。

1.4K30

啰哩啰嗦地讲透VBA引用单元格区域的18个有用方法--Cell属性和Offset属性

>>>上篇文章:啰哩啰嗦地讲透VBA引用单元格区域的18个有用方法--Range属性 使用Cells属性引用Range对象 VBA没有Cell对象,有Worksheet.Cells属性和Range.Cells...Cells属性的语法 Cells属性的基本语法是: 表达式.Cells(行号,列号) 其中,表达式是代表VBA对象的变量。...然而,在Range.Offset属性的情形下,返回的Range对象位于指定区域起一定数量的行和列。 换句话说,返回的Range对象由以下因素决定: 1.基准区域,将作为偏移的基准。...3.要偏移基准区域的列。 其语法如下: 表达式.Offset(偏移行,偏称列) 其中,“表达式”是表示Range对象的变量。...为什么应该学会使用Range.Offset属性引用Range对象 Range.Offset属性在下列情形通常最有用: 1.使用变量而不是实际的数字作为参数 2.循环过程 录制时使用相对引用时,录制器也通常使用

3.1K40

VBA程序报错,用调试三法宝,bug不存在的

2.这些掌握了,你才敢说自己懂VBA 3.VBA变量5年踩坑吐血精华总结 4.VBA重要的强制申明,谁看谁明白 5.VBA掌握循环结构,包你效率提高500倍 6.精通VBA分支结构,少写程序100行...我们「鼠标右击」-「指定」,然后「指定」列表选择自己需要关联的即可。 image.png 「美化」探讨完毕,我们继续回到上面的案例。 2.VBA程序如何调试?...在VBA编辑器,依次点选「调试」-「逐语句」,当然最高效的方法是使用快捷键「F8」 image.png (4)鼠标悬停变量处,自动显示当前变量的值 在代码过程,我们将鼠标悬停在变量上,VBA编辑器将自动提示当前变量的取值...,比如:图中的鼠标悬停在「变量i」上,下方会自动显示当前「i = 3」 image.png 有些小伙伴,可能说,猴子这个悬停显示变量值的功能确实很贴心,你讲解的这个案例,只有一个变量,悬停很easy...「变量i」的值变化,在「表达式」文本框填入「i」,然后点击「确定」 image.png 然后,我们就可以看到在VBA编辑前底部会生成一个名为「监视窗口」的窗体,上面显示了监控的相关内容。

2.8K00

VBA程序报错,用调试三法宝,bug不存在的

经过我多年不眠不休的潜心研究,终于,研制出提升按钮颜值的方案: 首先,我们点选Excel选项卡的「插入」-「形状」-「矩形」-「圆角矩形」 然后,直接拖动绘制就好,绘制完成后,Excel会自动多一个...我们「鼠标右击」-「指定」,然后「指定」列表选择自己需要关联的即可。 「美化」探讨完毕,我们继续回到上面的案例。 2.VBA程序如何调试?...在VBA编辑器,依次点选「调试」-「逐语句」,当然最高效的方法是使用快捷键「F8」 (4)鼠标悬停变量处,自动显示当前变量的值 在代码过程,我们将鼠标悬停在变量上,VBA编辑器将自动提示当前变量的取值...,比如:图中的鼠标悬停在「变量i」上,下方会自动显示当前「i = 3」 有些小伙伴,可能说,猴子这个悬停显示变量值的功能确实很贴心,你讲解的这个案例,只有一个变量,悬停很easy。...(4)「添加监控」让VBA调试更贴心 我们在VBA选项卡依次点选「调试」-「添加监控」 在弹出的「添加监控」的表达式填写需要监视的内容即可,然后点击右侧「确定」按钮,比如:本案例需要监控「变量i」的值变化

22210

Excel之VBA简单编程

Excel之VBA简单编程 excel是一款很经典的数据分析的工具,里面包含了很多内置函数,但实际情况有时却复杂得多,而excel的编程提供了自定义函数的功能,正好有老师需要帮忙做一些数据分析,就学习了一下...文章目录 Excel之VBA简单编程 1、准备工作 2、VBA编程 2.1模块声明 2.2变量声明及赋值 2.3if-else结构 2.4循环结构 2.5比较运算符 2.6注释 3、常用功能 3.1...) 文件->选项->自定义功能区-> 这时候主选项卡就有开发工具项了 进入vba编辑 点击visual basic进入 在VBAProject上右键->插入->模块 出现一个编辑文件如下图...2、VBA编程 2.1模块声明   类似于一个程序,一个模块要有一个主程序入口即模块声明,如 Sub sname() ··· ··· End Sub 2.2变量声明及赋值   声明格式为: Dim...‘变量名称’ As ‘变量类型’   如 Dim i As Integer Dim str As String   赋值格式为: i = 3 str = “hello world!”

3.3K31

VBA数组(二)声明数组

一、数组的分类 1、按维度划分 在上节已经具体的介绍了VBA数组维度的概念。那么可以通过维度来划分数组,在VBA数组供支持最大60维的数组,最常用的就是一至三维数组。...2、按是否固定大小分 在使用数组之时,根据声明数组时数组的大小是否先固定,可以划分为静态数组和动态数组。 如果声明数组时即确定数组大小即为静态数组。...如果在声明数组不确定数组的大小,先不固定数组的大小,而在程序在运行时使用Redim语句重新定义数组大小即为动态数组。 两种数组的具体声明和使用方法,后面会进行详细介绍。...二、声明数组 在使用变量时,都需要先声明变量,同样在使用VBA数组时,首先也要声明数组,让系统在内存为它分配一片连续的内存空间。...4、声明动态数组 前面介绍静态数组和动态数组的区别,主要是在声明时是否确定数组的大小。下面简单介绍下动态数组的声明方式。

3.2K20

文科生也能学会的Excel VBA 编程入门

文章目录 VBA编程简介 准备工作 打开功能 打开“开发工具”选项卡 VBA编程 示例任务介绍 文件 全局 VBA编程简介 VBA编程是Office系列软件自带的编程功能,也就是说不只是Excel...创建主要有两种方法,一种是录制,也就是将人的一些操作录下来,需要的时候执行就可以自动重复这些操作;另一种就是本文要介绍的,通过VBA编程来自己写一个。...Sheet2.Range("A2") = maleCtr大家肯定都能猜到了,这是往Sheet2对应的单元格里填。...全局 上面我们提到,通过【Visual Basic】进入编程界面编写的是属于单个文件或Sheet的,如果我们想编写一个可以在所有文件运行的要怎么做呢?下面是具体做法。...仅仅是将代码复制过来是不够的,因为这个是共用的,代码Sheet1等变量的指代不明,不知道是哪个Excel文件的Sheet1,因此我们做些小的修改。

5K20

Excel 旧用户正成为恶意软件的目标

同时,Zloader的混淆技术利用Microsoft Office的Excel动态数据交换(DDE)字段和基于Windows的Visual Basic for Applications(VBA)对支持传统...接下来,嵌入Word文档的基于VBA的指令会读取精心构建的Excel电子表格单元以创建。这个将使用附加的VBA填充同一XLS文档的附加单元格,从而禁用Office的安全防御功能。...在这种情况下,与VBA的其他滥用案例一样,Zloader也会利用这种功能来创建恶意脚本。 Excel将记录用户执行的所有步骤,并将其保存为一个名为“process”的。...禁用Excel警告 恶意软件的开发人员通过在Word文档嵌入指令,Excel单元格中提取内容,实现了警告绕过。...接下来,Word文件会通过写入检索到的内容,在下载的Excel文件创建一个新的VBA模块。

4.6K10

攻击者如何使用 XLL 恶意软件感染系统

此类加载项背后的想法是它们包含高性能函数,并且可以通过应用程序编程接口 (API) Excel 工作表调用。...使这种技术变得危险的是,只需单击一下即可运行恶意软件,这与需要用户禁用 Microsoft Office 的受保护视图并启用内容的 VBA 不同。...数据在一个循环中解密,首先确定数据的位置和大小,然后使用 XOR 操作对其进行去混淆处理。每 8 个字节后,密钥被相乘并添加到两个不同的常量。 图 9 – 自定义 Excel 加载项的解密循环。...然后,恶意软件使用解析后的 API 函数 Web 服务器下载有效负载,将其存储在本地,然后执行。...动态数据交换 (DDE) 和 VBA,这些都被攻击者广泛滥用。

2.1K10

Excel基础:一文带你了解VBA编辑器

项目资源管理器:项目资源管理器显示了VBA项目中的所有模块、表单、工作表等组件。您可以在项目资源管理器管理和组织您的VBA项目结构。属性窗口:属性窗口显示当前选定对象的属性和属性值。...调试工具:VBA编辑器提供了丰富的调试工具,如设置断点、单步执行、监视变量等功能,帮助您调试和排查代码的问题。监视窗口:该窗口是一个交互式的命令窗口,您可以在其中输入VBA代码并立即执行。...这对于测试代码片段和快速查看变量值非常有用。工具栏:VBA编辑器的工具栏提供了快速访问常用功能的按钮,例如运行、停止、调试等。您可以通过工具栏快速执行各种操作。...具体看动画效果:开发者工具VBA相关的组成按钮Visual Basic:点击可以直接打开 VBA 编辑器,作用等同于快捷键 Alt + F11。...:打开列表,支持对列表进行编辑,例如运行、修改、删除等操作。录制:点击录制可以将键盘和鼠标操作,自动转换成 VBA 代码。这个功能在实际的VBA开发过程中使用非常频繁。

23831

Excel教程 (的介绍与基本使用)

VBA流行的Visual Basic编程语言中派生出来的一种面向应用程序的语言,它适用于各种Windows应用程序,可以解决各应用程序的语言不统一的问题。...AutoCAD2000)等对VBA的支持,这些软件也已进入到了VBA的控制范 围;2、可以将用VBA编写的程序复制到Visual Basic调试并运行,从而实现用Visual Basic来控制有关的应用程序...需要注意的是:在使用过程excel会自动重排工作表索引号,保持按照其在工作表标签左至右排列,工作表的索引号递增。因此,由于可能进行的工作表添加或删除,工作表索引号不一定始终保持不变。...此时,可用 Areas(index)集合返回单个Range对象,其中index为单元格块编号;如Areas(1)。...对于一个多选单元格区域范围Range的 Rows、Columns,只返回该范围一个区域的行数、列

6.3K10

Microsoft Office Access

数据库做了很多地扩充,如,在Access的环境,可以在查询中使用自己编写的VBA函数,Access的窗体、报表、和模块是作为一种特殊数据存储在JET数据库文件(.mdb),只有在Access环境才能使用这些对象...从此JET数据库引擎Access中分离出来,而Access也就成为了一个专门的数据库应用开发工具。...动态库调用无符号整数 常常有这样一种情况,要从外部动态链接库调用的过程返回一个两个字节长的无符号整型。然而Access Basic不支持这种数据类型。...用整形数进行数学运算 即使Microsoft Access 会使用一个联合处理器来处理浮点型算术,整型算术也总是要快一些。当你的计算不含有小数,尽量使用整型或长整型而不是变量或双整型。...例如,在一个循环中,你查阅某表格一个控制的属性,那么在循环外把属性分配给一个变量,然后在循环中用查询一个变量来代替查阅一个属性的方法要比较快。

4.1K130

VBA自动筛选完全指南(下)

示例:复制筛选出的行到新工作表 如果不仅要根据条件筛选记录,而且要复制筛选的行,那么可以使用下面的。它复制筛选的行,添加新工作表,然后将这些复制的行粘贴到新工作表。...如果不想关闭整个工作表的筛选,只想关闭特定数据集中的筛选,可以使用下面的代码: Sub TurnOffAutoFilter1() If Worksheets("Sheet1").Range("...检查是否已应用自动筛选 如果有一个包含多个数据集的工作表,并且希望确保知道没有筛选已经就位,则可以使用以下代码: Sub CheckforFilters() If ActiveSheet.AutoFilterMode...图4 虽然这在已设置了筛选时有效,但如果尝试使用VBA代码添加自动筛选,它将不起作用。由于工作表受到保护,因此不允许运行任何并对自动筛选进行更改。...这在创建动态筛选时是有用的。 下面的代码保护工作表,同时允许在其中使用筛选和VBA

3.3K30
领券