excel - 将 32 位 VBA 函数转换为 64 位 VBA 函数时出现问题

标签 excel vba outlook

Option Explicit
Option Compare Text
Option Base 1

Private Declare PtrSafe Function lstrlen Lib "kernal32" Alias "lstrlenW" ( _
    ByVal lpString As Long) As LongPtr
    
Private Declare PtrSafe Function StrTrim Lib "shlwapi" Alias "StrTrimW" ( _
    ByVal pszSource As Long, _
    ByVal pszTrimChars As Long) As LongPtr
    
Private Function TrimWS(ByVal Text As String) As String
    'unicode safe
    Dim WHITE_SPACE As String
    WHITE_SPACE = " " & vbTab & vbCr & vbLf & Chr(1) & Chr(2) & Chr(3) & Chr(4) & Chr(5) & Chr(6) & Chr(7) & Chr(8) & Chr(9) & Chr(10) & Chr(11) & Chr(12) & Chr(13) & Chr(14) & Chr(15) & Chr(16) & Chr(17) & Chr(18) & Chr(19) & Chr(20) & Chr(21) & Chr(22) & Chr(23) & Chr(24) & Chr(25) & Chr(26) & Chr(27) & Chr(28) & Chr(29) & Chr(30) & Chr(31) & Chr(32) & ChrW(&HA0)

    If StrTrim(StrPtr(Text), StrPtr(WHITE_SPACE)) Then
        TrimWS = Left$(Text, lstrlen(StrPtr(Text)))
    Else
        TrimWS = Text
    End If

End Function


当我切换到 64 位时,上面的这个功能不起作用。 “StrPtr”区域似乎出现错误,因为它在 64 位中不存在。另外 lstrlen 似乎也不起作用。它给出了不匹配错误。

任何人都可以提供一些有关如何将其转换为 64 位的建议吗?

我尝试将原始函数交换为 LongPtr,我不确定这个函数的作用,但它会获取所有这些字符代码并对其进行测试。如果存在则运行 lstrlen 函数。

我在这件事上有点碰壁了。

最佳答案

我将 LongPtr 设置在错误的位置。现在工作正常。

Private Declare PtrSafe Function lstrlen Lib "Kernel32" Alias "lstrlenW" ( _
    ByVal lpString As LongPtr) As Long
    
Private Declare PtrSafe Function StrTrim Lib "shlwapi.dll" Alias "StrTrimW" ( _
    ByVal pszSource As LongPtr, _
    ByVal pszTrimChars As LongPtr) As Long

关于excel - 将 32 位 VBA 函数转换为 64 位 VBA 函数时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74903906/

相关文章:

c++ - 将用户定义的数据类型 (VBA) 映射到 C++

excel - VBA Excel - 有没有办法根据两列中的条件删除行?

python - 自动将 CSV 文件导入 Outlook

outlook - 时事通讯跟踪图像 Outlook

.net - 如何使用WebDav来匹配dav :href to Outolook Interop href value

vba - 如何将数组粘贴到范围 [VBA] - 错误 1004

java - 如何在 GAE 中仅获取包含超过 80K 行和超过 7 列的 Google 电子表格的前四行(使用 Java)

excel - 如果第一次出现的单元格包含今天,请将范围行放入变量(长)中?

excel - 如何在VBA中实现自定义可迭代类

Excel字符串变量不在范围内工作