- 博客(134)
- 收藏
- 关注
原创 VB.net实战(VSTO):解决WPS Ribbon图标灰色背景
第二步:设置图片格式>填充>纯色填充>透明度修改为99%,也就是将纯透明背景修改为白色背景,这个背景微微不透明,接近于透明,不影响MSOffice在黑暗模式下的显示效果。问题:用VSTO制作插件,在MSOffice中图标显示正常,但在WPSOffice中图标显示为灰色背景。解决办法:使用office中的PPT工具改变图标背景。最后看效果:可以发现这个图标已经没有灰色背景了。第三步:另存图片,替换原来的图片。第一步:插入图片到PPT中。
2025-01-18 12:59:17
610
原创 C++ 调试输出
","测试",MB_YESNO|MB_ICONWARNING);1、AfxMessageBox()函数在任何类里边都可以使用,而MessageBox()函数只能在CWnd类的继承类中使用。要注意的是TRACE宏只对Debug 版本的工程产生作用,在Release 版本的工程中,TRACE宏将被忽略。2、AfxMessageBox()函数的参数没有MessageBox()函数的参数丰富,所以后者较前者灵活。_RPT1(0, "输出:%d\n", 123);MessageBox("看见了!
2025-01-15 10:11:45
324
原创 C++笔记:打包独立运行的exe(在静态库中使用MFC)
但是一些企业用的特殊window版本可能没有这个依赖库,导致Visual Studio生成的exe无法运行(报缺失dll),就需要打包生成时使用静态库依赖。改成静态依赖库以后,exe的内存大小由300kb增大为4M左右,在可接受的范围内。从window7到window11都默认安装有C++依赖库,见如下。
2025-01-14 15:56:29
567
原创 软件联网更新策略
软件更新策略需要平衡开发者和用户之间的需求,从开发者的角度来说希望客户能时时更新,从用户的角度只要软件能满足现有需求不要总是更新。从三个层面考虑这个问题,用户角色,客户端,软件版本。第一步:确定要更新的版本,开发版是四个版本号中的第四位,内测版是开发版的最新一版,稳定版是更新四个版本号中的第三位。第一步:看角色,角色存储在本地,随登录服务器更新。第四步:下载安装包,如果安装包是新版,下载后才会更新。第二步:看客户端,部分客户端不检查更新,进行排除。第三步:看版本号,对应版本号有更新才更新。
2024-11-16 08:50:28
208
原创 VBA学习(77):Excel表格拆分通用版终极神器
用户窗体-Sub CkbTitleElseEnd IfEnd Sub代码解析:插入标题,点击勾选则显示文本框,再点击取消勾选,隐藏文本框。用户窗体-Sub CmbFilterColumnExit ForEnd IfNextExit ForEnd IfNextElseEnd IfEnd IfNextEnd Sub代码解析:其他筛选,改变筛选字段,重新设置其下两个复合框的List用户窗体-Sub CmbSplit_ChangeEnd IfEnd IfEnd If。
2024-10-07 13:34:35
548
原创 VBA学习(76):文件合并神器/代码
2.自定保存文件名、选择待合并文件所在文件夹Me.TxbTitle = "请输入保存的文件名"ElseEnd IfEnd SubElseExit SubEnd IfEnd WithEnd Sub'StopDoEventsLoopEnd If'确认继续函数Ans = MsgBox(Msg & Chr(10) & Chr(10) & "是(Y)继续?" & Chr(10) & Chr(10) & "否(N)退出!", Config)
2024-10-07 12:54:09
493
原创 VBA学习(75):电子发票管理小助手/电子发票信息读取
先把一些公共变量值清空,然后选择文件,根据文件后缀判断,是PDF的,我们运行ReadPDFInvoiceInfo过程,是OFD的,我们运行ReadOFDInvoiceInfo过程,这两个过程都是用来读取发票信息的,读取到的信息存到变量中,完成后,回到本过程再把发票信息写入工作表,并添加发票文件链接。(E)开头是旧式的电子发票,有密码区的,后面的最近的数电发票,两者的结构是不一样的,有兴趣的朋友可以找来这样的发票解压后分析。这里建立了一个删除文件夹的过程,看看代码就知道是ChatGPT生成的,基本没改。
2024-09-12 08:56:19
980
原创 VBA学习(74):电子发票信息读取主代码
2、读取OFD格式的发票,Sub ReadOFDInvoiceInfo()1、读取PDF格式的发票,Sub ReadPDFInvoiceInfo()
2024-09-12 08:49:57
1131
原创 DataGridView用法合集【精品】
默认状态下,所有下拉框都显示;还有一种就是光标移动时强调显示。DataGridView1.Rows[0].HeaderCell.ToolTipText = "这行的单元格是不可更改的";DataGridView1.Rows(0).HeaderCell.ToolTipText = "这行的单元格是不可更改的"DataGridView1.Columns[0].HeaderCell.Value = "开头列";DataGridView1.Rows[0].HeaderCell.Value = "开头行";
2024-09-03 09:55:04
2021
1
原创 VBA学习(73):Excel VBA 动态添加控件/学生成绩筛选
如果最终找到一条符合条件的记录,我们把它存到arrSelected()数组里,这里我们采用Redim preserve方法,动态扩展数组,不断地写入符合条件的记录,同时把记录数记入k,作为判断arrSelected是否有记录的依据,在程序结尾的MsgBox也引用到k。(3)从1-5循环,动态添加控件,科目标签(语文~总分)、标准标签(各科分数)、差值文本框、方式选项按钮,并设置控件的各种属性。这里,差值可以修改,总分差值是单独的数字,跟前面的各科差没有关系。方式,根据查询需要点选,默认是总差。
2024-09-02 10:49:23
1356
原创 VBA学习(72):Excel VBA 主界面/一步一步带你设计【收费管理系统】02
1、在Sheets("Main")中,设置单元格A1行高为250,列宽为80,增加命令按钮“CmdShowMain”,显示主菜单的意思,Caption改为“收费管理系统”;(4)Usf_Login窗体的“登录”按钮:删除把用户信息写入Sheets(“Main”)的代码,改为写入Sheets(“Settings”)的对应单元格。主界面设置比较简单,我们打开【收费管理系统】EXCEL文档,输入用户名密码,进入VBA编辑器,设有密码的必须输入密码才能进入,这里密码是0。
2024-09-02 09:25:59
1354
原创 VBA学习(71):Excel VBA 访问带密码保护的Access数据库/用户窗体设置/EXCEL用户+密码登录界面(Access版)
line 6~18:判断用户输入的“用户ID”,如果为空,则提示输入,否则就到数据库“tb用户”表中查询“用户ID=TxbUserID”的记录的数量,如果为0,则表明数据库中没有此用户ID,给出提示信息,退出过程,之所以要预先查询用户ID是否存在,是为了避免后面查询“密码、用户姓名”出现错误。窗体激活代码,这里暂时可以什么都不用做,所以我把过程中的代码都给注释掉了,等后续再视情况添加代码。
2024-08-31 13:29:45
1295
原创 VBA学习(70):一步一步带你创建带密码保护的Access数据库
,文中提及数据存储在Access中的情况,今天我们准备把数据表移到Access中,这里我们一步一步地带领大家创建一个带密码保护的Access数据库,已经会操作的朋友可以略过。2、点开文件名旁边的打开按钮,更改文件保存路径,修改文件名为“收费管理系统数据库.accdb”。4、自动创建一个表,我们可以立即添加字段,类型均为短文本,添加用户记录。5、点击左上的保存按钮,在弹出的对话框中,修改表名为“tb用户”7、保存、关闭数据库文件,至此,Access数据库文件创建完成。3、点击确定,进入数据库。
2024-08-31 13:26:22
429
原创 VBA学习(69):用户窗体设置/一步一步代你设计EXCEL用户+密码登录界面
用户登录成功后,LoginStatus的值为1,在用户窗体退出代码中用到此变量,如果为1,则窗体退出时仅仅是退出窗体,EXCEL文件正常打开,包括后续点击重新登录时,再点击“退出”按钮,程序不会退出。如果找到用户ID,则比较密码,如果密码相符,则登录成功,退出窗体,如果密码不符,则不能登录,清空已输入的密码,并把焦点放到TxtPassWord,以便再次输入;如果用户正常登录,此时LoginStatus的值应为1,如果为0,则表明用户非正常进入,我们就退出EXCEL文件。8、给VBA工程添加密码,保护工程。
2024-08-31 13:24:32
2884
原创 VBA学习(68):【重磅】Excel VBA 应用分享/中医诊所收费系统/Excel+ListBox版
收款基本流程:录入客户姓名,依次点选收费项目各个明细项目,核对单价,如果与实收不符则进行修改,输入数量,点选收款方式,然后点添加,向下面的收费详情增加一条明细记录,可再次添加收费项目,最多6条(受打印单据条目限制),核对无误后点结算。于是,我就开动脑筋,以我使用各种ERP系统的经验,开始着手开发这个所谓的中医诊所收费系统,前后大概得有一两个月吧,具体记不清了,总算完工交付使用。其实,本文分享的应用还在此之前,后续经过了升级,后来也改成EXCEL+ACCESS版了,这是后话,暂且不表)3、设计窗体收款界面。
2024-08-30 13:27:18
1351
原创 VBA学习(67):Excel VBA 提取数字/自定义工作表函数/正则表达式/批量提取电话号码
正则表达式(Regular Expression),又称为“正则式”、“规则表达式”、“常规表示法”,是一种用来匹配、查找、替换字符串的工具。它通过一定的符号、元字符和操作符的组合来表达一个特定的模式,从而匹配符合该模式的字符串。4、D列用GetNum函数,取A列字符串中的数字,第一个参数表示取第几个匹配结果,第二个参数表示连续数字的长度,联合起来表示符合指定长度的第几个数字。如果第二个参数省略,则表示匹配第几个数字,不管长度。3、C列用GetNum函数,取A列字符串中的数字,不带参数,表示提取所有数字。
2024-08-30 13:16:06
811
原创 VBA学习(66):Excel VBA 正则表达式
总之,正则表达式在VBA中是非常有用的工具,可以帮助我们快速实现各种字符串操作。需要注意的是,正则表达式的语法比较复杂,需要经过一定的学习和实践才能熟练掌握。正则表达式在VBA环境下的应用非常广泛,可以用来快速地实现字符串的匹配、查找、替换等操作。我们还可以采用另一种方法,叫后期绑定,这样就不用勾选也能运行,但不能象上面那样使用方法和属性了,必须手工输入。对象,该对象包含了有关匹配结果的详细信息,例如匹配的字符串、位置等。在上述代码中,循环遍历了所有匹配结果,输出了它们的字符串表示。
2024-08-30 11:34:34
953
原创 VBA学习(65):Excel VBA 凭证打印/SQL连接Eexcel文件/Listview控件/CommandButton命令按钮控件
您先别急,就说到今天的重点了。我们前面分享过好几期“财务记账模板”相关内容,通过这么一个实例,向大家介绍Excel公式函数、VBA在财务管理中的运用,感兴趣的小伙伴可以翻翻前面的文章,这里我就不贴链接了。2、数据安全性极低,表现在两个方面,一是Excel文件有时候会莫名其妙地打不开了,你就哭吧,二是在操作的时候,非常容易误操作把一些数据给改了、删了,造成极大的麻烦。于是我就下定决心,一定要搞一个“像样”的“财务管理系统”,以Excel为操作端,Access为数据存储端,以提高数据的安全性,操作的便利性。
2024-08-30 11:24:34
1487
原创 VBA学习(64): Excel表格数据导入Access数据库初探
数据导入核心代码,CmdImport_Click(),代码可能有一些无效语句,没有来得及整理,大家将就着看吧,关键是思路。
2024-08-30 09:33:36
1258
原创 VBA学习(63):Excel VBA 数据分析展示/ListView控件/Combox组合框控件/CheckBox复选框控件/科目汇总表
由于原来的过程中,有On Error Resume Next语句,在运行的时候就没有报错,后来在新的UpdateData过程中,没有加这条语句,它就报错了。这里我觉得值得注意的是,我们要善于发现数据的规律,而且我们在设计数据的时候,要保持相对一致性,比如科目编码和科目名称的连接,我们中间统一用“_",诸如此类,我就不多啰嗦了,大家自己摸索、体会吧。添加了一个CheckBox复选框控件CkbLevelOne,Caption改为“一级科目",如果勾选了,则查询一级科目汇总,否则查询明细科目汇总。
2024-08-30 08:40:49
1283
原创 VBA学习(62):Excel VBA 自定义函数/数组字段定位/数组字段排序
通过循环,如果找到了匹配的字段,则退出循环,使得t=1,表示找到了,函数的值就是当前k的值,如果最后t的值为0,则表示没有找到,函数的值为0。我们在做科目汇总表的时候,采用字典的方法把明细账中出现的科目列出来,但顺序是科目在明细账中首次出现的顺序,这样显然是不行的,所以要排个序。arrType,定位方式,跟数组的类型有关,默认为0,针对一维数组,1表示二维数组按行定位,2表示二维数组按列定位。),今天在继续完成科目汇总的功能,但由于代码搞得有点复杂,arr(),就是要定位字段的数组。
2024-08-30 08:32:24
437
原创 VBA学习(61):Excel VBA 数据分析展示/ListView控件
添加表头:可以按一个个具体的名称去添加,它有个文本对齐的属性lvwColumnCenter,lvwColumnLeft,lvwColumnRight,看我们的if过程,两条分支语句是一样的,这里暂时留个活口,待有时间再慢慢设置,可以根据不同的表头,通过if语句来分别设置它的宽度,对齐方式等。首先说明一下,我们准备做一个“科目汇总表",但今天由于时间与篇幅的关系,我们只做了一点点,只是搭了一个框架,科目汇总还没有做,展示的是明细数据,请不要感到奇怪。方法将其添加到列表视图控件中,并设置列的宽度为 80。
2024-08-30 08:27:29
1261
原创 VBA学习(60):补充:Excel VBA 选择输入/TreeView控件/在工作表中如何顺利使用TreeView控件
在某种程度上来说是可以的,但在关闭文件时,我们会删除TreeView,然后保存,那么这时候再设置它的Visible属性就会报错,因为对象已被删除了。于是分析,发现有一个TreeView1,应该是我们上次添加的,但程序不能识别,还有个TreeView2,应该是本次添加的,但代码里的控件是TreeView1啊,咋办呢?其实在用代码动态添加的时候就想到了,在关闭文件的时候,删除添加的TreeView控件,只是为了叙述方便,现在说比较恰当。于是,把TreeView1控件删掉,保存,再打开,可以了!
2024-08-27 11:26:29
1067
原创 VBA学习(59):Excel VBA 选择输入/TreeView控件
然后,我们把“科目"表再优化一下,使它能够顺利地加载到TreeView控件中,加了一列“上级代码",再把科目层级完善一下,最后再按科目代码排个序。text,文本,节点显示的字符,我们把科目表的第3列作为text,这就是我们要在明细账中输入的内容。key,键值,不能全部是数字,这里我们以科目代码作为key,key我们是看不到的。父节点:就是上节节点,最顶层可以没有,其余的都要有,否则关系就乱了。这里,我们先加一个顶级节点“Account“,文本为”科目列表"tvwChild,子节点,表示是父节点的子节点。
2024-08-24 17:52:30
667
原创 VBA学习(58):Excel VBA 输入逐步提示/TextBox+ListBox
当点击一个科目单元格时,把科目列表存入数组arr,显示TextBox1和ListBox1,当单元格有内容时,把当前单元格的内容赋值给TextBox1,同时触发TextBox1的Change事件,当单元格内容为空时,则TextBox1亦为空,不触发它的Change事件,则把arr所有记录显示在ListBox1中。当我们选中第4列(科目)、第5列(现金辅助项)的时候,就显示TextBox1、ListBox1,并根据当前选中的单元格(Target,Selection)的位置、高、宽来设置它们的位置。
2024-08-24 17:33:47
992
原创 VBA学习(55):写代码常用的快捷键汇总
今天分享内容:在VBA中写代码时常用的一些快捷键,可以提高编程效率。3、代码窗口定位键。4、UserForm 窗口键。
2024-08-19 14:41:36
1173
原创 VBA学习(54):最全最详细的对象及对象集合
如果指定区域在数据透视表中,本方法将对该区域内的项取消分组。PointsToScreenPixelsX 方法:将横向度量值由以点(文档坐标)为单位转换为以屏幕像素(屏幕坐标)为单位,以Long值的形式返回转换的度量值。RangeFromPoint 方法:返回位于指定的一对屏幕坐标处的形状或Range对象,如果没有形状位于指定的坐标处,则此方法返回Nothing。ScrollIntoView 方法:滚动文档窗口,使指定矩形区域的内容显示在文档窗口或窗格的左上角或右下角(具体取决于_Start_参数的值)。
2024-08-19 14:20:55
2639
原创 VBA学习(47):创建多层文件夹
D:\艾罗工作文件\网站测速自动化\screenshots\20240806\。根据此段地址在D盘下创建多层文件夹。快速创建和他人一样的文件夹结构。
2024-08-18 21:49:16
420
原创 VBA学习(33):Excel和Word数据交互读取(生成合同)
代码中涉及到新建表格并插入行写入数据的地方,这里给一个简单的例子作为参考。(这个代码直接在Word VBA中运行,如果需要在Excel中操作Word插入表格,需要新建Word程序对象,这属于前面的基础知识)下面代码将当前光标移到文档的开头。如果光标在表格中,则将光标移至表格第一个单元格。在Excel中若要操作Word,需要将参数换成数值。作用:将所选内容移动或扩展到指定单位的开头。运行指定的查找操作。下例查找并选择出现的下一个"hi"单词。数据的对应关系如下图截图中所示。,这里说个实际代工遇到的案例。
2024-08-17 09:24:08
1633
原创 VBA学习(32):将word中的数据批量提取到excel中
这里使用后期绑定的方式创建Word主程序,并且新建一个word文档。向Word文档中写入内容123,最后另存为本工作簿路径下的一个文档。所以,我们循环文档的所有段落,如果包含【物业管理清册】关键字,则获取他的下两行数据,并且提取关键字。想弹出对话框,打开某些特定后缀的文件,就用GetOpenFilename。具体用法可参见之前的文章。一个文档中,有多个这样的缴费清单,我们要提取的是一些固定关键字之后的数据。关于Split函数,可以看之前的两篇文章,都有详细的讲解。'只允许选择一个文件。
2024-08-17 09:15:49
1676
原创 VBA学习(36):获取文件全路径(一)GetOpenFilename 方法
pthsht = Application.GetOpenFilename("excel Files(*.xl*),*.xl*", , "请选择文件", ,pthsht = Application.GetOpenFilename("excel Files(*.xl*),*.xl*", , "请打开文件", ,如果省略该参数,或者该参数的值大于可用筛选条件数,则使用第一个文件筛选条件。好了,这节课就分享到这里,稍后还会分享获取文件全路径的另外两种方法。可选参数,代表指定文件筛选条件的字符串。
2024-08-17 09:13:08
1533
1
原创 VBA学习(35):字符串函数Split的妙用
我们在使用Split函数之前,把其他的标点符号,全部替换为空格即可。这样子,可以一次性实现分以空格作为分隔符分割字符串。里面除了数组转置自定义函数可以借鉴,其他的都是上面编程逻辑的体现,理解了上面说的,下面的东西很简单。首先就想到用Split函数,以空格作为分隔符号把英文句子分割开。最近做了一个批处理小程序,Split函数立了大功劳。通俗的说:Split 函数给他一个分隔符,能把字符串分割开,并返回一个。仿佛可以解决问题了,但是还有一个条件:句子中除了空格,符号分割开,单独列为1行。
2024-08-17 09:05:33
3509
原创 VBA学习(34):Split函数应用|分离商品和数量
面对杂乱成堆的进货单数据,如果想从中分开在一行的商品信息会是很麻烦的一件事。然而一般都有规律可循。下面这个例子就可以用vba中的split函数解决问题的经典例子。如果还要细分,将商品和数量分开。count, 一个可选的参数。要返回子串的数目,并且如果指定为-1,那么所有的子串被返回。delimiter, 一个可选的参数。compare, 一个可选的参数。下面就用vba中的Split函数配合循环来快速解决这个问题。▶如下图,如果手动分开商品会很麻烦,复制粘贴多次才能解决。expression, 必需的参数。
2024-08-17 09:02:33
549
原创 VBA学习(31):Excel和Word数据交互读取2
实际中,也就这几种应用了,简单的例子只是为了有个初步的了解,关键还是自己的不断积累经验。遇到其他好的例子再放上来写第三篇。
2024-08-17 08:50:36
1711
原创 VBA学习(30):Excel和Word数据交互读取
还是前面说的,有了VBA基础,学习Word VBA很快,着重熟悉Word VBA的属性对象和方法。代码不会的可在Word中录制宏解决,再移植到Excel中。这样就可以以Excel为遥控器,操控Word进行各种数据交互。下篇文章说下Word 中的表格Table对象,来总结下如何操控Word的表格数据。
2024-08-17 08:42:59
1866
原创 VBA学习(29):根据EXCEL数据自动生成WORD报表
表格中的天气部分,需要根据Excel表格内部的信息判断,如果是【晴天】,则Word表格中的晴天那一列要打两个√。这个是知乎上一个朋友的付费提问内容,因为需求很简单,我把程序直接写好了,在这里把代码分享给大家。诸如【日期】、【巡查项目点】等这些信息,代码采用替换的方式解决。这个文档看着也很简单,有一些特别需要注意的地方,我这里说一下。Word文档作为一个模板存在,后期会单独另存一份新的文档。Word表格内部直接按位置写入数据。
2024-08-17 08:32:30
1102
原创 ElasticSearch7.2学习—springboot集成elasticsearch
Java Low Level REST Client: 低级别的REST客户端,通过http与集群交互,用户需自己编组请求JSON串,及解析响应JSON串。兼容所有ES版本。Java High Level REST Client: 高级别的REST客户端,基于低级别的REST客户端,增加了编组请求JSON串、解析响应JSON串等相关api。使用的版本需要保持和ES服务端的版本一致,否则会有版本问题。官方推荐使用高级版,低级版需要自己准确记住api。
2024-08-16 17:29:46
945
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人