Только пользовательский тип, определенный в открытых объектных модулях, может быть вызван при попытке вызвать внешнюю функцию VBA.
Я пытаюсь вызвать функцию доступа из Excel и получить эту ошибку:
Ошибка компиляции: только определенные пользователем типы, определенные в открытых объектных модулях, могут быть принудительно преобразованы в вариант или из него или переданы функциям с поздней привязкой.
Я пытался принять эторешение Я нашел, но без удачи. Вот мой код:
В модуле Excel ExternalStatistics
Option Explicit
Public Type MyExternalStatistics
esMyInvites As Single
esMyInvitePerTalk As Single
End Type
Public MyExtRecStats As MyExternalStatistics
В объекте Sheet1 (A-Crunched Numbers):
Option Explicit
Public appRecruitingAccess As Access.Application
Public Sub Worksheet_Activate()
Dim MyExtRecStats As MyExternalStatistics
Dim RecruitWindow As Integer
Dim test As String
Set appRecruitingAccess = New Access.Application
With appRecruitingAccess
.Visible = False
.OpenCurrentDatabase "C:\Dropbox\RECRUITING\Remote0\Recruiting 0.accdb"
RecruitWindow = DateDiff("d", Format(Date, Worksheets("ActivityAndIncentive").Range("IncentiveStart").Value), Format(Date, Worksheets("ActivityAndIncentive").Range("IncentiveEnd").Value))
RecruitWindow = DateDiff("d", Format(Date, Worksheets("ActivityAndIncentive").Range("IncentiveStart").Value), Format(Date, Worksheets("ActivityAndIncentive").Range("IncentiveEnd").Value))
MyExtRecStats = .Run("ExternalRecruitingStats", RecruitWindow) '*** ERROR HERE ***
.CloseCurrentDatabase
.Quit
End With
Set appRecruitingAccess = Nothing
End Sub
В модуле доступа ExternalStatistics
Option Compare Database
Option Explicit
Public Type MyExternalStatistics
esMyInvites As Single
esMyInvitePerTalk As Single
end Type
Public Function ExternalRecruitingStats(StatWindow As Integer) As MyExternalStatistics
Dim MyRecStats As MyExternalStatistics
Dim Invites As Integer, Talks As Integer
Invites = 1
Talks = 2
With MyRecStats
.esMyInvites = CSng(Invites)
.esMyInvitesPerTalk = CSng(Invites/Talks)
End With
ExternalRecruitingStats = MyRecStats 'return a single structure
End Function
Это не нравитсяMyExtRecStats = .Run("ExternalRecruitingStats", RecruitWindow)
заявление. Я хотел бы в конечном итоге назначить несколько наборов в функции доступа и вернуть их все вместе с одним объектом. Затем я могу разместить эти значения там, где они должны быть в электронной таблице.