Nur benutzerdefinierten Typs definiert, die in öffentlichen objektmodulen kann genötigt, wenn Sie versuchen, rufen Sie eine externe VBA-Funktion

Bin ich versucht, rufen Sie eine Access-Funktion von Excel und bekomme diese Fehlermeldung:

Kompilieren-Fehler: Nur benutzerdefinierte Typen in öffentlichen Objekt
Module werden dazu gezwungen oder von einer Variante oder übergeben zu spät-gebunden
Funktionen.

Habe ich versucht, dies zu übernehmen Lösung ich gefunden, aber ohne Glück. Hier ist mein code:

In der Excel-Modul ExternalStatistics

Option Explicit

    Public Type MyExternalStatistics
        esMyInvites As Single
        esMyInvitePerTalk As Single
    End Type

Public MyExtRecStats As MyExternalStatistics

In der Tabelle1(Ein-Schritt-Nummern) Objekt:

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

In der Access-Modul 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

Es nicht wie die MyExtRecStats = .Run("ExternalRecruitingStats", RecruitWindow) - Anweisung. Ich möchte schließlich weisen mehrere Satz in der Access-Funktion, und bringen Sie Sie alle wieder mit einem Objekt. Dann kann ich die Werte wo Sie sein sollten in der Tabelle.

  • Gibt es einen Grund, Sie sind nicht mit einer Abfrage an die Datenbank in Excel zu ziehen, die Daten, die Sie brauchen? Es scheint mir, dass wäre einfacher und effizienter.
  • Schließlich werde ich brauchen, um die Funktion von mindestens 36 Punkte von Daten zurück in Excel. Ich war mit einer Schnur und Parsen der Zeichenfolge, die arbeiten war, aber die Untersuchungen habe ich oben schien ein effizienter Weg, um es getan. Ich bin mir nicht bewusst eine Abfrage Ansatz, die könnten das für mich tun. Offen für Vorschläge...
InformationsquelleAutor Rod | 2014-07-30
Schreibe einen Kommentar