Недавно мы начали переход на Office 365. В первый день после миграции пользователь сообщил о проблеме со следующим фрагментом кода VBA, используя библиотеку kernel32.dll
:
'@Esposed
'@Folder System.Text
Option Explicit
Private Declare PtrSafe Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Byaval dst As Long, ByVal src As Long, ByVal length as Long)
Private Const DEFAULT_CHARACTER_CAPACITY As Long = &H10
Pivate CurrentByteLength As Long
Private StringBuffer() As Byte
Private Sub Class_Initialize()
ReDim StringBuffer(0 To (DEFAULT_CHARACTER_CAPACITY * 2) - 1)
'^ Type Mismatch!!!
End Sub
Оказывается, наша предыдущая версия Office (2016) была 32-разрядной, поэтому в итоге мы выполнили 2 миграции.
Я попытался изменить все ссылки Long
на LongPtr
и преобразовать все константы с помощью функции CLngPtr
, но безуспешно. Есть идеи о том, что здесь происходит?