Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Methode oder Datenobjekt nicht gefunden

Methode oder Datenobjekt nicht gefunden
22.09.2020 13:53:43
Carlotta
Hallo,
ich möchte Eigenbelege für die Buchhaltung automatisiert erstellen.
Dazu habe ich eine Vorlage "Eigenbeleg.xlsm" erstellt. Diese soll aus der ersten Zeile (3) der Datentabelle "OPOS2020_Test.xlsm" befüllt werden, anschließend als PDF gespeichert werden. Dies soll solange passieren, bis die letzte Zeile (erste leere Zeile) erreicht ist.
Der Name der PDF soll sich zusammensetzen aus der Eigenbelegsnummer (Eigenbeleg.Range("C1")), dem Empfänger (Eigenbeleg.Range("C4") und dem Verwendungszweck (Eigenbeleg.Range("C5").
Ich habe das mir aus verschiedenen Beiträgen zusammengeklaubt. Allerdings bekomme ich nun die Meldung: Fehler beim Kompilieren: Methode oder Datenobjekt nicht gefunden.
Dabei markiert er mir die dritte Zeile: Public Sub EigenbelegAnders() gelb
Ich habe bereits versucht Private Sub und nur Sub zu schreiben, das Problem bleibt unverändert. Auch bei Verweisen ist Microsoft Office Object Library, Ole Automation, Microsoft Excel Object Library markiert. Ich habe außerdem bereits versucht eine neue Tabelle zu erstellen und den Code darauf anzupassen. Allerdings leider alles erfolglos. Warum möchte es nicht mehr laufen? Könnt ihr mir bitte helfen?
Das ist mein Code:

Option Explicit
Public Sub EigenbelegAnders()
'Variablen definieren
Dim Eigenbeleg As Worksheet
Dim Opos As Worksheet
Dim Zeilenzähler As Integer
Dim Filename As String
'Tabellen definieren
Set Opos = Workbooks("OPOS2020_Test.xlsm").Worksheets("Opos")
Set Eigenbeleg = Workbooks("Eigenbeleg.xl.xlsm").Worksheets("Tabelle1")
If Zeilenzähler  0 Then
Else
Zeilenzähler = 3
End If
'Kontrolle ob Zeile nicht leer ist
If Opos.Cells(Zeilenzähler, 1)  "" Then
'Kopieren und einfügen
Opos.Range("A" & Zeilenzähler).Copy _
Eigenbeleg.Range("C1")
Opos.Range("C" & Zeilenzähler).Copy _
Eigenbeleg.Range("C2")
Opos.Range("E" & Zeilenzähler).Copy _
Eigenbeleg.Range("C4")
Opos.Range("G" & Zeilenzähler).Copy _
Eigenbeleg.Range("C5")
Opos.Range("H" & Zeilenzähler).Copy _
Eigenbeleg.Range("C3")
'ChDir "C:\Users\H E R B E R T\Downloads\EigenbelegePDF\"
Eigenbeleg.Sheets("Tabelle1").ExportAsFixedFormat Type:=xlTypePDF _
, Filename:="C:\Users\H E R B E R T\Downloads\EigenbelegePDF\Eigenbeleg"
& Sheets("Tabelle1").Range("C1").Text _
& Sheets("Tabelle1").Range("C4").Text _
& Sheets("Tabelle1").Range("C5").Text _
& ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True _
, IgnorePrintAreas:=False, OpenAfterPublish:=True
Zeilenzähler = Zeilenzähler + 1
End If
End Sub

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Methode oder Datenobjekt nicht gefunden
22.09.2020 14:48:20
Nepumuk
Hallo,
den Fehler kann ich nicht nachvollziehen. Aber teste mal:
Option Explicit

Public Sub EigenbelegAnders()
    
    'Variablen definieren
    
    Dim Eigenbeleg As Worksheet
    Dim Opos As Worksheet
    Dim Zeilenzähler As Long
    
    'Tabellen definieren
    
    Set Opos = Workbooks("OPOS2020_Test.xlsm").Worksheets("Opos")
    Set Eigenbeleg = Workbooks("Eigenbeleg.xl.xlsm").Worksheets("Tabelle1")
    
    With Opos
        
        For Zeilenzähler = 3 To .Cells(.Rows.Count, 1).End(xlUp).Row
            
            'Kontrolle ob Zeile nicht leer ist
            If .Cells(Zeilenzähler, 1) <> "" Then
                
                'Kopieren und einfügen
                .Range("A" & Zeilenzähler).Copy _
                    Eigenbeleg.Range("C1")
                
                .Range("C" & Zeilenzähler).Copy _
                    Eigenbeleg.Range("C2")
                
                .Range("E" & Zeilenzähler).Copy _
                    Eigenbeleg.Range("C4")
                
                .Range("G" & Zeilenzähler).Copy _
                    Eigenbeleg.Range("C5")
                
                .Range("H" & Zeilenzähler).Copy _
                    Eigenbeleg.Range("C3")
                
                With Eigenbeleg
                    
                    .ExportAsFixedFormat Type:=xlTypePDF _
                        , Filename:="C:\Users\H E R B E R T\Downloads\EigenbelegePDF\Eigenbeleg" & _
                        .Range("C1").Text & .Range("C4").Text & .Range("C5").Text & ".pdf", _
                        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
                        IgnorePrintAreas:=False, OpenAfterPublish:=True
                    
                End With
            End If
        Next
    End With
    
    Set Eigenbeleg = Nothing
    Set Opos = Nothing
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Methode oder Datenobjekt nicht gefunden
22.09.2020 16:18:19
Carlotta
Perfekt das funktioniert! Danke danke danke :)
;
Anzeige
Anzeige

Infobox / Tutorial

Automatisierung von Eigenbelegen in Excel mit VBA


Schritt-für-Schritt-Anleitung

Um Eigenbelege in Excel zu automatisieren, kannst Du den folgenden VBA-Code verwenden. Dieser Code befüllt eine Vorlage aus einer Datentabelle und speichert sie als PDF.

  1. Öffne Deine Excel-Arbeitsmappe, in der Du die Eigenbelege erstellen möchtest.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul hinzu:
    • Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsm)“.
    • Wähle „Einfügen“ und dann „Modul“.
  4. Kopiere den folgenden Code in das Modul:
