news 2026/6/26 18:00:52

VBA 64位API声明语句第017讲

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VBA 64位API声明语句第017讲

跟我学VBA,我这里专注VBA, 授人以渔。我98年开始,从源码接触VBA已经20余年了,随着年龄的增长,越来越觉得有必要把这项技能传递给需要这项技术的职场人员。希望职场和数据打交道的朋友,都来学习VBA,利用VBA,起码可以提高自己的工作效率,可以有时间多陪陪父母,多陪陪家人,何乐而不为呢?我的教程一共九套,从入门开始一直讲到程序的分发,是学习利用VBA的实用教程。这份API资料是随高级教程赠送的.

这讲我们继续学习VBA 64位API声明语句第017讲,这些内容是MS的权威资料,看似枯燥,但对于想学习API函数的朋友是非常有用的。

【分享成果,随喜正能量】34每个人在自己的时区都有自己的步程。不用嫉妒或嘲笑他人。他们都在自己的时区里,你也是!等待正确的行动时机,放轻松。你虽然没有领先但也没有落后。在命运为你安排的属于自己的时区里,一切都准时。

当学员学习到高级阶段,如果引用API,这个资料可以直接查到64位写法。大多数情况下我们是将低版本的程序文件升级到高版本,这时您就不必为如下的错误提示所困扰了:

' COMM declarations

Declare PtrSafe Function SetCommState Lib "kernel32" Alias "SetCommState" (ByVal hCommDev As LongPtr, lpDCB As DCB) As Long

Declare PtrSafe Function SetCommTimeouts Lib "kernel32" Alias "SetCommTimeouts" (ByVal hFile As LongPtr, lpCommTimeouts As COMMTIMEOUTS) As Long

Declare PtrSafe Function GetCommState Lib "kernel32" Alias "GetCommState" (ByVal nCid As LongPtr, lpDCB As DCB) As Long

Declare PtrSafe Function GetCommTimeouts Lib "kernel32" Alias "GetCommTimeouts" (ByVal hFile As LongPtr, lpCommTimeouts As COMMTIMEOUTS) As Long

Declare PtrSafe Function PurgeComm Lib "kernel32" Alias "PurgeComm" (ByVal hFile As LongPtr, ByVal dwFlags As Long) As Long

Declare PtrSafe Function BuildCommDCB Lib "kernel32" Alias "BuildCommDCBA" (ByVal lpDef As String, lpDCB As DCB) As Long

Declare PtrSafe Function BuildCommDCBAndTimeouts Lib "kernel32" Alias "BuildCommDCBAndTimeoutsA" (ByVal lpDef As String, lpDCB As DCB, lpCommTimeouts As COMMTIMEOUTS) As Long

Declare PtrSafe Function TransmitCommChar Lib "kernel32" Alias "TransmitCommChar" (ByVal nCid As LongPtr, ByVal cChar As Byte) As Long

Declare PtrSafe Function SetCommBreak Lib "kernel32" Alias "SetCommBreak" (ByVal nCid As LongPtr) As Long

Declare PtrSafe Function SetCommMask Lib "kernel32" Alias "SetCommMask" (ByVal hFile As LongPtr, ByVal dwEvtMask As Long) As Long

Declare PtrSafe Function ClearCommBreak Lib "kernel32" Alias "ClearCommBreak" (ByVal nCid As LongPtr) As Long

Declare PtrSafe Function ClearCommError Lib "kernel32" Alias "ClearCommError" (ByVal hFile As LongPtr, lpErrors As Long, lpStat As COMSTAT) As Long

Declare PtrSafe Function SetupComm Lib "kernel32" Alias "SetupComm" (ByVal hFile As Long, ByVal dwInQueue As Long, ByVal dwOutQueue As Long) As Long

Declare PtrSafe Function EscapeCommFunction Lib "kernel32" Alias "EscapeCommFunction" (ByVal nCid As LongPtr, ByVal nFunc As Long) As Long

Declare PtrSafe Function GetCommMask Lib "kernel32" Alias "GetCommMask" (ByVal hFile As LongPtr, lpEvtMask As Long) As Long

Declare PtrSafe Function GetCommProperties Lib "kernel32" Alias "GetCommProperties" (ByVal hFile As LongPtr, lpCommProp As COMMPROP) As Long

