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

Forumthread: benutzerdefinierter Typ nicht definiert

benutzerdefinierter Typ nicht definiert
21.05.2004 08:57:47
Ben
Hallo liebe Leute,
habe folgenden Code:
'Private Sub test()
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Set WordApp = New Word.Application
If Not WordApp Is Nothing Then
WordApp.Visible = True
WordApp.Visible = False
Set WordDoc = WordApp.Documents.Open("D:\Dok4.doc")
WordDoc.PrintOut
Do Until WordApp.BackgroundPrintingStatus = 0
Application.Wait Now + TimeSerial(0, 0, 1)
Loop
WordDoc.Close
Set WordDoc = Nothing
WordApp.Quit
Set WordApp = Nothing
End If
der soll es mir ermöglichen ohne sichtbares Öffnen von Word und Visual Basic ein Worddokument zu drucken. Ich bekomme allerdings die Fehlermeldung "benutzerdefinierter Typ nicht definiert". Wahrscheinlich ist das keine große Sache, allerdings beschäftige ich mich noch nicht so lange mit VBA.
Muss ich dem Kind n Namen geben?
Gruß Ben
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: benutzerdefinierter Typ nicht definiert
Oberschlumpf
Hi Ben
Da ich vermute, dass die von Dir beschriebene Fehlermeldung schon in der ersten Zeile des Makros erscheint (leider NUR Vermutung deshalb, WEIL Du nicht verrätst, WANN und WELCHE Zeile den Fehler verursacht), liegt das daran, dass Du den Verweis auf die Word-Library noch setzen musst.
Verweise werden in diesem Fall im VBA-Editor unter Extras/Verweise gesetzt.
Konnte ich helfen?
Ciao
Thorsten
Anzeige
AW: benutzerdefinierter Typ nicht definiert
Ben
vielen Danke, jetzt klappts! nur Visual Basic öffnet sich noch.
Werde so bald nicht nach weiteren Nachrichten sehen können. Muß jetzt weg.
lieben Gruß
Ben
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Fehlerbehebung: Benutzerdefinierter Typ nicht definiert in VBA


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Verweise setzen: Gehe zu Extras > Verweise.

  3. Word-Bibliothek auswählen: Suche in der Liste nach "Microsoft Word xx.x Object Library" (xx.x steht für die Versionsnummer) und aktiviere das Kontrollkästchen.

  4. Code anpassen: Stelle sicher, dass dein Code wie folgt aussieht:

    Private Sub test()
        Dim WordApp As Word.Application
        Dim WordDoc As Word.Document
        Set WordApp = New Word.Application
        If Not WordApp Is Nothing Then
            WordApp.Visible = False
            Set WordDoc = WordApp.Documents.Open("D:\Dok4.doc")
            WordDoc.PrintOut
            Do Until WordApp.BackgroundPrintingStatus = 0
                Application.Wait Now + TimeSerial(0, 0, 1)
            Loop
            WordDoc.Close
            Set WordDoc = Nothing
            WordApp.Quit
            Set WordApp = Nothing
        End If
    End Sub
  5. Makro ausführen: Schließe den VBA-Editor und führe das Makro aus.


Häufige Fehler und Lösungen

  • Fehler: Benutzerdefinierter Typ nicht definiert: Dieser Fehler tritt häufig auf, wenn die Word-Bibliothek nicht referenziert wurde. Stelle sicher, dass du die Bibliothek wie in der Schritt-für-Schritt-Anleitung beschrieben aktivierst.

  • Visual Basic öffnet sich: Wenn Visual Basic beim Ausführen des Makros geöffnet wird, könnte es daran liegen, dass die WordApp.Visible-Eigenschaft auf True gesetzt ist. Stelle sicher, dass du sie auf False setzt.


Alternative Methoden

Falls du keine Word-Bibliothek verwenden möchtest, kannst du auch CreateObject verwenden:

Dim WordApp As Object
Set WordApp = CreateObject("Word.Application")

Diese Methode erfordert keine Referenzierung der Word-Bibliothek, kann aber weniger stabil sein.


Praktische Beispiele

Hier ist ein weiteres Beispiel, das zeigt, wie du ein Word-Dokument drucken kannst, ohne es sichtbar zu machen:

Sub PrintWordDoc()
    Dim WordApp As Object
    Dim WordDoc As Object
    Set WordApp = CreateObject("Word.Application")
    WordApp.Visible = False
    Set WordDoc = WordApp.Documents.Open("C:\DeinPfad\Dokument.docx")
    WordDoc.PrintOut
    WordDoc.Close
    WordApp.Quit
End Sub

Tipps für Profis

  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um unerwartete Probleme zu vermeiden. Verwende On Error Resume Next, um den Code fortzusetzen, wenn ein Fehler auftritt.

  • Dokumentenpfade dynamisch gestalten: Verwende Application.GetOpenFilename, um den Benutzer einen Dokumentenpfad auswählen zu lassen, anstatt einen festen Pfad im Code zu verwenden.


FAQ: Häufige Fragen

1. Was bedeutet "benutzerdefinierter Typ nicht definiert"?
Dieser Fehler tritt auf, wenn der VBA-Compiler eine von dir verwendete Klasse oder ein Objekt nicht erkennen kann. In der Regel liegt dies daran, dass die erforderliche Bibliothek nicht referenziert wurde.

2. Wie kann ich sicherstellen, dass mein Word-Dokument gedruckt wird, ohne dass Word öffnet?
Setze die Eigenschaft Visible von WordApp auf False, um zu verhindern, dass das Word-Fenster angezeigt wird, während das Dokument verarbeitet wird.

3. Was ist der Unterschied zwischen Dim WordApp As Word.Application und Dim WordApp As Object?
Die erste Methode erfordert eine Referenz zur Microsoft Word-Bibliothek, während die zweite Methode flexibel ist und keine Referenz benötigt, aber möglicherweise weniger stabil ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige