VBA信息获取与处理:VBA代码分类及如何利用代码自动关闭空闲文件

news2024/11/24 5:11:15

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。

教程共两册,二十个专题。今日分享内容是:VBA信息获取与处理第三个专题:VBA代码分类及如何利用代码自动关闭空闲文件c7995a19539ff47a5a8c0a4532264fc6.jpeg

【分享成果,随喜正能量】禅是静虑,要在静中思虑好歹,择善而从。精进勇猛,有大愿力,难的会变为易。疏散放逸,悠悠忽忽,不求进取,易的也变为难。。

专题三 VBA代码分类及如何利用代码自动关闭空闲文件

大家好,我们这讲开始一个新的专题,这个专题中我们首先讲解一下VBA代码应用的模块(module),然后介绍给大家如何利用VBA代码实现已经打开文件的自动关闭。

我们要知道,模块是代码的容器。所有代码必须写在模块中才能执行。可以将模块看做为一个文件,实际上,我们确实可以将模块导出为一个文本文件。在一个模块中,可以包含几个过程。对于一个小的工程,可以将所有代码放在一个模块中。而对于大的、复杂的项目,可以将代码写在几个模块中,以利于组织和修改。在执行代码时,过程在哪个模块中并不重要。来自一个模块的代码可以调用同一项目中任何其他模块中的代码(注意所调用的过程作用域不是私有的Private)。

另外,我们也可以将一个模块文件,其文件名扩展名为.bas,类模块文件,其文件名扩展名为.cls或.frm(用于用户窗体)通过从VBA编辑器的“文件”菜单中选择“导入”项,将该模块导入到项目中。那么在VBA中代码又是如何进行分类呢?一般来讲,按模块分,代码的可以有四种类型:标准模块代码;工作簿和工作表模块代码;用户窗体模块代码;类模块代码。这个专题我将主要给大家介绍标准模块代码;工作簿和工作表模块代码的知识。对于窗体模块涉及到的内容类似于上述两个部分不再讲解,对于类模块大家可以参考我的专门教程“VBA中类模块的解读及应用”。

6053c6ab9f850a51dac2cc774e614be3.jpeg

第一节 标准模块代码(Standard Code Modules)

标准代码模块,是放置大部分VBA代码的地方。对于新手程序员,所有代码都会将在标准模块中。我们实现的绝大多数的功能也是在标准模块代码中完成的。这讲的内容就是给大家讲解标准模块代码。

1 标准模块代码的组成

一个标准模块代码一般包含三个部分。第一个是编译器指令部分,位于模块的最顶部,它包含诸如Option Explicit和Option Compare Text之类的指令。但这些指令不是必需的,你可以根据自己的习惯在需要的时候使用它们。第二部分称为声明部分,可以声明了模块级或过程级范围的变量。这些变量可以由模块中的任何过程访问,并且即使在执行了一个过程或一组过程并修改了其值之后,这些变量仍保留其值。声明部分也可以包含声明引用函数。这些函数定义通常指向构成Windows操作系统的各种DLL文件中的函数。这些语句Sub、Function或Property过程之前。第三部分是模块中包含的实际代码。代码部分包含执行实际工作的所有代码。

f0cfc50567d66e4e4e8228ffcf1d5ec6.jpeg

上面的代码是本专题将利用的代码,这段代码没有包含上面讲解的第一部分,没有设置强制变量的声明及比较的模式等等,但包含上面讲解的第二部分,这部分声明了一个正常的Public变量:RunWhen,这个变量是在整个工程中有效的。还声明了一个常数的NUM_MINUTES,这个常数的意义就是我们将要经过多长时间让这个文件自动关闭。在上面的SUB过程就是我们前面提到的第三部分过程代码。

2 标准模块代码中的过程分类

过程是可以作为一个单元执行的代码块。所有代码必须属于一个过程。代码不能存在于过程之外。虽然单个模块可以包含一定数量(<=1000)的单个过程,但通常最好将这些过程按相关功能分组为多个模块。这使得项目的组织更好,并可以让某个过程代码得到多次的调用。我们可以使用两种类型的过程。(实际上,有三种类型,但这里不讨论属性过程。)

第一个过程是SUB过程,这个过程可以自己运行,也可以被另一个过程调用,或者调用另外的过程。需要注意的是:sub过程不会向调用它的过程提供返回值,它只是执行,然后将程序运行的控制权再返回给调用它的过程。如果它没有被另一个过程调用,只是自己的运行,则终止代码执行。

