Somente o tipo definido pelo usuário definido nos módulos de objeto público pode ser coagido ao tentar chamar uma função VBA externa
Estou tentando chamar uma função do Access do Excel e obtém este erro:
Erro de compilação: Somente tipos definidos pelo usuário, definidos em módulos de objetos públicos, podem ser coagidos para ou de uma variante ou passados para funções de ligação tardia.
Eu tentei adotar issosolução Eu encontrei, mas sem sorte. Aqui está o meu código:
No módulo Excel ExternalStatistics
Option Explicit
Public Type MyExternalStatistics
esMyInvites As Single
esMyInvitePerTalk As Single
End Type
Public MyExtRecStats As MyExternalStatistics
No objeto 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
No Módulo de acesso 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
Não gosta doMyExtRecStats = .Run("ExternalRecruitingStats", RecruitWindow)
declaração. Eu gostaria, eventualmente, de atribuir vários conjuntos na função Access e trazê-los de volta com um único objeto. Então eu posso colocar esses valores onde eles devem estar na planilha.