Я пытаюсь использовать альтернативу CreateObject("Scriptlet.TypeLib").GUID
, предоставленную на на этой странице поддержки Microsoft (с некоторыми изменениями), но получаю "Ошибка компиляции: только комментарии могут появляться после End Sub, End Function или EndНедвижимость "на линии Private Declare PtrSafe Function CoCreateGuid Lib "ole32.dll" (guid As GUID_TYPE) As LongPtr
.
Как видно из приведенного ниже кода, эта строка находится внутри функции, поэтому я не понимаю, что вызывает эту ошибку компиляции.
Я попытался переместить две строки Private Declare
где-то внутри функции, чтобы увидеть, решит ли это проблему, но продолжает ли та же ошибка.
Public Function GetGUID() As String
Private Type GUID_TYPE
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type
Private Declare PtrSafe Function CoCreateGuid Lib "ole32.dll" (guid As GUID_TYPE) As LongPtr
Private Declare PtrSafe Function StringFromGUID2 Lib "ole32.dll" (guid As GUID_TYPE, ByVal lpStrGuid As LongPtr, ByVal cbMax As Long) As LongPtr
Dim guid As GUID_TYPE
Dim strGuid As String
Dim retValue As LongPtr
Const guidLength As Long = 39 'registry GUID format with null terminator {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
retValue = CoCreateGuid(guid)
If retValue = 0 Then
strGuid = String$(guidLength, vbNullChar)
retValue = StringFromGUID2(guid, StrPtr(strGuid), guidLength)
If retValue = guidLength Then
' valid GUID as a string
GetGUID = strGuid
End If
End If
End Function
Эта функция используется в модуле, предназначенном для копирования событий календаря из календаря по умолчанию в другой указанный календарь,
Этот код можно найти здесь .Опять же, он заменяет строку GetGUID = Mid$(CreateObject("Scriptlet.TypeLib").GUID, 2, 36)
в этом коде.
Что является причиной этой ошибки и есть ли решение?