Declare PtrSafe Function GetCommModemStatus Lib "kernel32" Alias "GetCommModemStatus" (ByVal hFile As LongPtr, lpModemStat As Long) As Long

Declare PtrSafe Function WaitCommEvent Lib "kernel32" Alias "WaitCommEvent" (ByVal hFile As LongPtr, lpEvtMask As Long, lpOverlapped As OVERLAPPED) As Long

Declare PtrSafe Function SetTapePosition Lib "kernel32" Alias "SetTapePosition" (ByVal hDevice As LongPtr, ByVal dwPositionMethod As Long, ByVal dwPartition As Long, ByVal dwOffsetLow As Long, ByVal dwOffsetHigh As Long, ByVal bimmediate As Long) As Long

Declare PtrSafe Function GetTapePosition Lib "kernel32" Alias "GetTapePosition" (ByVal hDevice As LongPtr, ByVal dwPositionType As Long, lpdwPartition As Long, lpdwOffsetLow As Long, lpdwOffsetHigh As Long) As Long

Declare PtrSafe Function PrepareTape Lib "kernel32" Alias "PrepareTape" (ByVal hDevice As LongPtr, ByVal dwOperation As Long, ByVal bimmediate As Long) As Long

Declare PtrSafe Function EraseTape Lib "kernel32" Alias "EraseTape" (ByVal hDevice As LongPtr, ByVal dwEraseType As Long, ByVal bimmediate As Long) As Long

Declare PtrSafe Function CreateTapePartition Lib "kernel32" Alias "CreateTapePartition" (ByVal hDevice As LongPtr, ByVal dwPartitionMethod As Long, ByVal dwCount As Long, ByVal dwSize As Long) As Long

Declare PtrSafe Function WriteTapemark Lib "kernel32" Alias "WriteTapemark" (ByVal hDevice As LongPtr, ByVal dwTapemarkType As Long, ByVal dwTapemarkCount As Long, ByVal bimmediate As Long) As Long

Declare PtrSafe Function GetTapeStatus Lib "kernel32" Alias "GetTapeStatus" (ByVal hDevice As LongPtr) As Long

Declare PtrSafe Function GetTapeParameters Lib "kernel32" Alias "GetTapeParameters" (ByVal hDevice As LongPtr, ByVal dwOperation As Long, lpdwSize As Long, lpTapeInformation As Any) As Long

Const GET_TAPE_MEDIA_INFORMATION = 0

Const GET_TAPE_DRIVE_INFORMATION = 1

Declare PtrSafe Function SetTapeParameters Lib "kernel32" Alias "SetTapeParameters" (ByVal hDevice As LongPtr, ByVal dwOperation As Long, lpTapeInformation As Any) As Long

Const SET_TAPE_MEDIA_INFORMATION = 0

Const SET_TAPE_DRIVE_INFORMATION = 1

Declare PtrSafe Function Beep Lib "kernel32" Alias "Beep" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long

Declare PtrSafe Function MulDiv Lib "kernel32" Alias "MulDiv" (ByVal nNumber As Long, ByVal nNumerator As Long, ByVal nDenominator As Long) As Long

Declare PtrSafe Sub GetSystemTime Lib "kernel32" Alias "GetSystemTime" (lpSystemTime As SYSTEMTIME)

Declare PtrSafe Function SetSystemTime Lib "kernel32" Alias "SetSystemTime" (lpSystemTime As SYSTEMTIME) As Long

Declare PtrSafe Sub GetLocalTime Lib "kernel32" Alias "GetLocalTime" (lpSystemTime As SYSTEMTIME)

Declare PtrSafe Function SetLocalTime Lib "kernel32" Alias "SetLocalTime" (lpSystemTime As SYSTEMTIME) As Long

Declare PtrSafe Sub GetSystemInfo Lib "kernel32" Alias "GetSystemInfo" (lpSystemInfo As SYSTEM_INFO)

Type TIME_ZONE_INFORMATION

Bias As Long

StandardName(0 To 31) As Integer

StandardDate As SYSTEMTIME

StandardBias As Long

DaylightName(0 To 31) As Integer

DaylightDate As SYSTEMTIME

DaylightBias As Long

End Type

