另一个方式是使用自定义函数,已经封装了VBA的Evaluate方法,直接在工作表函数环境里使用,并且加上了正则清洗参数,可以满足一些不规范数据录入后仍然可用的场景,使用:青菜1.5块钱每斤*3斤+番茄2
一般像我这种水平的人,只需要不断地百度或google,就可以拿到现成的东西直接复用,VBA毕竟是业务开发者使用的编程语言,同时又是一个官方停止更新语言,仍然使用VBA做一些复杂的需求,有点吃力不讨好。...在VBA代码中调用加解密函数方法 说到重点,VBA开发者可能更多场景还要回到自己在VBA代码中想要调用其他语言开发好的函数,例如此篇的自定义函数。...能够使用Application.Run来调用的前提是自定义函数的加载项已经被加载,即xll文件已经被Excel加载进来。...系列文章 一文带你全面认识Excel催化剂系列功能 安装过程详解及安装失败解决方法 第1波-工作表导航 第2波-数字格式设置 第3波-与PowerbiDesktop互通互联 第4波-一大波自定义函数高级应用...-文件文件夹相关函数 第42波-任意字符指定长度随机函数 第43波-文本处理类函数增强 第44波-可见区域复制粘贴不覆盖隐藏内容 第45波-逻辑判断函数增强 第46波-区域集合函数,超乎所求所想 关于Excel
:strtok是字符串拆分的核心函数,第一次调用时传入要拆分的字符串和分隔符,后续调用时第一个参数传NULL,表示继续拆分上一次的字符串。...进程等待的必要性:父进程(Shell)通过waitpid阻塞等待子进程执行完成,不仅可以回收子进程资源,避免僵尸进程,还可以获取子进程的退出状态码,了解命令的执行结果(0 表示成功,非 0 表示失败)。...常见内置命令与对应的系统调用 内置命令 功能描述 对应的系统调用 / 实现方法 exit 退出 Shell 直接终止主循环,调用exit函数 cd 切换工作目录 调用chdir系统调用 pwd 打印当前工作目录...,成功返回 0,失败返回 - 1; 处理cd无参数的情况:默认切换到用户的主目录,通过getenv("HOME")获取HOME环境变量的值,这与 bash 的行为一致。...pwd命令的实现:调用getcwd系统调用获取当前工作目录,getcwd会将当前工作目录的路径存入指定的缓冲区,成功返回缓冲区指针,失败返回 NULL。
【问题】近来我要进行这样的工作,每月下属的单位要来GZ明细。...Yeah, 【准备工作】网上学习到有两种方法:一是VBA调用OutLook控件进行发送,这要在电脑中安装Office OutLook,(可惜我的电脑没有安装),一是VBA调用CDO控件,再利用QQ邮箱发送...,好了 QQ邮箱设置: 打开mail.qq.com---设置---帐户---开启POP3---生成授权码 复制出授权码 下面开始设计我自己的工具啦,我们的口号是VBA使工作效率更高 【工具界面】...】=" & sucess & "【失败】=" & fail) End With disAppSet (True) End Sub 听说,如果我们用程序调用CDO,再调用QQ邮件系统发送邮件时...我们对返回是“打开”或“取消”要进行 Not isArray()判断 【测试成功】 希望能提高我的工作效率,使工作变得轻松, 如果你也有这样的需要,可以复制使用,我们学习,是为了不加班,如果你学习到知识
此外,还会造成即便不双击lnk,只要打开lnk所在的目录,就会出现网络连接的现象。...不过在后续的攻击活动中,我们未再次检测到该攻击方式。...最后打开之前复制的doc文件,并将原始VBA宏擦除,将解密后的新的VBA宏添加进去,并启动VBA宏函数 x_N0th1ngH3r3: ?...x_N0th1ngH3r3函数同样是解密出一段新VBA宏,同样调用新VBA宏的x_N0th1ngH3r3函数: ? 解密出来的新VBA宏目的是将shellcode解密并加载执行: ?...随后会将解密的rat在内存中展开,并且查找CreateInstance函数地址,然后将配置信息传入调用该函数: ? ?
打印命令行提示符: 在 main() 函数中调用 getpwd() 获取当前工作目录,然后通过 printf() 按以下格式打印提示符: 等待用户输入: 程序通过 scanf() 等待用户输入命令...strtok(char *str, const char *delim); 参数: char *str: 第一次调用时传入需要分割的字符串。...后续调用传入 NULL 表示继续上一次的分割。 const char *delim: 一个以 \0 结尾的字符串,表示分割的分隔符集合(例如,空格、逗号等)。...返回值: 成功:返回一个指向分割后的子字符串(token)的指针。 失败:如果没有更多的子字符串可以返回,则返回 NULL。...waitpid 等待子进程结束并处理退出状态。 结果:命令执行结果的退出码存储在 lastcode 中供后续使用。
下面这篇文章从宏的声明到错误处理,详尽解读代码的目的与实现细节,帮助你深入理解 VBA 在 Word 自动化中的应用。...DeepSeekV3 宏结构概览本文分为以下几个部分介绍宏流程: 宏的声明与结束 变量声明与初始化 API 密钥与文本选择检查 保存原始选区 文本预处理 调用自定义 API 函数 正则表达式提取内容...插入结果与光标恢复 错误处理与用户提示 宏的声明与结束在 VBA 中,使用 Sub…End Sub 来定义一个不返回值的过程,这种过程执行一系列操作但不会作为表达式的一部分返回值 citeturn0search0...Exit Sub End If保存原始选区在修改 Selection 之前,先将当前选区的 Range 对象复制一份,以便后续恢复光标位置 citeturn9search0。...调用自定义 API 函数使用自定义的 CallDeepSeekAPI 函数,将 api_key 与 inputText 传入并返回结果字符串: response = CallDeepSeekAPI
这是因为,VBA 版本 6 和更早版本完全以 32 位平台为目标,而且通常包含 Declare 语句,这些语句调用的 Windows API 使用 32 位数据类型的指针和句柄。...下面这种方法可以避开VBA工程的密码验证。具体步骤如下: (1)新建一个工作簿(xlsm格式)(记为工具文件),在工作簿内新建一个模块。将以下代码复制到模块内。...DialogBoxParamA,但装入的不是4070号对话框,这里我们调用 'RecoverBytes函数恢复原来函数的功能,在进行原来的函数 RecoverBytes..." End Sub (3) 打开需要破解VBA工程密码的工作簿。...顺利的话,会弹出对话框,提示”破解成功“。 (5) 双击刚才要解密的VBA工程窗体,发现已经可以查看之前受保护的模块代码了。
: 首次调用:传入待分割字符串和分隔符 后续调用:使用nullptr继续处理原字符串 修改原理:通过插入\0修改原字符串,返回每个token的起始地址 示例解析过程: 输入:"ls -l /usr" 内存变化...v表示参数以数组形式传递 p表示自动搜索PATH环境变量 成功时替换当前进程映像,失败返回-1 waitpid()同步机制: 父进程阻塞等待指定子进程结束 第二个参数可获取退出状态 防止僵尸进程...后续调用使用nullptr继续处理 自动构建与main()函数兼容的argv格式 进程管理引擎 Execute()实现经典fork-exec模型: 主控流程 典型REPL循环结构: while(true...) { 显示提示 → 获取输入 → 解析命令 → 执行命令 } 关键函数说明 strtok工作机制 首次调用:传入待处理字符串和分隔符 后续调用:使用NULL继续处理原字符串 修改原理:通过插入...\0分割字符串,返回每个token的起始地址 execvp特性 v:参数以数组形式传递(需NULL结尾) p:自动搜索PATH环境变量中的可执行文件 执行成功时替换当前进程映像,失败返回-1 waitpid
比如你想用C语言写dll给VBA调用,C语言可是没有String类型的,C的函数该如何去用?这就涉及到了数据类型的内存结构,深入了解才能够使用好。...3、与其他语言的dll交互 经常接触到的是windows的API调用,在VBA里先声明1个String,并且赋值一个足够的长度,调用之后再根据返回长度来取出需要的字符串。...4、是否可以构建1个String变长的内存区域 即然知道了VBA String类型的内存结构,我就想如果自己用C语言做一个dll,函数传出StrPtr需要的那个地址,赋值给1个str的VarPtr那个地址...,是不是程序退出的时候VBA的垃圾回收能释放那个内存?...printf "str = %s", str Stop FreeLibrary hdll End Sub 输出: hdll = 0x69b50000 str = a 程序能成功输出
当前工作目录:进程的当前工作目录由所有线程共享,一个线程调用chdir()修改工作目录,其他线程的工作目录也会随之改变。...但 pthread 库的函数错误处理方式不同: 函数执行成功时返回 0。 执行失败时,不设置全局errno,而是直接返回错误码(非 0 值)。...函数的代码后return,相当于调用exit函数,会终止整个进程,进程内的所有线程都会随之退出。...主线程:发送取消请求 主线程:子线程已被成功取消 4.3 线程终止的禁忌:避免使用 exit 函数 线程中绝对不要调用exit函数!exit函数的作用是终止整个进程,而不是当前线程。...函数原型: int pthread_detach(pthread_t thread); 参数thread:要设置为分离状态的线程的用户级 ID。 返回值:成功返回 0,失败返回非 0 错误码。
VBA简介&用途 Visual Basic for Applications(VBA),是依附在应用程序(例如Excel)中的VB语言。...只要你安装了Office Excel就自动默认安装了VBA,同样Word和PowerPoint也能调用VBA对软件进行二次开发而让一些特别复杂的操作“脚本化”。...如何打开VBA 1、打开“开发工具”功能(第一次使用VBA) 如果你是第一次使用VBA,需要打开“开发工具”功能。...写在最后 后续我会详细介绍VBA的语法、函数和数据处理,帮助零基础的朋友实现从VBA入门到精通(精通估计是开玩笑的,能熟练使用VBA完成日常繁琐Excel操作“脚本化”应该是我们的目标。...谨以本文献给可爱的菜某,希望她早日学会VBA,解放双手~
二、过程的分类 过程主要分为三类,通用过程、事件过程和属性过程,其中通用过程又分为Sub(子程序)过程和Function(函数)过程。 前面已经接触过事件过程和Sub(子程序)过程。...1、事件过程 事件过程就是学过的excel事件,包括工作簿事件、工作表事件、窗体控件事件、以及ontime和onkey事件等等。 事件过程,在对应的模块中选择对象和事件后,会自动添加事件过程的代码。...2、属性过程 在”类模块“中设置类的属性时,可通过”属性过程“来完成,后续如果有机会介绍类模块时再做介绍。...在VBA中通用过程又分为两类:Sub(子程序)过程,和Function(函数)过程。 Sub过程:这类过程完成指定的任务,执行结束后不返回值。...Function过程:这类过程完成指定任务,并返回一个值供调用的程序使用。 通用过程都保存着在VBA的“模块”中,一个模块可以包含任意数量的过程,同时一个VBA工程也可以包含任意多个模块。
1.5 fork 调用失败的原因:这些 “坑” 要避开 虽然 fork 函数很常用,但并不是每次调用都能成功。...当某个用户创建的进程数超过这个限制时,该用户后续的 fork 调用就会失败。...进程完成了预定的任务,没有出现任何错误,退出码为 0(退出码的含义后续会详细讲解)。例如,执行 ls 命令成功列出目录内容后,ls 进程就会正常退出,退出码为 0。...2.2.1 正常终止:主动离场的三种方式 正常终止的进程会返回一个退出码(0 表示成功,非 0 表示失败),父进程可以通过 wait 系列函数获取这个退出码,了解子进程的执行结果。...执行结果: 程序开始执行 业务逻辑执行完成,准备退出 执行清理函数:释放临时资源 退出码:0 从结果可以看到,exit 函数调用后,程序会立即终止,后续的代码不会执行,并且会自动执行注册的清理函数
工作方式 Rundll 执行以下步骤: 1. 它分析命令行。 2. 它通过 LoadLibrary() 加载指定的 DLL。 3. ...它调用 函数,并传递作为 的命令行尾。 5. ...当 函数返回时,Rundll.exe 将卸载 DLL 并退出。...文件,后续需要进行混淆,vba内容如下 Sub Hello() Dim X X=MsgBox("Hello VBS") 科普一下vba文件: VBA(Visual Basic for Applications...成功后就会生成一个test_EvilClippy.dotm文件,这时候把文件拿去vt检测一下,免杀效果还是比之前强了很多 ? ? 再放进火绒看一下,已经免杀 ?
学习Excel技术,关注微信公众号: excelperfect 在正式将VBA引入我们的应用程序之前,让我们先了解Excel应用程序的四个阶段:开发与维护、启动、运行和关闭。...如果启动时检查失败,那么应该平稳地退出程序并给出相应的错误信息。 2.在应用程序退出时还原所有设置。...3.构建或打开动态用户接口元素,包括特定应用程序的功能区选项卡、Excel应用程序级的设置、工作簿模板,等等。 4.注册用户自定义函数。...4.调用其他加载宏中的代码。如果引用了其他加载宏,就可以通过名称来调用其标准模块中的公有过程。当然,如果不使用引用方式,也可以通过Application.Run函数来实现。 5.提供其他服务。...也就是说,要删除在应用程序启动阶段所创建的各种元素,包括功能区选项卡或元素、特定应用程序的工作表、特定的快捷菜单。 2.注销所有的用户自定义函数。
执行情况:返回了非空的FILE*指针,则可认为函数执行成功;返回了NULL,则可认为函数执行失败,需要进一步检查错误的原因(errno变量或调用perror()函数)。...2.4.2错误码和退出码的区别 退出码是进程结束时给系统返回的状态码,通常简单地表示成功或失败 错误码是函数调用或操作失败时的具体错误信息,提供了更详细的错误类型 要是本身你给退出码定义了详细的分类..._exit()不会自动执行exit()函数所执行的清理工作,需要确保在调用它之前,手动处理所有必要的清理工作,然后向操作系统返回退出码。...返回值:调用成功,返回收集到的子进程的PID,同时获取到了子进程的退出状态码;调用失败,返回-1,并设置错误码以指示错误的原因;如果为非阻塞等待,waitpid调用成功且没有收集到已结束的子进程,则返回...exec函数的行为:仅在调用它的进程中生效,而不会影响到父进程。由于exec函数是在子进程中调用的,因此只有子进程的映像被替换,父进程的映像保持不变,父进程继续执行其后续代码。
只有退出码为0时,表示成功执行,且执行的结果正确,其他退出码均表示执行失败或结果不符合预期,原因各异。...实际上,exit的底层调用了_exit,不过在退出之前做了一系列清理工作,例如刷新 I/O 缓冲区,确保所有的输出数据都被写入到相应的文件或终端、关闭文件描述符、间接释放动态分配的内存等。...注意:调用wait等待子进程时,如果此时子进程还在执行自己的程序,并未退出,那么父进程就会一直阻塞在wait的调用处,直到子进程退出,再执行后续代码。...返回值:如果回收成功,返回子进程的PID。如果失败(例如没有对应的pid),返回 -1。如果第三个参数传WNOHANG并且子进程还未退出,返回0。 注意事项 1....首先介绍一下它们的返回值: 如果替换成功,直接执行新代码,后续的原代码已经被替换,不再执行,因此没有返回值。 如果替换失败,返回 -1。
其实很多系统的操作,像文件的操作等,都是要调用Windows API的,就算是VBA里的文件操作语句: Open pathname For mode [ Access access ] [ lock...] As [ # ] filenumber [ Len = reclength ] 底层实现上应该也是调用Windows API。...而很多没有的功能,也只是VBA没有帮忙实现,需要我们自己去调用Windows API实现罢了。...传递了,而数字没有初始的时候是0,API函数去操作指针地址0的时候,必然会出错造成Excel的崩溃。...Const OPEN_EXISTING As Long = 3 ' 打开文件(如果不存在就返回失败)。
-- > 有可能,如下演示: 分析: 静态变量特性 :静态变量只在第一次进入函数时初始化,后续调用时保持其值。...执行路径 :由于 handler 只被调用一次(后续的 SIGINT 被阻塞),cnt 仅在第一次调用 handler 时被递增一次,之后的循环中 cnt 的值始终为 1。...结果是:main函数 和 sighandler先后 向链表中插入两个节点,而最后只有一个节点真正插入链表中了 像上例这样,insert函数被不同的控制流程调用,有可能在第一次调用还没返回时就再次进入该函数...信号,该信号的默认处理动作是忽略,父进程可以自定义 SIGCHLD 信号的处理函数,这样父进程只需专心处理自己的工作,不必关心子进程了,子进程 终止时会通知父进程,父进程在信号处理函数中调用 wait...请编写一个程序完成以下功能:父进程 fork 出子进程,子进程调用 exit(2) 终止,父进程自定义 SIGCHLD 信号的处理函数,在其中调用 wait 获得子进程的退出状态并打印。