# 大黄人的VBA代码库 **Repository Path**: dsfdsfsdfsdf/vba-code-base ## Basic Information - **Project Name**: 大黄人的VBA代码库 - **Description**: 大黄人的VBA代码库。 - **Primary Language**: Visual Basic - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 11 - **Created**: 2024-02-09 - **Last Updated**: 2024-02-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 大黄人的代码库
## 简介 大家好,我是 Junyi,昵称是大黄人。 这些是我 2016 年工作至今累计总结下来的常用方法和函数,写成的代码库,以便做快速的开发。 自 2020 年 12 月发布一年多以来,得到了零星的支持,我也感到很欣慰。 从 2022 年 4 月开始,我对代码库进行重新整理和改进,发布 V1.0 版本,新版本可以更好得应用到实际工作中去。当然也会造成与旧版本不兼容的问题(旧版本可以在 `old` 文件夹中找到),请大家多包涵。具体更改,可以参考《阅读文档》。 个人的代码风格: - 极简 - 易读 - 拒绝冗余
## 近期更新内容
**2023-03-02:** **mQuery更新内容 Updates 1.3 2023-03-02:** 1. 代码中涉及到数据库链接的添加了密码参数,使用的是 mSettings 里设置的密码。 2. TableType 删除了除全部类型意外的表类型(该功能无用,为了提高性能,进行简化)。 3. mSettings 中增加了3个内容: - 选项 Keep Window After Execute:执行 SQL 语句以后,可以依然保留窗体。这样如果有多句语句需要执行,不需要重新加载,提高性能。 - 选项 Read Table When Open:打开界面的时候,读取数据表。有时候,只为了执行预设的SQL语句,不需要读取数据表时,可以关闭这个选项节约电脑资源。 - Password:可以进行设置。 **mADO更新内容 Updates 1.2 2023-03-02:** 1. 为所有使用到数据库连接的方法新增 Password 密码参数。
**2022-06-21:** mFile.ReadIni -> 修正了读取超过255个字符会崩溃的问题。
**2022-05-23:** 具体见各阅读文档。
**mQuery更新内容 Updates 1.1 2022-04-16:** 1. 文本英文化: - 修正了英文模式下大部分提示语句依然还是中文的问题。 - Access预设数据表字段名称更改为英文。 - 这么做是为了改进非中文电脑的兼容性。
**mQuery更新内容 Updates 1.0 2022-04-12:** 1. 更新界面 - 增加 TableType 选择页面。现在可以选择多种表格类型了。 - 各控件边框更改为平面版。 2. 新增函数 InputTableName 3. 新增列表点击事件 TableTypeList_Click 4. 对应更新 init 方法。 - 删除可选参数 mTableType - 增加对 TableTypeList 的相关代码。
**mADO更新内容 Updates 1.1 2022-04-12:** 1. 修改属性方法:GetAccessTable - 增加可选参数:mReturnName,用于切换返回表名或表类型 - 增加可选参数:mIgnoreSystemTable,用于剔除系统表
### 类模块 mADO 全面革新: 一年多以来,`mADO` 很好得应用到了 Excel 和 Acess 之间的交互查询。与 `mSheet` 一样,它也有很多方法从来不用,而又有很多方法非常常用。同时,由于以前的开发并没有接触到实际应用,很多方法还需要改进。以下: 更新内容 Updates 1.0 2022-04-04 - (1)数据库的连接和创建 - 方法 1.1 CreateAccessFile:不变。(不用) - 属性方法 1.2 TestConnection:不变。(非常常用) - (2)Access工作表 - 方法 2.1 CreatAccessTable:不变。(不用) - 方法 2.2 DeleteAccessTable:不变。(不用) - 属性方法 2.3 GetAccessTable:不变。(非常常用) - 属性方法 2.4 CheckTableExists: - 将名字由 CheckTableExist 变成 CheckTableExists。(修改思路:强迫症,为了统一)(不用) - 方法 原2.5 AddTableField:删除。(修改思路:这些需要小心翼翼的操作在Acess里更合适) - 方法 原2.6 DeleteTableField:删除。(修改思路:同上) - 方法 2.5 CreateAccessTableFromExcelSheet:不变。(常用) - (3)添加、删除、修改数据记录 - 方法 3.1 AddRecord:不变。(不用) - 方法 3.2 AddRecords:不变。(不用) - 方法 3.3 DeleteRecord: - 增加类模块变量 `DeleteRecordSucceed` ,在删除成功后会变 `True` - 在删除前给予确认删除的提示。(修改思路:删除数据是一个非常危险的操作,一定要确认好)(不用) - 方法 3.4 DeleteRecords: - 不再使用公共函数 `RangeToString`(修改思路:用更简单的方法) - 增加 `ShowMsg` 可选参数。(修改思路:与其他方法统一) - 增加类模块变量 `DeleteRecordSucceeds` ,在删除成功后会变 `True` - 在删除前给予确认删除的提示。(修改思路:同上)(不用) - 方法 3.5 DeleteRecordCondition:不变。 - 这是一个2022年3月份新增的方法(常用) - 方法 3.6 UpdateRecord: - 增加 `ShowMsg` 可选参数。(修改思路:与其他方法统一) - 增加类模块变量 `UpdateRecordSucceed` ,在修改成功后会变 `True` - 在修改前给予确认删除的提示。(修改思路:修改数据是一个非常危险的操作,一定要确认好) - 返回的提示会显示修改了多少条数据了。(修改思路:与删除数据统一)(不用) - 方法 3.7 UpdateRecords:不变。 - 增加 `ShowMsg` 可选参数。(修改思路:与其他方法统一) - 增加类模块变量 `UpdateRecordsSucceed` ,在修改成功后会变 `True` - 在修改前给予确认删除的提示。(修改思路:修改数据是一个非常危险的操作,一定要确认好) - 返回的提示会显示修改了多少条数据了。(修改思路:与删除数据统一)(不用) - 方法 原3.7 UpdateAddRecords:删除。(修改思路:实际应用中根本不会用到这样的方法,太不标准了。) - (4)读取数据 - 方法 4.1 ReadData - 增加 `ContainField` 可选参数。(修改思路:增加这个参数让 ReadData 和 ReadDataWithoutField 这两个方法合并)(非常常用) - 方法 原4.2 ReadDataWithoutField:删除。 - 方法 4.2 ReadDistinctFields: - 将参数 `WithField` 改为 `ContainField`(修改思路:强迫症,为了统一)(常用) - 属性方法 4.3 ReadField:不变。(不用)
### 类模块 mSheet 全面革新: 一年多以来,`mSheet` 的使用频率出现两个极端,要么不用,要么非常常用,但是,对那些不用的大部分方法,我依然选择保留。然后,因为当时开发时,对于对象的理解还比较稚嫩,写了一些很啰嗦的方法和参数,对那些没意义的方法和参数进行简化和删除。以下: 更新内容 Updates 1.0 2021-04-04 - (1)工作表的创建、修改和删除 - 1.1 方法 CheckSheetExists:不变。(不用) - 1.2 方法 CreateSheet:不变。(不用) - 1.3 方法 DeleteSheet: - 修正了当工作簿还剩1个工作表时,代码依然会执行,然后奔溃的BUG(修改思路:修正后,会弹一个错误提示)(不用) - 1.4 方法 RenameSheet:不变。(不用) - 1.4 方法 CopySheet:不变。(不用) - (2)工作表的创建、修改和删除 - 原2.1 CopyRange:删除。(修改思路:非常啰嗦的一个方法,大大增加了代码量,降低效率。) - 2.1 CopyRange: - 原 CopyRange2 改名为 CopyRange 并代替 1.1(常用) - 原2.2 ClearRange:删除。(修改思路:一句代码就可以搞定的事情没必要那么费劲,实际场景根本不会调用它) - 2.2 方法 UnionSheets:不变。(不用) - 2.3 方法 Filter:不变。(不常用) - 2.4 属性方法 FindColumnData:不变。(非常常用) - 2.5 方法 SetColumnData:不变。(非常常用) - 2.6 属性方法 FindRowData:不变。(非常常用) - 2.7 方法 SetRowData:不变。(非常常用) - 2.8 属性方法 GetLastRow: - 新增可选参数 mMethod(修改思路:这个方法虽然常用,但是有弊端,就是在选择的某列最下面的单元格出现空值的时候,无法得到正确的行数,于是让其拥有多种方法获得行数)(常用) - 2.9 属性方法 GetLastColumn: - 新增可选参数 mMethod(修改思路:同上)(常用) - 2.10 方法 GetDistinct:不变。(不常用) - (3)其他工作表相关方法 - 3.1 方法 SetScrollArea:删除。(修改思路:花里胡哨,没有意义) - 3.1 方法 ProtectSheet: - 增加了 `On Error` 语句让发生错误时给予提示。(修改思路:这个方法我从来没实际场景用过,但还是保留,并修正漏洞)(不用) - 3.2 方法 UnProtectSheet: - 增加了 `On Error` 语句让发生错误时给予提示。(修改思路:同上)(不用)
### 类模块 mFile 全面革新: 一年多以来,`mFile` 很好得解决了文件与文件夹相关的问题。然而,随着需求的变多,这些方法并不能满足所有,需要改进。以下: 更新内容 Updates 1.0 2021-04-03 - 重新的归类:(1)文件夹操作(2)文件操作 - (1)文件夹操作 - (1)1.1 属性方法 GetSubFolders:不变。(这是一个非常完美的属性方法) - (5)1.2 属性方法 GetPath: - 改名为:GetFolderDialog(修改思想:GetPath 会被认以为类似 GetSubFolders 的功能,造成误导) - 删除可选参数 mDefaultPath,将地址改为工作簿地址。(修改思想:不会有人会一成不变把所有文件放一个文件夹的,还是按照工作表一直改变的) - 1.3 属性方法 CheckPath: - 这是一个 2022 年 3 月才新增的方法,用于读检查文件夹是否存在。 - 更名为 CheckFolderExists - 1.4 方法 CreateFolder: - 这是一个 2022 年 3 月才新增的方法,用于读检查文件夹是否存在。 - 删除了参数 mFolderName(修改思想:该参数可以跟路径写在一起) - (2)文件操作 - (2)2.1 属性方法 GetFileName:与(3)属性方法 SearchFileName 合并为 GetFileName(修改思想:可以说 GetFileName 是 SearchFileName 的一个子集,两个函数存在冗余的关系。) - (3)属性方法 SearchFileName:同(2) - (4)2.2 属性方法 CheckFileExists:简化代码。 - (5)2.3 属性方法 ReadIni: - 这是一个 2022 年 3 月才新增的方法,用于读取 ini 文件。 - 返回一个字符串。如果读取不到,则返回空值。 - (6)2.4 方法 WriteIni: - 与(5)是一对,用于写入 ini 文件。 - 2.5 方法 CreateFile - 这是一个 2022 年 3 月才新增的方法,用于读检查文件夹是否存在。 - 删除了参数 mFileName(修改思想:该参数可以跟路径写在一起)
### 类模块 mBook 全面革新: 一年多以来,`mBook` 的使用场景并不多,里面的几个方法看似有用但实际没有什么应用场景,于是决定对其进行革新。以下: 更新内容 Updates 1.0 2021-04-01 - (1)工作簿的创建、保存和打开 - 方法 1.1 CreateWorkbook: - 改为函数(属性),返回:工作簿对象(修改思想:光创建一个空表并没有什么实际应用场景) - 可选参数 ShowMsg 的默认值由 `True` 改为 `False`(修改思想:用到这个函数必然后面的操作都是连续的,弹出提示会打断连续,降低用户体验) - 新增可选参数 CloseAfterCreation:默认 `False`(修改思想:在获得工作簿对象后,依然可以继续对其进行进一步操作。) - 新增可选参数 mShowScreen:默认 `False` - 方法 1.2 SaveAsWorkbook:不变 - 函数 1.3 OpenWorkbook:不变 - 函数 1.4 OpenWorkbookDialog - 删除 mShowScreen 参数。(修改思想:既然是通过对话框打开,无关紧要会不会刷新屏幕) - 新增功能:默认打开工作簿所在路径。 - 新增可以打开的文件类型:CSV - 方法 1.5 CloseWorkbook:删除(修改思想:画蛇添足) - (2)工作簿数据操作 - 函数 2.1 GetSheetName:不变 - 函数 2.2 CopyFromWorkbook: - 新增功能:默认打开工作簿所在路径。 - 新增可以打开的文件类型:CSV
点击查看各模块窗体的具体阅读文档: - 类模块 - [mADO](./阅读文档/mADO.md) - [mBook](./阅读文档/mBook.md) - [mFile](./阅读文档/mFile.md) - [mSheet](./阅读文档/mSheet.md) - 窗体 - [mProcess](./阅读文档/mProcess.md) - [mQuery](./阅读文档/mQuery.md) - [mSelect](./阅读文档/mSelect.md) - [mShowHideSheet](./阅读文档/mShowHideSheet.md)
## 类模块
### [mADO](./阅读文档/mADO.md) 类模块 `mADO` 用于 Excel 和 Access 之间的连接、增加、删除、修改、查询。
### [mBook](./阅读文档/mBook.md) 类模块 `mBook` 用于工作簿的操作。
### [mFile](./阅读文档/mFile.md) 类模块 `mFile` 用于文件的查询。
### [mSheet](./阅读文档/mSheet.md) 类模块 `mSheet` 用于工作表的操作。


## 窗体
### [mProcess](./阅读文档/mProcess.md) 窗体 `mProcess` 用于显示进度条。
### [mQuery](./阅读文档/mQuery.md) 窗体 `mQuery` 用于 SQL 查询。
### [mSelect](./阅读文档/mSelect.md) 窗体 `mSelect` 用于做选择。
### [mShowHideSheet](./阅读文档/mShowHideSheet.md) 窗体 `mShowHideSheet` 用于显示/隐藏工作表。
## 为我买一杯咖啡 你们的鼓励与支持是我创作的最大动力。 ![img](./阅读文档/收款码.jpg)