excel表格_excel函数公式大全_execl从入门到精通
为什么我要将VBA教程代码升级到适合于32位和64位两种Office版本2024-03-11 16:26:12
大家好,在上一篇文章“Office系统中32位和64位两种版本的VBA应用”中,我给大家简单的讲解了两种OFFICE版本的不同,以及我们在编写VBA时要注意的事项。最近我利用一段时间升级了我推出的各套教程的代码,让这些程序文件在两种系统中都可以利用。为什么要发费时间做这项工作呢?
1 时代的需要
我们从2G时代到5G时代,真的用的时间很短,计算机的普及也就是最近30年的是事情,但这就是时代的发展。以前我们或许没有把一些问题作为问题,比如时间的存储,但现在必须要面临这个问题。这就是时代的需要。在刚刚有64位系统时,由于64位系统普及率不够,使用64位Office并不广泛,当时微软也建议用户避开64位Office 2010,不建议使用64位Office2010。但随着Office2013和2016推出后,64位版本更加稳定,使用的人也越来越多。到2019版的office64位系统是非常稳定了,而且微软也在不断的升级完善一些功能,使得在10,13版本中不能正常运行的控件可以利用了,这就是与时俱进。
2 大数据处理的需要
或许现在你的电脑还在用EXCEL2000,但我告诉你,你是另类了,虽然这个版本在OFFICE系统中是非常稳定的版本,但很多的问题在低版本上你确实很难实现,比如数据的行数,在数据处理中超过7万行是正常的,但您在低版本中真的无法实现。64位的系统也是如此,在物理空间允许我们可以占用较多内存的时候我们就有必要升级我们的代码了,毕竟内存中的读写比直接在硬盘中提取数据要快的多,所以在64位系统中有了地址指针的概念。64 位环境中的指针和句柄为 8 字节 64 位数。这些 64 位数不能包含在 32 位数据类型中。所以在64位系统中增加了一些数据类型和关键字,分别是:LongPtr 类型别名、LongLong 数据类型和 PtrSafe 关键字。
LongPtr 实际解析为哪种数据类型取决于它在哪种 Office 版本中运行:在 32 位版本的 Office 中 LongPtr 解析为 Long,在 64 位版本的 Office 中 LongPtr 解析为 LongLong。LongPtr 用于指针和句柄。
LongLong 数据类型为有符号的 64 位整数,仅在 64 位版本的 Office 中可用。LongLong 用于 64 位整数。必须使用转换函数将 LongLong(包括 64 位平台上的 LongPtr)显式赋予较小的整型。不允许将 LongLong 隐式转换为较小的整数。
PtrSafe 关键字声明 Declare 语句可以在 64 位版本的 Office 中安全运行。现在,在 64 位版本的 Office 中运行时,所有 Declare 语句必须都包括 PtrSafe 关键字。必须理解,仅仅将 PtrSafe 关键字添加到 Declare 语句中只是表示 Declare 语句显式针对 64 位,而语句中需要存储 64 位(包括返回值和参数)的所有数据类型仍须经过修改才能保存 64 位数。
3 学员的需求
现在经常有学员来信询问自己电脑无法运行程序的问题,很多情况下是自己的电脑OFFICE是64位系统,而运行的程序无法在64位上正常运行。很多人在以前利用的教程是五花八门,这也难怪,在64位系统没有普及之前,这些真的不是问题,但现在确实是个问题,我教程的升级就是为了广大学员的要求,让大家能顺利的学习到最新的知识。为此我配置了两台笔记本在工作,一台是32位的一台是64位,我所有的程序都能在两台电脑上测试通过。
最后再展示一些代码的改写,分享给大家:
Declare PtrSafe Sub SetDebugErrorLevel Lib "user32" Alias "SetDebugErrorLevel" (ByVal dwLevel As Long)
Declare PtrSafe Function SetErrorMode Lib "kernel32" Alias "SetErrorMode" (ByVal wMode As Long) As Long
Declare PtrSafe Function ReadProcessMemory Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As LongPtr, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As LongPtr, lpNumberOfBytesWritten As LongPtr) As Long
Declare PtrSafe Function WriteProcessMemory Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As LongPtr, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As LongPtr, lpNumberOfBytesWritten As LongPtr) As Long
Declare PtrSafe Function GetThreadContext Lib "kernel32" Alias "GetThreadContext" (ByVal hThread As LongPtr, lpContext As CONTEXT) As Long
Declare PtrSafe Function SetThreadContext Lib "kernel32" Alias "SetThreadContext" (ByVal hThread As LongPtr, lpContext As CONTEXT) As Long
Declare PtrSafe Function SuspendThread Lib "kernel32" Alias "SuspendThread" (ByVal hThread As LongPtr) As Long
Declare PtrSafe Function ResumeThread Lib "kernel32" Alias "ResumeThread" (ByVal hThread As LongPtr) As Long
Declare PtrSafe Function FindResource Lib "kernel32" Alias "FindResourceA" (ByVal hInstance As LongPtr, ByVal lpName As String, ByVal lpType As String) As LongPtr
Declare PtrSafe Function FindResourceEx Lib "kernel32" Alias "FindResourceExA" (ByVal hModule As LongPtr, ByVal lpType As String, ByVal lpName As String, ByVal wLanguage As Long) As LongPtr
Declare PtrSafe Function BeginUpdateResource Lib "kernel32" Alias "BeginUpdateResourceA" (ByVal pFileName As String, ByVal bDeleteExistingResources As Long) As LongPtr
Declare PtrSafe Function UpdateResource Lib "kernel32" Alias "UpdateResourceA" (ByVal hUpdate As LongPtr, ByVal lpType As String, ByVal lpName As String, ByVal wLanguage As Long, lpData As Any, ByVal cbData As Long) As Long
Declare PtrSafe Function EndUpdateResource Lib "kernel32" Alias "EndUpdateResourceA" (ByVal hUpdate As LongPtr, ByVal fDiscard As Long) As Long
Declare PtrSafe Function LoadResource Lib "kernel32" Alias "LoadResource" (ByVal hInstance As LongPtr, ByVal hResInfo As LongPtr) As LongPtr
Declare PtrSafe Function LockResource Lib "kernel32" Alias "LockResource" (ByVal hResData As LongPtr) As LongPtr
Declare PtrSafe Function SizeofResource Lib "kernel32" Alias "SizeofResource" (ByVal hInstance As LongPtr, ByVal hResInfo As LongPtr) As Long
积木编程的思路内涵:
在我的系列书籍中一直在强调“搭积木”的编程思路,这也是学习利用VBA的主要方法,特别是职场人员,更是要采用这种方案。其主要的内涵:
1代码不要自己全部的录入。你要做的是把积木放在合适的位置然后去修正代码,一定要拷贝,从你的积木库中去拷贝,然后修正代码,把时间利用到高效的思考上。
2 建立自己的“积木库”。平时在学习过程中,把自己认为有用的代码放在一起,多积累,在用到的时候,可以随时拿来。你的积木库资料越多,你做程序的思路就会越广。
VBA的应用界定及学习教程:
VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我对VBA的应用界定。在取代OFFICE新的办公软件没有到来之前,谁能在数据处理方面做到极致,谁就是王者。其中登峰至极的技能非VBA莫属!
我记得20年前自己初学VBA时,那时的资料甚少,只能看源码自己琢磨,真的很难。20年过去了,为了不让学习VBA的朋友重复我之前的经历,我根据自己多年VBA实际利用经验,推出了六部VBA专门教程,目前教程均通过32位和64位两种OFFICE系统测试。
第一套:VBA代码解决方案是VBA中各个知识点的讲解,教程共147讲,覆盖绝大多数的VBA知识点,提供的程序文件更是一座不可多得的代码宝库,是初学及中级人员必备教程;目前这套教程提供的版本是修订第二版,程序文件通过32位和64位两种OFFICE系统测试。
第二套:VBA数据库解决方案数据库是数据处理的专业利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,适合中级人员的学习。目前这套教程提供的是修订第一版教程,程序文件通过32位和64位两种OFFICE系统测试。
第三套:VBA数组与字典解决方案数组和字典是VBA的精华,字典是VBA代码水平提高的有效手段,值得深入的学习,是初级及中级人员代码精进的手段。目前这套教程提供的版本是修订第一版,程序文件通过32位和64位两种OFFICE系统测试。
第四套:VBA代码解决方案之视频是专门面向初学者的视频讲解,可以快速入门,更快的掌握这门技能。这套教程是第一套教程(修订一版)的视频讲解,听元音更易接受。这套教程还会额外提供通过32位和64位两种OFFICE系统测试的程序文件。
第五套:VBA中类的解读和利用这是一部高级教程,讲解类的虚无与肉身的度化,类的利用虽然较少,但仔细的学习可以促进自己VBA理论的提高。这套教程的领会主要是读者的领悟了,领悟一种佛学的哲理。目前这套教程提供的版本是修订第一版,程序文件通过32位和64位两种OFFICE系统测试。
第六套教程:《VBA信息获取与处理》,这是一部高级教程,涉及范围更广,实用性更强,面向中高级人员。教程共二十个专题,包括:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪切板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。
上述教程的学习顺序:1→3→2→6→5或者4→3→2→6→5。提供的程序文件更是一座巨大的代码库,供读者使用,如需要可以WeChat: NZ9668
学习VBA是个过程,也需要经历一种枯燥的感觉
“众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山”。学习的过程也是修心的过程,修一个平静的心。在代码的世界中,心平静了,心情好了,身体自然而然就好。心静则正,内心里没有那么多邪知邪见,也就没有那么多妄想。利人就是利己。我的教程助力给正在努力的朋友。
“水善利万物而不争”,绵绵密密,微则无声,巨则汹涌。学习亦如此,知道什么是自己所需要的,不要蜷缩在一小块自认为天堂的世界里,待到暮年时再去做自欺欺人的言论。要努力提高自己,用一颗充满生机的心灵,把握现在,这才是进取。越是有意义的事情,困难会越多。愿力决定始终,智慧决定成败。不管遇到什么,都是风景。看淡纷争,看轻得失。学习时微而无声,利用时则巨则汹涌。“路漫漫其修远兮,吾将上下而求索”
每一分收获都是成长的记录,怎无凭,正是这种执着,成就了朝霞的灿烂。最后将一阙词送给致力于VBA学习的朋友,让大家感受一下学习过程的枯燥与执着:
浮云掠过,暗语无声,
唯有清风,惊了梦中啼莺。
望星,疏移北斗,
奈将往事雁同行。
阡陌人,昏灯明暗,
忍顾长亭。
多少VBA人,
暗夜中,悄声寻梦,盼却天明。
怎无凭!
分享我多年工作实际经验的成果,随喜这些有用的东西,给确实需要利用VBA的同路人。回向学习利用VBA的历历往事,不胜感慨,谨以这些文字以纪念,
分享成果,随喜正能量
标签: excel升级到最新版本的方法