Option Explicit
Public Sub EigenbelegAnders()
    'Variablen definieren
    Dim Eigenbeleg As Worksheet
    Dim Opos As Worksheet
    Dim Zeilenzähler As Long
    Dim Filename As String

    'Tabellen definieren
    Set Opos = Workbooks("OPOS2020_Test.xlsm").Worksheets("Opos")
    Set Eigenbeleg = Workbooks("Eigenbeleg.xlsm").Worksheets("Tabelle1")

    For Zeilenzähler = 3 To Opos.Cells(Opos.Rows.Count, 1).End(xlUp).Row
        'Kontrolle ob Zeile nicht leer ist
        If Opos.Cells(Zeilenzähler, 1) <> "" Then
            'Kopieren und einfügen
            Opos.Range("A" & Zeilenzähler).Copy Eigenbeleg.Range("C1")
            Opos.Range("C" & Zeilenzähler).Copy Eigenbeleg.Range("C2")
            Opos.Range("E" & Zeilenzähler).Copy Eigenbeleg.Range("C4")
            Opos.Range("G" & Zeilenzähler).Copy Eigenbeleg.Range("C5")
            Opos.Range("H" & Zeilenzähler).Copy Eigenbeleg.Range("C3")

            'Exportieren als PDF
            Eigenbeleg.ExportAsFixedFormat Type:=xlTypePDF, _
                Filename:="C:\Users\H E R B E R T\Downloads\EigenbelegePDF\Eigenbeleg" & _
                Eigenbeleg.Range("C1").Text & Eigenbeleg.Range("C4").Text & _
                Eigenbeleg.Range("C5").Text & ".pdf", _
                Quality:=xlQualityStandard, IncludeDocProperties:=True, _
                IgnorePrintAreas:=False, OpenAfterPublish:=True
        End If
    Next Zeilenzähler
End Sub
  1. Stelle sicher, dass die Arbeitsmappen „OPOS2020_Test.xlsm“ und „Eigenbeleg.xlsm“ geöffnet sind.
  2. Führe das Makro aus, indem Du im VBA-Editor F5 drückst oder das Makro über das Excel-Menü startest.

Häufige Fehler und Lösungen

  1. Fehler beim Kompilieren: Methode oder Datenobjekt nicht gefunden

    • Überprüfe, ob die Arbeitsmappen korrekt geöffnet und benannt sind. Achte auf die Schreibweise der Arbeitsmappen und Arbeitsblätter.
  2. Fehler bei der Variablenzuweisung

    • Achte darauf, dass Du den Typ der Variablen korrekt definierst. Verwende Long für den Zeilenzähler anstelle von Integer.
  3. Fehlerhafte Datei- oder Pfadangaben

    • Stelle sicher, dass der Pfad für die PDF-Ausgabe existiert und Du Schreibrechte für diesen Ordner hast.

Alternative Methoden

Du kannst auch Power Query verwenden, um Daten aus verschiedenen Quellen zu kombinieren und als PDF zu exportieren. Eine weitere Möglichkeit ist die Verwendung von Excel-Add-Ins, die speziell für die Erstellung von Rechnungen oder Belegen entwickelt wurden.


Praktische Beispiele

Hier ist ein Beispiel, wie Du den Code anpassen kannst, um zusätzliche Informationen zu einem Eigenbeleg hinzuzufügen:

Eigenbeleg.Range("C6").Value = "Zusätzliche Notiz"

Füge diesen Code nach den bestehenden Kopierbefehlen hinzu, um in der Zeile unter den Empfängerdaten eine Notiz hinzuzufügen.


Tipps für Profis

  • Nutze die With-Anweisung, um wiederholte Referenzen zu einem Objekt zu vermeiden. Dies kann Deinen Code lesbarer und schneller machen.
  • Füge Fehlerbehandlungsroutinen hinzu, um sicherzustellen, dass Dein Makro robust ist und nicht bei jedem Fehler abbricht.

FAQ: Häufige Fragen

1. Was bedeutet "Methode oder Datenobjekt nicht gefunden"? Diese Fehlermeldung tritt auf, wenn der VBA-Code versucht, auf ein Objekt zuzugreifen, das nicht existiert oder falsch referenziert wird.

2. Wie kann ich den Pfad zur PDF-Datei ändern? Ändere die Zeile, die mit Filename:= beginnt, und passe den gesamten Pfad zu dem gewünschten Speicherort an.

3. Funktioniert dieser Code in allen Excel-Versionen? Der bereitgestellte Code ist für Excel 2010 und spätere Versionen optimiert. Ältere Versionen könnten Probleme bei der Ausführung haben.

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