Solo el tipo definido por el usuario definido en los módulos de objetos públicos se puede forzar al intentar llamar a una función VBA externa
Estoy tratando de llamar a una función de Access desde Excel y obtengo este error:
Error de compilación: solo los tipos definidos por el usuario definidos en los módulos de objetos públicos se pueden forzar hacia o desde una variante o pasar a funciones enlazadas tarde.
Traté de adoptar estosolución Encontré, pero sin suerte. Aquí está mi código:
En el Módulo Excel Estadísticas Externas
Option Explicit
Public Type MyExternalStatistics
esMyInvites As Single
esMyInvitePerTalk As Single
End Type
Public MyExtRecStats As MyExternalStatistics
En el 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
En el Módulo de Acceso Estadísticas Externas
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
No le gusta elMyExtRecStats = .Run("ExternalRecruitingStats", RecruitWindow)
declaración. Eventualmente me gustaría asignar varios conjuntos en la función de Acceso y traerlos de vuelta con un solo objeto. Entonces puedo colocar esos valores donde deberían estar en la hoja de cálculo.