【分享成果,随喜正能量】如果你想让某人平静下来。你可以对他们表达同理心,同时用降级的方式进行描述。我明白你为什么那么生气。你有理由抓狂。这个世界也让我很烦。他们会接受他们想要的这种认同,同时也会接受这种递减的情绪,从而变得更加平静。跟我学VBA,我这里专注VBA, 授人以渔。我98年开始,从源码接触VBA已经20余年了,随着年龄的增长,越来越觉得有必要把这项技能传递给需要这项技术的职场人员。希望和数据打交道的朋友,都来学习VBA,利用VBA,起码可以提高自己的工作效率,可以有时间多陪陪父母,多陪陪家人,何乐而不为呢?这讲我们继续学习64位Office API声明语句第72讲,这些内容是MS的权威资料,看似枯燥,但对于想学习API函数的朋友是非常有用的。 Const XTYP_DISCONNECT = (&HC0 Or XCLASS_NOTIFICATION Or XTYPF_NOBLOCK)Const XTYP_UNREGISTER = (&HD0 Or XCLASS_NOTIFICATION Or XTYPF_NOBLOCK)Const XTYP_WILDCONNECT = (&HE0 Or XCLASS_DATA Or XTYPF_NOBLOCK) Const XTYP_MASK = &HF0Const XTYP_SHIFT = 4 ' shift to turn XTYP_ into an index ' Timeout constantsConst TIMEOUT_ASYNC = &HFFFFFFFF ' Transaction ID constantsConst QID_SYNC = &HFFFFFFFF ' Public strings used in DDEConst SZDDESYS_TOPIC = "System"Const SZDDESYS_ITEM_TOPICS = "Topics"Const SZDDESYS_ITEM_SYSITEMS = "SysItems"Const SZDDESYS_ITEM_RTNMSG = "ReturnMessage"Const SZDDESYS_ITEM_STATUS = "Status"Const SZDDESYS_ITEM_FORMATS = "Formats"Const SZDDESYS_ITEM_HELP = "Help"Const SZDDE_ITEM_ITEMLIST = "TopicItemList" Const CBR_BLOCK As LongPtr = -1 ' -1 Long (&HFFFFFFFF) on 32-bit VBA; -1 LongLong (&HFFFFFFFFFFFFFFFF^) on 64-bit VBA ' Callback filter flags for use with standard apps.Const CBF_FAIL_SELFCONNECTIONS = &H1000Const CBF_FAIL_CONNECTIONS = &H2000Const CBF_FAIL_ADVISES = &H4000Const CBF_FAIL_EXECUTES = &H8000&Const CBF_FAIL_POKES = &H10000Const CBF_FAIL_REQUESTS = &H20000Const CBF_FAIL_ALLSVRXACTIONS = &H3F000 Const CBF_SKIP_CONNECT_CONFIRMS = &H40000Const CBF_SKIP_REGISTRATIONS = &H80000Const CBF_SKIP_UNREGISTRATIONS = &H100000Const CBF_SKIP_DISCONNECTS = &H200000Const CBF_SKIP_ALLNOTIFICATIONS = &H3C0000 ' Application command flagsConst APPCMD_CLIENTONLY = &H10&Const APPCMD_FILTERINITS = &H20&Const APPCMD_MASK = &HFF0& ' Application classification flagsConst APPCLASS_STANDARD = &H0&Const APPCLASS_MASK = &HF& Declare PtrSafe Function DdeUninitialize Lib "user32" Alias "DdeUninitialize" (ByVal idInst As Long) As Long ' conversation enumeration functionsDeclare PtrSafe Function DdeConnectList Lib "user32" Alias "DdeConnectList" (ByVal idInst As Long, ByVal hszService As LongPtr, ByVal hszTopic As LongPtr, ByVal hConvList As LongPtr, pCC As CONVCONTEXT) As LongPtrDeclare PtrSafe Function DdeQueryNextServer Lib "user32" Alias "DdeQueryNextServer" (ByVal hConvList As LongPtr, ByVal hConvPrev As LongPtr) As LongPtrDeclare PtrSafe Function DdeDisconnectList Lib "user32" Alias "DdeDisconnectList" (ByVal hConvList As LongPtr) As Long ' conversation control functionsDeclare PtrSafe Function DdeConnect Lib "user32" Alias "DdeConnect" (ByVal idInst As Long, ByVal hszService As LongPtr, ByVal hszTopic As LongPtr, pCC As CONVCONTEXT) As LongPtrDeclare PtrSafe Function DdeDisconnect Lib "user32" Alias "DdeDisconnect" (ByVal hConv As LongPtr) As LongDeclare PtrSafe Function DdeReconnect Lib "user32" Alias "DdeReconnect" (ByVal hConv As LongPtr) As LongPtrDeclare PtrSafe Function DdeQueryConvInfo Lib "user32" Alias "DdeQueryConvInfo" (ByVal hConv As LongPtr, ByVal idTransaction As Long, pConvInfo As CONVINFO) As LongDeclare PtrSafe Function DdeSetUserHandle Lib "user32" Alias "DdeSetUserHandle" (ByVal hConv As LongPtr, ByVal id As Long, ByVal hUser As LongPtr) As LongDeclare PtrSafe Function DdeAbandonTransaction Lib "user32" Alias "DdeAbandonTransaction" (ByVal idInst As Long, ByVal hConv As LongPtr, ByVal idTransaction As Long) As Long ' app server interface functionsDeclare PtrSafe Function DdePostAdvise Lib "user32" Alias "DdePostAdvise" (ByVal idInst As Long, ByVal hszTopic As LongPtr, ByVal hszItem As LongPtr) As LongDeclare PtrSafe Function DdeEnableCallback Lib "user32" Alias "DdeEnableCallback" (ByVal idInst As Long, ByVal hConv As LongPtr, ByVal wCmd As Long) As LongDeclare PtrSafe Function DdeImpersonateClient Lib "user32" Alias "DdeImpersonateClient" (ByVal hConv As LongPtr) As Long Const EC_ENABLEALL = 0Const EC_ENABLEONE = ST_BLOCKNEXTConst EC_DISABLE = ST_BLOCKEDConst EC_QUERYWAITING = 2 Declare PtrSafe Function DdeNameService Lib "user32" Alias "DdeNameService" (ByVal idInst As Long, ByVal hsz1 As Long, ByVal hsz2 As Long, ByVal afCmd As Long) As LongPtr Const DNS_REGISTER = &H1Const DNS_UNREGISTER = &H2Const DNS_FILTERON = &H4Const DNS_FILTEROFF = &H8 ' app client interface functionsDeclare PtrSafe Function DdeClientTransaction Lib "user32" (pData As Byte, ByVal cbData As Long, ByVal hConv As LongPtr, ByVal hszItem As LongPtr, ByVal wFmt As Long, ByVal wType As Long, ByVal dwTimeout As Long, pdwResult As Long) As LongPtr ' data transfer functionsDeclare PtrSafe Function DdeCreateDataHandle Lib "user32" (ByVal idInst As Long, pSrc As Byte, ByVal cb As Long, ByVal cbOff As Long, ByVal hszItem As LongPtr, ByVal wFmt As Long, ByVal afCmd As Long) As LongPtrDeclare PtrSafe Function DdeAddData Lib "user32" (ByVal hData As LongPtr, pSrc As Byte, ByVal cb As Long, ByVal cbOff As Long) As LongPtrDeclare PtrSafe Function DdeGetData Lib "user32" (ByVal hData As LongPtr, pDst As Byte, ByVal cbMax As Long, ByVal cbOff As Long) As LongDeclare PtrSafe Function DdeAccessData Lib "user32" (ByVal hData As LongPtr, pcbDataSize As Long) As LongPtrDeclare PtrSafe Function DdeUnaccessData Lib "user32" (ByVal hData As LongPtr) As LongDeclare PtrSafe Function DdeFreeDataHandle Lib "user32" Alias "DdeFreeDataHandle" (ByVal hData As LongPtr) As Long Const HDATA_APPOWNED = &H1 Declare PtrSafe Function DdeGetLastError Lib "user32" Alias "DdeGetLastError" (ByVal idInst As Long) As Long Const DMLERR_NO_ERROR = 0 ' must be 0 Const DMLERR_FIRST = &H4000 Const DMLERR_ADVACKTIMEOUT = &H4000Const DMLERR_BUSY = &H4001Const DMLERR_DATAACKTIMEOUT = &H4002Const DMLERR_DLL_NOT_INITIALIZED = &H4003 我20多年的VBA实践经验,全部浓缩在下面的各个教程中: 【分享成果,随喜正能量】梵高说过:如果你的大脑中有个声音告诉你:你不能画画。尽一切办法去画,然后你脑中的声音就会渐渐安静下来。你的想法很大程度上会影响你的行为。但如果你意识到脑中的想法,却仍然去行动,结果会开始改变。”