第二个过程是函数Function过程,这个过程类似于SUB过程,只是函数可以将值返回给调用它的过程。函数通常将一个或多个参数作为输入,并将单个值返回给调用者,调用者的值取决于输入参数的值。我们来看看下面的的代码,SUB过程MYNZ调用函数过程CircleArea,将圆的半径传递给它。CircleArea函数接受此输入,进行简单计算,并将结果返回给调用方过程。

Sub MYNZ()

Dim Area As Double

Dim Radius As Double

Radius = 11

Area = CircleArea(Radius)

MsgBox "The area is: " & CStr(Area)

End Sub

Function CircleArea(Radius As Double) As Double

CircleArea = 3.14159 * (Radius ^ 2)

End Function

代码的截图:

8f3e2c3f09b980246041167af8682355.jpeg

上面的讲解中,无论是SUB过程还是Function过程,都是一个标准模块内的过程。

一个VBA程序工程可以包含任意多个标准代码模块。这使得您可以很容易地将您的过程划分为不同的模块,以便于组织和维护。例如,可以将所有数据库过程放在一个名为database的模块中,将所有数学过程放在另一个名为Math的模块中。只要过程没有Private关键字声明,模块没有标记为Private,就可以从任何其他模块调用,而无需执行任何特殊操作。

本节知识点回向:VBA中代码一般分为几类?标准模块代码一般分为几部分?SUB过程和

Function过程有什么不同?

我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:

8ca8cc6ece0dce84963563bf017c3146.jpeg

0c9a2eb4f58c50a5de3989ecc42c0459.jpeg


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1982961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LC65---2164.对奇偶下标分别排序(排序)--Java版

1.题目 2.思路 &#xff08;1&#xff09;分别提取奇数下标和偶数下标的元素。 &#xff08;2&#xff09;对奇数下标的元素按非递增顺序排序&#xff0c;对偶数下标的元素按非递减顺序排序。 (3)最后将排列好的数字进行合并。 补充&#xff1a; 3.代码实现 class Solution…

PyCharm 2024.1 总结和最新变化

​ 您好&#xff0c;我是程序员小羊&#xff01; 前言 PyCharm 2024.1 是 JetBrains 最新发布的Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;旨在提供更强大的功能和更好的用户体验。以下是对这个版本的总结和最新变化的介绍 智能代码建议和自动完成&#xff1a…

C语言 ——— 学习并使用 strerror 函数

目录 学习strerror函数 使用strerror函数 学习strerror函数 库函数在执行的时候&#xff0c;发生了错误&#xff0c;会将这个错误码存放在errno这个变量中&#xff0c;而errno是C语言提供的一个全局变量 而strerror函数是一个错误报告函数&#xff0c;可以将对应的错误码转…

roomformer-端到端矢量检测模型

论文&#xff1a;Connecting the Dots: Floorplan Reconstruction Using Two-Level Queries 论文地址&#xff1a;https://arxiv.org/pdf/2211.15658 code&#xff1a;https://github.com/ywyue/RoomFormer or https://github.com/woodfrog/poly-diffuse 参考&#xff1a;ht…

指针的指针作为形参实测

1. VS2019里面创建C控制台工程 2. 代码 #include <iostream>uint8_t buf[3][10] { {1,2,3},{4,5,6,7,8},{9,0} }; uint8_t len1 3,len2 5,len3 2;void f1(uint8_t **dstBuf, uint8_t *dstLen) {*dstBuf buf[0];*dstLen len1; }void f2(uint8_t** dstBuf, uint8_t*…

密码学基础-数据加密

密码学基础-对称加密与非对称加密 概述 安全通常从四个方面来定义&#xff1a; 机密性完整性合法性&#xff08;可用性&#xff0c;合法的数据才可用&#xff09;不可否认性&#xff08;发送方不可否认发送过的消息&#xff0c;接收方不可否认接收过的消息&#xff09; 对当…

低代码: 开发难点分析,核心技术架构设计

开发难点分析 1 &#xff09;怎样实现组件 核心问题&#xff1a;编辑器 和 页面其实整个就是一系列元素构成的这些元素的自然应该抽象成组件&#xff0c;这些组件的属性应该怎样设计在不同的项目中怎样做到统一的使用 2 &#xff09;跨项目使用 在不同的项目中怎样做到统一的…

最强开源文生图模型一夜易主!SD一作、Stabililty AI核心成员Robin Rombach下场创业了,一出手就是王炸。

时隔4个月&#xff0c;开源文生图模型霸主Stable Diffusion原班人马再创业&#xff01;2024年8月1日官宣&#xff1a;Black Forest Labs成立&#xff0c;公司的第一个产品FLUX.1系列模型包含专业版、开发者版、快速版三种模型&#xff0c;效果直接秒杀Midjourney、DALL-E和Stab…

解决报错:AssertionError: Torch not compiled with CUDA enabled

