Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Адаптация кода для 64 битных систем - VBA
 
Да я попробовал и с VBA7 и Win64 - работает в обоих случаях
Адаптация кода для 64 битных систем - VBA
 
Karataev Спасибо большое, помогло - все работает.
Как вы поняли что именно у ByVal lpsz As LongPtr нужно изменить Long на LongPtr?
Изменено: K_E_V - 11.03.2018 11:03:39
Адаптация кода для 64 битных систем - VBA
 
Добрый день

помогите адаптировать код см.ниже что бы работал на 64 битной системе
Код
 Private Type GUID
    Data1 As Long
    Data2 As Integer
    Data3 As Integer
    Data4(0 To 7) As Byte
 End Type
 Private Declare Function CoCreateGuid Lib "ole32" (pguid As GUID) As Long
Private Declare Function StringFromGUID2 Lib "ole32" ( _
  rguid As GUID, ByVal lpsz As Long, ByVal cchMax As Long) As Long
    
 Public Function CreateGUID() As String
  Dim NewGUID As GUID
  CoCreateGuid NewGUID
  CreateGUID = Space$(38)
  StringFromGUID2 NewGUID, StrPtr(CreateGUID), 39
 End Function
 
 если можно с комментариями, спасибо.

пробую вот так 

Private Type GUID
   Data1 As Long
   Data2 As Integer
   Data3 As Integer
   Data4(0 To 7) As Byte
End Type
#If Win64 Then
Private Declare PtrSafe Function CoCreateGuid Lib "ole32" (pguid As GUID) As LongPtr
Private Declare PtrSafe Function StringFromGUID2 Lib "ole32" ( _
   rguid As GUID, ByVal lpsz As Long, ByVal cchMax As Long) As LongPtr
   #Else
   Private Declare Function CoCreateGuid Lib "ole32" (pguid As GUID) As Long
Private Declare Function StringFromGUID2 Lib "ole32" ( _
   rguid As GUID, ByVal lpsz As Long, ByVal cchMax As Long) As Long
   #End If
   
Public Function CreateGUID() As String
 Dim NewGUID As GUID
 CoCreateGuid NewGUID
 CreateGUID = Space$(38)
 StringFromGUID2 NewGUID, StrPtr(CreateGUID), 39
End Function
Sub dfvfb()

Dim GUID
GUID = LCase(Mid(CreateGUID(), 2, 36))
MsgBox GUID

End Sub

ругается  на StrPtr(CreateGUID)
Изменено: K_E_V - 10.03.2018 12:26:43
Страницы: 1
Наверх