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

Forumthread: Benutzerdefinierter Typ nicht definiert

Benutzerdefinierter Typ nicht definiert
24.11.2022 18:17:48
Mani
Hallo liebe VBA Profis,
ich hoffe ihr könnt mir helfen, denn irgendwie stehe ich an.
Folgender Code hat wochenlang funktioniert und seit gestern, wo es eine Umstellung auf Outlook 2010 gab, funktioniert er leider nicht mehr.
Fehler beim Kompilieren: Benutzerdefenierter Typ nicht defeniert, kommt als Fehlermeldung.
Und der Code bleibt bei File As Scripting.File stehen.
Kurz zur Erklärung was der Code macht.
Der Code zieht vom C-Laufwerk einige Dateien, verschiebt diese in den Ordner "Gesendet" und packt mir diese Dateien in eine E-Mail und versendet diese.
Herzlichen Dank für eure Hilfe.
Grüße
Mani
Option Explicit
Private m_Send As String
Private m_Done As String
Private m_To As String
Private m_CC As String

Public Sub SendSingleFiles()
Dim Files As VBA.Collection
Dim File As Scripting.File
Dim Mail As Outlook.MailItem
Dim Atts As Outlook.Attachments
'Alle Dateien aus diesem Verzeichnis senden
m_Send = "C:/Users/KW1_Test/"
'Gesendete Dateien hierhin verschieben
m_Done = "C:/Users/KW1_Test/Gesendet/"
'Empfänger
m_To = "xyz@gmail.com"
Set Files = GetFiles
If Files.Count Then
Set Mail = Application.CreateItem(olMailItem)
Set Atts = Mail.Attachments
For Each File In Files
Atts.Add File.Path
File.Move m_Done & File.Name
Next
Mail.To = m_To
Mail.CC = m_CC
Mail.Subject = "KW1"
Mail.Body = "Sehr geehrte Herr xyz," & vbCrLf & vbCrLf & "im Anhang finden Sie die aktuelle(n) xyz." & vbCrLf & vbCrLf & _
"Mit freundlichen Grüßen" &  "Dies ist eine automatisch generierte Nachricht." & vbCrLf & Date & "-" & Time
Mail.Send
Mail.OriginatorDeliveryReportRequested = True   'übermittlungsbestätigung
Mail.ReadReceiptRequested = True                'Lesebestätigung
End If
End Sub

Private Function GetFiles() As VBA.Collection
Dim Folder As Scripting.Folder
Dim Fso As Scripting.FileSystemObject
Dim Files As Scripting.Files
Dim File As Scripting.File
Dim List As VBA.Collection
Set List = New VBA.Collection
Set Fso = New Scripting.FileSystemObject
Set Folder = Fso.GetFolder(m_Send)
Set Files = Folder.Files
For Each File In Files
If (File.Attributes Or Hidden)  File.Attributes Then
List.Add File
End If
Next
Set GetFiles = List
End Function
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Benutzerdefinierter Typ nicht definiert
24.11.2022 18:45:06
ReginaR
Him, da ist vrmutlich ein Verweis verloren gegangen. gehe in der VBA-Umgebung auf Extras - verweise und aktivieren "Microsoft Scripting Runtime". Das sollte helfen.
Gruß Regina
AW: Benutzerdefinierter Typ nicht definiert
24.11.2022 19:50:01
Mani
Danke Regina, da hast du Recht, ein Verweis ging verloren bzw. wurde nicht übernommen. Funktioniert jetzt wieder.
Grüße, Mani
Anzeige
AW: Benutzerdefinierter Typ nicht definiert
24.11.2022 19:45:03
Mani
Liebe VBA Profis,
die Frage hat sich erledigt. Ich hab den Fehler gefunden, es war nur eine fehlende Einstellung.
Grüße
Mani
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Fehlerbehebung bei "Benutzerdefinierter Typ nicht definiert" in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne die VBA-Umgebung: Drücke ALT + F11 in Excel, um die Visual Basic for Applications (VBA) Umgebung zu öffnen.
  2. Überprüfe die Verweise: Gehe zu Extras > Verweise.
  3. Aktiviere den richtigen Verweis: Suche nach "Microsoft Scripting Runtime" und aktiviere das Kontrollkästchen. Dieser Schritt ist entscheidend, um den Fehler "benutzerdefinierter Typ nicht definiert" zu beheben.
  4. Schließe die Fenster: Klicke auf OK, um die Änderungen zu speichern.
  5. Teste den Code erneut: Führe deinen VBA-Code erneut aus, um sicherzustellen, dass der Fehler behoben ist.