首先查看自己的cuda是否可用 torch.cuda.is_available()这里我的cuda是不适配torch的&#xff0c;所以需要重新安装适配的torch 查看自己的cuda版本 方法1 方法2 在cmd处输入nvidia-smi 这样可以找到的自己的CUDA版本安装符合自己版本的pytorch 进入pytorch官网https://pyt…

双指针实现删除字符串中的所有相邻重复项

class Solution:def removeDuplicates(self, s: str) -> str:res list(s)slow fast 0length len(res)while fast < length:# 如果一样直接换&#xff0c;不一样会把后面的填在slow的位置res[slow] res[fast]# 如果发现和前一个一样&#xff0c;就退一格指针if slow …

app逆向实战:某监管app2.0.5版本ROOT检测绕过

本篇博客旨在记录学习过程&#xff0c;不可用于商用等其它途径 场景 如下图&#xff0c;在我们打开APP时页面提示如此样式说明被检测到ROOT了&#xff0c;这种情况下无法进入页面请求抓包。 查壳 如果这个APP没有加固&#xff0c;那我们可以通过反编译修改检测的代码或者F…

Django与数据库

目录 创建项目app 路由子表 数据库 创建数据库 什么是ORM 定义数据库表 Django Admin 管理数据 过滤条件 代码直接生成HTML 使用模板 前后端分离架构 对资源的增删改查处理 列出客户 添加客户 临时取消 CSRF 校验 修改客户信息 删除客户 Django中ORM的处理 数据模…

QThread::wait: Thread tried to wait on itself

调用QThread的wait()方法时&#xff0c;报警&#xff1a;QThread::wait: Thread tried to wait on itself 原因&#xff1a;在自己的线程中调用线程的wait()方法。 解决方法&#xff1a;在线程外的其他线程中&#xff0c;调用线程的wait()方法。 示例代码如下&#xff1a; …

MATLAB学习之绘图篇(二维图)

目录 1.1基础图形绘制 1.1.1使用plot函数进行图形绘制 1.1.2为图像增加图例 1.1.3为图片增加标题以及坐标轴的描述 1.1.4控制坐标轴&#xff0c;边框以及网络 1.1.5在一个图像上绘制多条曲线 1.1.6在一个窗口绘制多个图像 1.1.7对图形的对象进行操作( 坐标属性&#xff…

LeetCode Hot100 二叉搜索树中第K小的元素

给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 小的元素&#xff08;从 1 开始计数&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,null,2], k 1 输出&#xff1a;1示例 2&#xff1a; 输入&#xf…

【C/C++】C语言和C++实现Stack(栈)对比

我们初步了解了C&#xff0c;也用C语言实现过栈&#xff0c;就我们当前所更新过的有关C学习内容以栈为例子&#xff0c;来简单对比一下C语言和C。 1.C中栈的实现 栈的C语言实现在【数据结构】栈的概念、结构和实现详解-CSDN博客 &#xff0c;下面是C实现的栈&#xff0c; 在St…

ImageNet数据集和CIFAR-10数据集

一、为什么需要大量数据集 人工智能其实就是大数据的时代&#xff0c;无论是目标检测、图像分类、还是现在植入我们生活的推荐系统&#xff0c;“喂入”神经网络的数据越多&#xff0c;则识别效果越好、分类越准确。因此开源大型数据集的研究团队为人工智能的发展做了大量贡献…

QT教程-十五,Qt-5.14.2安卓开发环境配

目录 一&#xff0c;Qt需要的组件 二&#xff0c;需要的环境配置 1,JDK配置 1.1 配置JDK环境 1.2 Qt中配置JDK,SDK,NDK 2,创建Qt安卓项目 2.1 配置gradle-5.5.1-bin.zip文件 最近想开发一款安卓app应用&#xff0c;但是又不想去重新学习一个新的知识体系。于是在自己更为…

2024.8.5 作业

1> 使用有名管道实现&#xff0c;一个进程用于给另一个进程发消息&#xff0c;另一个进程收到消息后&#xff0c;展示到终端上&#xff0c;并且将消息保存到文件上一份 create.c #include <myhead.h> int main(int argc,const char *argv[]) {if(mkfifo("./lin…

在windows下生成的mac苹果电脑端可以执行的unity项目程序,在mac电脑不能执行的修改方法

在windows下开发Unity项目&#xff0c;如果要执行的电脑是mac&#xff0c;必须在windows下生成for mac的程序&#xff0c;发现拷贝到mac电脑后不能执行&#xff1a; 原因是改程序没有mac的执行权限: 修改方法&#xff1a; 先打开终端&#xff1a; 进入文件所在目录 cd Downlo…