Declare PtrSafe Function GetTimeZoneInformation Lib "kernel32" Alias "GetTimeZoneInformation" (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long

Declare PtrSafe Function SetTimeZoneInformation Lib "kernel32" Alias "SetTimeZoneInformation" (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long

' Routines to convert back and forth

' between system time and file time

Declare PtrSafe Function SystemTimeToFileTime Lib "kernel32" Alias "SystemTimeToFileTime" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long

Declare PtrSafe Function FileTimeToLocalFileTime Lib "kernel32" Alias "FileTimeToLocalFileTime" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long

Declare PtrSafe Function LocalFileTimeToFileTime Lib "kernel32" Alias "LocalFileTimeToFileTime" (lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As Long

Declare PtrSafe Function FileTimeToSystemTime Lib "kernel32" Alias "FileTimeToSystemTime" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long

Declare PtrSafe Function CompareFileTime Lib "kernel32" Alias "CompareFileTime" (lpFileTime1 As FILETIME, lpFileTime2 As FILETIME) As Long

Declare PtrSafe Function FileTimeToDosDateTime Lib "kernel32" Alias "FileTimeToDosDateTime" (lpFileTime As FILETIME, ByVal lpFatDate As LongPtr, ByVal lpFatTime As LongPtr) As Long

Declare PtrSafe Function DosDateTimeToFileTime Lib "kernel32" Alias "DosDateTimeToFileTime" (ByVal wFatDate As Long, ByVal wFatTime As Long, lpFileTime As FILETIME) As Long

#If Win64 Then

Declare PtrSafe Function GetTickCount64 Lib "kernel32" Alias "GetTickCount64" () As LongLong

#End If

Declare PtrSafe Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long

Declare PtrSafe Function FormatMessage Lib "kernel32" Alias "FormatMessageA" (ByVal dwFlags As Long, lpSource As Any, ByVal dwMessageId As Long, ByVal dwLanguageId As Long, ByVal lpBuffer As String, ByVal nSize As Long, Arguments As LongPtr) As Long

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 2:46:07

Vue el-table 表尾合计行

问题: 前端在处理后端接口返回的列表数据进行表尾合计行统计,由于返回的金额不固定,有小数,整数,大数值等等,会出现累计计算数值精度丢失的问题,导致页面数据看起来是错的。 原因:…

作者头像 李华
网站建设 2026/6/23 2:45:42

面试-Tokenizer训练

1 代码 # 注:不建议再重复训练tokenizer(“词典”),MiniMind已自带,此脚本仅供学习和参考。基于不同词典训练的模型将导致输出完全不统一,降低社区的模型复用性 # Note: It is not recommended to re-train…

作者头像 李华
网站建设 2026/6/25 11:13:57

2026.2.3

进入社会已两年有余,生活与工作都算稳定下来。这两年,我实践着学生时代的梦想,走进真实的企业项目,触摸了从需求、设计、开发到上线的完整链条,也体味了团队协作中的碰撞与默契。如今,我对“项目”二字有了…

作者头像 李华
网站建设 2026/6/25 11:10:36

分发安卓证书在线生成:一键搞定应用签名,安全便捷有保障

发现了个特别好用的证书生成网站,大家可以看看第一步点击工具箱,点击安卓证书在线生成点击工具箱,点击安卓证书在线生成进入安卓证书在线生成页面第二步输入生成证书的相关要素第二步输入生成证书的相关要素第三步生成的证书文件,…

作者头像 李华
网站建设 2026/6/25 11:15:33

基于数万次真机评测,RoboChallenge 首份年度报告发布

Datawhale分享 年度报告:RoboChallenge当大语言模型在数字世界不断刷新人类认知边界,一场关于 AI 如何“扎根”现实物理世界的革命正悄然进行。今日,全球首个具身智能大规模真机评测平台—— RoboChallenge 正式发布首份年度报告。报告基于过…

作者头像 李华
网站建设 2026/6/24 5:57:20

马斯克旗下太空探索公司SpaceX合并xAI:前者估值1.5万亿美元

雷递网 乐天 2月3日太空探索公司SpaceX (SPAX.PVT)日前发布公告称,将于xAI (XAAI.PVT)合并,此次交易将整合埃隆马斯克旗下两家最大的私人创业公司。“SpaceX收购xAI,旨在打造地球上(乃至太空)最具雄心、垂直整合程度最…

作者头像 李华