Häufige Fehler und Lösungen

  • Fehler: Benutzerdefinierter Typ nicht definiert
    Lösung: Überprüfe, ob alle benötigten Verweise in der VBA-Umgebung aktiviert sind. Insbesondere der Microsoft Scripting Runtime Verweis ist häufig die Ursache für diesen Fehler.

  • Fehler beim Kompilieren
    Lösung: Dieser Fehler kann auftreten, wenn du versuchst, einen Typ zu verwenden, der nicht definiert ist. Stelle sicher, dass alle verwendeten Typen in deinem Code korrekt deklariert sind und die notwendigen Verweise aktiviert sind.


Alternative Methoden

Wenn die obigen Schritte nicht zum gewünschten Ergebnis führen, kannst du folgende Alternativen ausprobieren:

  1. Verwendung von Late Binding: Anstatt einen spezifischen Verweis zu setzen, kannst du den Code so anpassen, dass er ohne diesen Verweis funktioniert. Beispiel:

    Dim Fso As Object
    Set Fso = CreateObject("Scripting.FileSystemObject")

    Diese Methode vermeidet den Fehler "vba benutzerdefinierter typ nicht definiert", da du keine spezifischen Typen mehr verwendest.

  2. Überprüfung der Excel-Version: Stelle sicher, dass dein Code mit der verwendeten Excel-Version kompatibel ist, insbesondere wenn Änderungen oder Updates vorgenommen wurden.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du den FileSystemObject in VBA verwenden kannst:

Sub BeispielDateiVerschieben()
    Dim Fso As Object
    Set Fso = CreateObject("Scripting.FileSystemObject")

    ' Beispielpfade
    Dim Quelle As String
    Dim Ziel As String
    Quelle = "C:\Users\QuelleDatei.txt"
    Ziel = "C:\Users\Zielordner\ZielDatei.txt"

    ' Datei verschieben
    Fso.MoveFile Quelle, Ziel
End Sub

Dieses Beispiel zeigt, wie du mit FileSystemObject arbeiten kannst, ohne einen spezifischen Verweis zu setzen.


Tipps für Profis

  • Fehlerprotokollierung: Implementiere eine einfache Fehlerprotokollierung in deinem Code, um Probleme schneller zu identifizieren.
On Error GoTo Fehlerbehandlung
' Dein Code hier
Exit Sub

Fehlerbehandlung:
    Debug.Print "Fehler: " & Err.Description
  • Verwende Option Explicit: Durch die Verwendung von Option Explicit am Anfang deiner Module zwingst du dich, alle Variablen zu deklarieren, was die Fehlersuche erleichtert.

FAQ: Häufige Fragen

1. Was bedeutet "benutzerdefinierter Typ nicht definiert"?
Dieser Fehler tritt auf, wenn du in deinem VBA-Code einen Datentyp verwendest, der nicht bekannt oder nicht verfügbar ist, meistens aufgrund fehlender Verweise.

2. Wie aktiviere ich den Microsoft Scripting Runtime Verweis?
Öffne die VBA-Umgebung, gehe zu Extras > Verweise, suche nach "Microsoft Scripting Runtime" und aktiviere das Kontrollkästchen.

3. Wie kann ich eine Übermittlungsbestätigung in Gmail anfordern?
Um eine Übermittlungsbestätigung in Gmail zu erhalten, kannst du im VBA-Code die entsprechenden Eigenschaften setzen:

Mail.OriginatorDeliveryReportRequested = True   'Übermittlungsbestätigung
Mail.ReadReceiptRequested = True                   'Lesebestätigung

4. Was kann ich tun, wenn der Fehler weiterhin auftritt?
Überprüfe, ob alle benötigten Typen und Objekte korrekt in deinem Code verwendet werden. Manchmal kann auch ein Update von Excel oder Outlook die Ursache sein.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige