news 2026/10/5 14:25:05

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/10/5 3:25:18

滚柱导轨润滑周期预测

滚柱导轨为直线运动传动装置,接触面积大,负载能力和刚性强,适用于重载、高精度或刚性要求高的运用场景,如CNC数控机床、重型搬运设备、大型龙门机床、自动化设备等大型机械设备。是精密加工设备的核心传动配件,其润滑周…

作者头像 李华
网站建设 2026/10/4 3:59:33

应对海量编曲配乐订单,AI编曲软件让原创音乐人实现批量高产

在音乐创作的领域里,传统的人工编曲一直占据着主导地位。然而,随着科技的飞速发展,AI编曲软件正以其独特的优势逐渐崭露头角,成为应对海量配乐订单、助力原创音乐人实现批量高产的得力助手。与人工编曲相比,AI编曲软件…

作者头像 李华
网站建设 2026/10/5 10:43:51

提示工程架构师进阶:打造企业级代码生成工具实战

提示工程架构师进阶:打造企业级代码生成工具实战 一、引言 在当今软件开发的快节奏环境中,提高开发效率和质量是每个企业追求的目标。代码生成工具作为一种能够自动化生成部分代码的利器,正逐渐在企业级开发中崭露头角。对于提示工程架构师而言,打造企业级代码生成工具不…

作者头像 李华
网站建设 2026/10/5 10:43:51

自建一个Agent很难吗?一语道破,万语难明

最近花了一周左右的时间给内部的一个传统研发平台接入了 Agent 开发的能力,很多同学对 Agent 的底层实现非常感兴趣,所以此篇给大家介绍下我是怎么做的,希望能对想自建 Agent 的同学有所启发。 因人力原因,有些细节方案问题没太做…

作者头像 李华