Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mittels VBA Outlook nutzen

Mittels VBA Outlook nutzen
13.01.2020 22:27:40
MarC
Guten Abend,
ich habe einen Problem mit einem kopierten VBA Code. In dem Ursprungsfile betätige ich einen Button dieser öffnet ein Eingabefenster in das ich den Vor- und Nachname eingebe und dann kann ich mir alle Personen bezogene Daten wie Email, Telefonnummer usw anzeigen lassen.
Jetzt habe ich diesen Code in ein anderes File kopiert und erhalte beim ausführen nach der Eingabe des Vor- und Nachnamens diese Meldung "Fehler beim Kompilieren: Benutzerdefinierter Typ nicht definiert". Ich versteh das nicht so ganz weil ich ja alles 1:1 kopiert habe und es keine anderen Codezeilen in dem Ursprungsfile gibt. Kann es sein das ich irgendwas in dem neuem Excelfile aktivieren oder hinzufügen muss?
Hier meckert Excel:
Function GetOEUserInformation(ByVal strName As String, ByVal intOption As Integer)
'   This goes into the Global Address List for the MS Exchange Server and returns a selection  _
of data to a worksheet.
'   To get a view off all the potential data poitns that Outlook contains,
'   see the following URL:
' https://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.exchangeuser_properties.aspx
' Variable declarations.
Dim olApp           As Outlook.Application
Dim olNameSpace     As Namespace
Dim colAL           As Outlook.AddressLists
Dim olAddrList      As AddressList
Dim olAddrEntry     As AddressEntry
Dim olExchgnUser    As ExchangeUser
Dim sh              As Worksheet
Dim lCnt            As Long

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mittels VBA Outlook nutzen
13.01.2020 23:48:44
Luschi
Hallo MarC,
in der Datei, wo es funktioniert, ist ein Verweis auf die Outlook-Bibliothek gesetzt, siehe:
Vba-Editor-Extras-Verweise und nennt sich 'early binding'
Diesen mußt Du auch in der neuen Datei setzen, sonst geht's nicht, oder Du stellt um auf 'late binding'
Weitere Infos findest Du hier: https://www.online-excel.de/excel/singsel_vba.php?f=85
Gruß von Luschi
aus klein-Paris
Anzeige
Danke Luschi und Volti :-D
14.01.2020 00:05:43
MarC
Herrlich es funktioniert vielen Dank =)
Kann man irgendwie den Zugriff auf Outlook automatisch geben ohne das ich es jedes mal per Hand freigeben muss?
AW: Mittels VBA Outlook nutzen
13.01.2020 23:50:57
volti
Hallo MarC,
Du benutzt das "early Binding"-Verfahren, um Kontakt mit Outlook aufzunehmen.
Die Fehlermeldung deutet ggf. darauf hin, dass Du den Verweis auf die "Microsoft Outlook Object Library" in dem neuen File nicht gesetzt hast.
PS: Ich benutze grundsätzlich nur noch "Late binding". Da spielen die Verweise keine Rolle mehr.
viele Grüße
Karl-Heinz
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA zur Nutzung von Outlook in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11 in Excel, um den VBA-Editor zu öffnen.
  2. Verweise auf die Outlook-Bibliothek setzen:

    • Gehe zu Extras > Verweise.
    • Suche nach Microsoft Outlook Object Library und aktiviere das Kontrollkästchen. Dies ist notwendig, wenn du das "early binding" Verfahren verwendest. Ohne diesen Verweis erhältst du möglicherweise die Fehlermeldung "Benutzerdefinierter Typ nicht definiert".
  3. Code einfügen:

    • Füge den gewünschten VBA-Code ein. Hier ein Beispiel, wie du eine Funktion definieren kannst, um auf Outlook zuzugreifen:
      Function GetOEUserInformation(ByVal strName As String, ByVal intOption As Integer)
      Dim olApp As Outlook.Application
      Dim olNameSpace As Namespace
      ' ... weitere Variablen und Code
      End Function
  4. Code ausführen:

    • Stelle sicher, dass der Code korrekt ist und führe ihn aus.
  5. Fehlerbehebung:

    • Wenn du Fehler bekommst, überprüfe die Bibliotheksverweise und die Syntax deines Codes.

Häufige Fehler und Lösungen

  • Fehler: Benutzerdefinierter Typ nicht definiert:

    • Dies tritt häufig auf, wenn der Verweis auf die Outlook-Bibliothek nicht gesetzt ist. Gehe zu Extras > Verweise und aktiviere die Microsoft Outlook Object Library.
  • Keine Verbindung zu Outlook möglich:

    • Stelle sicher, dass Outlook installiert und ordnungsgemäß konfiguriert ist. Bei Problemen mit der Verbindung könnte das "late binding" Verfahren helfen, da hierfür keine Verweise gesetzt werden müssen.

Alternative Methoden

  • Late Binding verwenden:

    • Wenn du auf early binding verzichtest, kannst du dein VBA-Skript so ändern, dass es late binding verwendet. Das bedeutet, dass du keine spezifischen Verweise auf die Outlook-Bibliothek benötigst. Beispiel:
      Dim olApp As Object
      Set olApp = CreateObject("Outlook.Application")
  • VBA Outlook in Excel ohne Verweise:

    • Mit late binding verringert sich die Wahrscheinlichkeit von Kompilierungsfehlern, da du keine speziellen Bibliotheken aktivieren musst.

Praktische Beispiele

Hier ist ein einfaches Beispiel, um eine E-Mail über Excel VBA zu senden:

Sub SendEmail()
    Dim olApp As Object
    Dim olMail As Object

    Set olApp = CreateObject("Outlook.Application")
    Set olMail = olApp.CreateItem(0) ' 0 steht für eine E-Mail

    With olMail
        .To = "example@example.com"
        .Subject = "Test E-Mail"
        .Body = "Dies ist eine Test-E-Mail, die über Excel VBA gesendet wurde."
        .Send
    End With
End Sub

Diese Funktion ermöglicht es dir, direkt aus Excel heraus E-Mails zu versenden, was besonders nützlich ist, wenn du regelmäßig Informationen automatisiert versenden musst.


Tipps für Profis

  • Nutzung von Dim:

    • Achte darauf, alle Variablen ordnungsgemäß mit Dim zu deklarieren, um den Code lesbar und verständlich zu halten. Beispiel: Dim olApp As Outlook.Application.
  • Fehlerprotokollierung:

    • Implementiere eine einfache Fehlerprotokollierung, um Probleme schneller zu identifizieren. Beispiel:
      On Error GoTo ErrorHandler
      ' Dein Code hier
      Exit Sub
      ErrorHandler:
      MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Wie kann ich Outlook automatisch über VBA öffnen? Du kannst Outlook mit CreateObject öffnen, wie im Beispiel für late binding gezeigt. Dadurch wird Outlook automatisch gestartet, wenn dein VBA-Code ausgeführt wird.

2. Was ist der Unterschied zwischen Early und Late Binding? Early Binding erfordert, dass du die spezifische Bibliothek referenzierst, was bestimmte Vorzüge in Bezug auf IntelliSense und Typensicherheit bietet. Late Binding hingegen benötigt keine spezifischen Verweise und ist flexibler, kann jedoch zu Laufzeitfehlern führen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige