Office: (Office 2016) Serienbriefzeilen ohne Inhalt immer ausblenden

Helfe beim Thema Serienbriefzeilen ohne Inhalt immer ausblenden in Microsoft Word Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, Ich habe gerade eine Rechnungsformular erstellt und es über die Serienbrieffunktion an eine Exceltabelle angebunden. Es gibt auf dem... Dieses Thema im Forum "Microsoft Word Hilfe" wurde erstellt von schubste, 9. Januar 2023.

  1. schubste Neuer User

    Serienbriefzeilen ohne Inhalt immer ausblenden


    Hallo zusammen,

    Ich habe gerade eine Rechnungsformular erstellt und es über die Serienbrieffunktion an eine Exceltabelle angebunden. Es gibt auf dem Rechnungsformular 2 Abrechnungspositionen, wobei die zweite Position auch keine Werte enthalten kann und somit den Wert 0 anzeigt. Besteht die Möglichkeit, die Position 2 (komplette Zeile) immer auszublenden, wenn der Inhalt leer bzw. 0 ist?

    Herzlichen Dank für Eure Hilfe.
     
    schubste, 9. Januar 2023
    #1
  2. Gerhard H Erfahrener User
    Hallo schubste,

    sehr schwer zu sagen anhand deines Bildes. Zeigt das die Daten von einem oder von mehreren Datensätzen? Was davon sind Seriendruckfelder und was nicht?

    Wenn der fertige Seriendruck längere bzw. viele Tabellen mit "Null-Zeilen" enthält, dann könnte ich mir eine Lösung im Nachhinein vorstellen, wo du per Makro die Tabelle(n) durchgehst und überall dort, wo in der Spalte "Menge" eine 0 steht, die komplette Zeile löschen lässt.
    Falls du dabei Hilfe brauchst, bitte ein echtes Muster (Word-Dokument) des fertigen Seriendrucks hochladen. Bei Bedarf gekürzt und anonymisiert.

    Das Ausblenden direkt beim Zusammenfügen zu erledigen, halte ich bei dem Aufbau auf jeden Fall für schwierig.
     
    Gerhard H, 10. Januar 2023
    #2
  3. schubste Neuer User
    Hallo Gerhard,

    Danke für deine Antwort. ich habe als Beispiel mal ein einfaches Muster erstellt. In der Worddatei habe ich alle Seriendruckfelder gelb markiert. Es geht nur eigentlich mehr oder weniger darum, dass wenn die Spalte "Anzahl Übernachtung" leer ist, bzw. den Wert 0 aufweist, die Zeile mit der Position 2 (Übernachtung) auf der Rechnung ausgeblendet wird.

    Herzlichen Dank für deine Hilfe.
     
    schubste, 12. Januar 2023
    #3
  4. Gerhard H Erfahrener User

    Serienbriefzeilen ohne Inhalt immer ausblenden

    Hallo schubste,

    wie schon vermutet: Mit Seriendruck-Bordmitteln kannst du keine Tabellenzeile löschen. Aber man könnte den fertigen Seriendruck entsprechend per Makro bearbeiten. Zuvor solltest du aber deine Dateien ein bisschen bereinigen:

    1.
    In deinen Musterdateien stimmen manche Spaltenüberschriften in der Excel-Tabelle nicht mit den Bezeichnungen der Seriendruckfelder überein. Du solltest zunächst überprüfen, ob das in deinen Originaldateien auch der Fall ist.

    2.
    In der Excel-Tabelle gibt es Spaltenüberschriften mit Leerzeichen. Die "übersetzt" das Serienbrief-Hauptdokument automatisch mit Unterstrichen. Verlassen würde ich mich darauf nicht, sondern auch in der Exceltabelle von vorneherein mit Unterstrichen arbeiten.

    2.
    "wenn die Spalte "Anzahl Übernachtung" leer ist, bzw. den Wert 0 aufweist"
    Entweder trägst du in diese Spalte eben nichts ein, oder eine Null, aber bitte nicht mischen. Das Makro richtet sich nach deiner Muster-Vorgabe. Es löscht Zeilen, in denen bei Übernachtung / Menge nichts eingetragen ist.

    Dann speichere folgendes Makro in einem Modul deiner normal.dotm und lass es auf den ausgeführten Seriendruck los (der dann natürlich grad das aktive Dokument sein muss).
    Code:
    Sub leereÜbernachtung()
    Dim tabelle As Table
    
    For Each tabelle In ActiveDocument.Tables
      
        'die Tabelle mit den Adressdaten von der Prüfung ausschließen
        If InStr(tabelle.Cell(1, 3).Range.Text, "Menge") > 0 Then
          
            'leere Zelle in der Zelle Übernachtung.Menge identifizieren und ggf löschen
            If Len(tabelle.Cell(3, 3).Range.Text) = 2 Then
                tabelle.Rows(3).Delete
            End If
        End If
          
    Next tabelle
    End Sub
    Falls es Fehlermeldungen gibt, bitte im Wortlaut bekanntgeben und ggf. die bereinigten Musterdateien nochmal hochladen.
     
    Gerhard H, 12. Januar 2023
    #4
  5. schubste Neuer User
    Hallo Gerhard, herzlichen dank für die ausführliche Beschreibung. VBA habe ich bisher nur in Excel gemacht. Werde mich damit beschäftigen und hier Rückinfo geben.
     
    schubste, 12. Januar 2023
    #5
  6. schubste Neuer User
    Hallo lieber Gerhard,

    ich bekomme es leider nicht hin. Ich denke, dass ich gemacht habe, was du geschrieben hast und füge dir hier nochmal die aktualisierten Dateien hinzu. Das Makro löscht mir alle Übernachtungspositionen, also auch die, die einen Wert größer 0 enthalten. Ich habe festgestellt, dass es auch nur funktioniert, wenn kein Wert übermittelt wird. Sobald Excel eine 0 übermittelt, was leider in der Original Datei passiert, wird nichts gelöscht.

    Herzlichen Dank für deine Hilfe.
     
    schubste, 12. Januar 2023
    #6
  7. Gerhard H Erfahrener User
    Hallo ,

    ich habs nochmal geprüft; bei mir werden nur die Zeilen gelöscht, in denen bei Menge-Übernachtung nichts drin steht.

    Die Geschichte mit 0 oder leer lässt sich auf zweierlei Art beheben:
    Entweder durch einen Eingriff in die Datenquelle selber (Ersetze 0 durch nichts - das fände ich den besseren Weg)
    Oder durch Anpassung des Makros. Das hab ich gemacht, und zwar wie folgt:

    schubsteVorlage_Rechnungen2.xls:
    Dort hab ich den Punkt in der Spaltenüberschrift "Anzahl_Übernachtung" rausgenommen weil das Seriendruckfeld auch ohne Punkt ist.
    Und ich hab im ersten Datensatz eine 0 eingetragen, damit dein Muster mit der von dir geschilderten Realität übereinstimmt.

    schubsteRechnungen_neu.docx:
    Das hab ich unverändert gelassen. Es empfiehlt sich jedoch, die Seriendruckfelder mit Geldbeträgen mit einem Formatschalter auszustatten, damit nicht ein Rattenschwanz an Kommastellen rauskommt, aber das ist eine andere Baustelle.
    Dann hab ich dieses Dokument mit der obigen Datenquelle verbunden.

    Es resultiert serienbriefeUnbearbeitet.docx.
    Auf dieses Dokument hab ich das Makro losgelassen, das ich für das Problem "Null oder nichts" angepasst habe.
    Es resultiert serienbriefeBearbeitet.docx, in welchem die ersten drei Seiten (Datensätze) ohne die Zeile Übernachtungen erscheinen, die folgenden aber mit.
    Hier das Makro:
    Code:
    Sub leereÜbernachtung()
    Dim tabelle As Table
    
    For Each tabelle In ActiveDocument.Tables
     
        'die Tabelle mit den Adressdaten von der Prüfung ausschließen
        If InStr(tabelle.Cell(1, 3).Range.Text, "Menge") > 0 Then
    
            'leere Zelle in der Zelle Übernachtung.Menge identifizieren und ggf löschen
            If Len(tabelle.Cell(3, 3).Range.Text) = 2 Or _
            InStr(tabelle.Cell(3, 3).Range.Text, "0") > 0 Then
                tabelle.Rows(3).Delete
            End If
        End If
       
    Next tabelle
    End Sub
    Die vier Dateien als zip-Datei im Anhang. Schau mal, ob das jetzt so ist wie gewünscht.
     
    Gerhard H, 13. Januar 2023
    #7
  8. schubste Neuer User

    Serienbriefzeilen ohne Inhalt immer ausblenden

    Lieber Gerhard, du hast mir wirklich sehr geholfen. Es funktioniert wunderbar. Herzlichen Dank dafür. Serienbriefzeilen ohne Inhalt immer ausblenden *:)*

    Ich werde mich noch ein bisschen damit auseinandersetzen, da auf die Rechnung noch eine weitere Position muss, die ebenfalls mit Menge 0 kommen kann und dann natürlich auch gelöscht werden muss. Aber du hast mir hier ja eine super Vorlage erstellt, also sollte ich diese Erweiterung selbst schaffen. Es bleibt spannend.
     
    schubste, 13. Januar 2023
    #8
  9. schubste Neuer User
    Hallo Gerhard,
    Es ist nun tatsächlich so, dass noch eine 4 Zeile hinzugekommen ist, was die ganze Sache massiv erschwert, da nun praktisch in jeder Zeile "Menge 0" vorkommen kann.
    Ich habe mir nun folgendes gedacht: Als erstes entferne ich die Zeile 4 mit Menge 0, danach entferne ich Zeile 3 mit Menge 0 und zum Schluss das Gleiche nochmal mit Zeile 1. Theoretisch dürften es dann keine Zeilen mehr mit Menge 0 existieren.

    Leider stelle ich mich beim umsetzen des Codes, oder besser gesagt Anpassen deines Codes scheinbar sehr dumm an. Ich dachte mir, das Einzige, was ich ändern müsste, wäre die Angabe der Zeile. Aber Pustekuchen, das zerschießt mir leider das Layout. Ich habe folgendes versucht um nur die Zeile 4 zu löschen:

    Code:
    Sub leereÜbernachtung()
    
    'CODE Mit Zahl 0 löschen
    
    Dim tabelle As Table
    
    For Each tabelle In ActiveDocument.Tables
     
        'die Tabelle mit den Adressdaten von der Prüfung ausschließen
        If InStr(tabelle.Cell(1, 3).Range.Text, "Menge") > 0 Then
    
            'leere Zelle in der Zelle Übernachtung.Menge identifizieren und ggf löschen
            If Len(tabelle.Cell(4, 3).Range.Text) = 2 Or _
            InStr(tabelle.Cell(4, 3).Range.Text, "0") > 0 Then
                tabelle.Rows(4).Delete
            End If
        End If
     
    Next tabelle
    End Sub
    Damit hat es nicht funktioniert. Was mache ich denn falsch?

    Ein weiteres Problem nach den vorgesehene Löschaktionen ist die Nummerierung, also die erste Spalte (POS.). Das stimmt ja dann auch nicht mehr. Gibt es hier eventuell auch eine Lösung, also sowas wie "nummeriere neu nach löschen"?

    Eine Beispieldatei findest du im Anhang.

    Herzlichen Dank für eine Antwort.

    Gruß Stefan
     
    Zuletzt bearbeitet: 15. Januar 2023
    schubste, 15. Januar 2023
    #9
  10. Gerhard H Erfahrener User
    Hallo Stephan,

    Fehlerbeschreibungen mit "hat nicht funktioniert" sind immer wenig hilfreich. Gabs Fehlermeldungen? Wurde die falsche Zeile gelöscht? Keine gelöscht?

    Ich fand 2 Probleme:

    1.
    Dein Makro ackert natürlich nur die Zeile 4 durch, aber die 0 kann ja jetzt in jeder beliebigen Zeile stehen
    2.
    Die Prüfung mittels InStr(tabelle.Cell(1, 3).Range.Text, "Menge") > 0 taugt leider nichts, da auch ein Eintrag "10" eine Null enthält. Das hab ich erst jetzt gemerkt, wo im Beispiel auch eine 10 enthalten ist.

    Für Problem 1 wäre das Mittel der Wahl, die Spalte Menge durchzuschleifen, und zwar einfach vom Tabellenende her (Löschen funktioniert meist nur fehlerfrei, wenn man von unten nach oben vorgeht).
    Dazu wäre es aber zwingend erforderlich, dass es in der Spalte "Menge" nur Nullen oder Zahlen größer 0 gibt (so wie es in deinem Musterdokument jetzt der Fall ist), damit nicht versehentlich Zeilen ab der Summenzeile gelöscht werden.
    Andernfalls müsstest du statt for i = tabelle.rows.count.... die jeweils letzte Datenzeile einsetzen: for i = 4 to 1 step -1 und die 4 jeweils anpassen, wenn sich an der Anzahl der Datenzeilen was ändert.

    Für Problem 2 hab ich das Kriterium geändert. Teste mal folgendes Makro:
    Code:
    Sub NullmengenRaus()
    
    'CODE Mit Zahl 0 löschen
    
    Dim tabelle As Table
    Dim i As Long
    For Each tabelle In ActiveDocument.Tables
     
        'die Tabelle mit den Adressdaten von der Prüfung ausschließen
        If InStr(tabelle.Cell(1, 3).Range.Text, "Menge") > 0 Then
    
            'Nuller in der Spalte Menge identifizieren und Zeile ggf löschen
            For i = tabelle.Rows.Count To 1 Step -1
                If Left(tabelle.Cell(i, 3).Range.Text, Len(tabelle.Cell(i, 3).Range.Text) - 2) = "0" Then
                    tabelle.Rows(i).Select
                    tabelle.Rows(i).Delete
                End If
            Next i
        End If
     
    Next tabelle
    End Sub
    
     
    Gerhard H, 15. Januar 2023
    #10
  11. schubste Neuer User
    Hallo Gerhard,
    Vielen Dank. Ich habe das Makro jetzt durchlaufen lassen und habe ein paar Fehler bekommen, bzw. Löschungen an falscher Stelle (siehe Dokument im Anhang Seite 6, 7,12). Auf diesen 3 Seiten gibt es immer 2 Positionen mit dem Wert 0. Komisch ist nur, dass der Fehler bei Blatt 1 nicht auftritt, obwohl auch dort zwei Positionen mit 0 aufgeführt sind.
     
    schubste, 15. Januar 2023
    #11
  12. Gerhard H Erfahrener User
    Hallo Stephan,

    jetzt musst du mir auf die Sprünge helfen: Wenn auf den Seiten 6,7 und 12 in zwei Datenzeilen Nullen eingetragen sind, dann bleibt doch nach Makrodurchlauf eben nur eine Zeile übrig, und zwar diejenige, in der eine Zahl größer als Null steht. Genau das seh ich in deinem Musterdokument.

    Kannst du mir sagen, wo du Fehler siehst, und wo Löschungen an falscher Stelle?

    Die Zeile tabelle.rows(i).Select steht übrigens nur drin damit man beim Einzelschritt-Durchlauf besser sieht, welche Zeile dran ist. Die kann später raus.
     
    Gerhard H, 16. Januar 2023
    #12
  13. schubste Neuer User

    Serienbriefzeilen ohne Inhalt immer ausblenden

    Hallo Gerhard,
    In der Tat etwas seltsam. Schau dir mal das Bild an. Auf der rechten Seite siehst du das Dokument Seite 6, nachdem ich das Makro ausgeführt habe. Dort fehlen plötzlich die Spalten der Einzelpreise. Ich habe das Dokument dann gespeichert, neu geöffnet und siehe da, plötzlich sieht Seite 6 wieder richtig aus. Weißt du vielleicht, woran das liegen kann?
     
    schubste, 16. Januar 2023
    #13
  14. Gerhard H Erfahrener User
    Hallo Stephan,

    da ist ja alles durcheinander. Da muss ich mein Makro aber in Schutz nehmen. Sowas macht das nicht. Im Ernst, da hilft nur eins: beobachten, ob es nochmal vorkommt und dann kann man nochmal drüber nachdenken.

    Was ich noch vergessen hab: Wenn du bereits im Seriendruck-Hauptdokument für die Spalte 1 der Datenzeilen eine automatische Nummerierung einfügst, müsste die sich im fertigen Serienbrief automatisch anpassen. Hab ich jetzt nicht getestet.
     
    Zuletzt bearbeitet: 16. Januar 2023
    Gerhard H, 16. Januar 2023
    #14
  15. schubste Neuer User
    Hallo Gerhard,
    Es ist jedes mal so, wenn ich das Makro ausführe. Aber wie du schon sagst, liegt es nicht am Makro, sondern wohl an Word. Sobald ich das fertige Dokument dann speichere, oder in ein PDF umwandle, ist alles korrekt abgebildet und genau so, wie ich es mir vorgestellt habe. Herzlichen Dank für deine Hilfe und Geduld.


    Den Gedanken hatte ich in der Tat auch schon. Mal schauen, ob mir da eine Umsetzung gelingt. Danke für den Hinweis.
     
    schubste, 17. Januar 2023
    #15
Thema:

Serienbriefzeilen ohne Inhalt immer ausblenden

Die Seite wird geladen...
  1. Serienbriefzeilen ohne Inhalt immer ausblenden - Similar Threads - Serienbriefzeilen Inhalt ausblenden

  2. Bestimmte Inhalte mehrerer Tabellenblätter auf separatem Blatt darstellen

    in Microsoft Excel Hilfe
    Bestimmte Inhalte mehrerer Tabellenblätter auf separatem Blatt darstellen: Hallo zusammen, in einer Mappe möchte ich die Inhalte in Spalte A der Blätter 1.0 und 1.1 auf dem Blatt 2.0 sammeln. Die Einträge sollen dort untereinander ohne Leerzeilen stehen, wenn der...
  3. Inhalte von Zeilen anhand ID zusammenführen

    in Microsoft Excel Hilfe
    Inhalte von Zeilen anhand ID zusammenführen: Hallo, ich haben folgende Tabelle: A | B ID1 | Text1 ID1 | Text2 ID2 | Text3 ID3 | Text4 Jetzt sollen die Texte, die eine identische ID haben, alle in eine Zeile zusammengeführt werden....
  4. VBA: Mit MsgBox bestimmte Inhalte von Zeile leeren

    in Microsoft Excel Hilfe
    VBA: Mit MsgBox bestimmte Inhalte von Zeile leeren: Hallo Excel Freunde, ich habe in der Tabelle, Spalte A fortlaufende ID Nummern hinterlegt (1-200). Jetzt möchte den Inhalt (Zeile) z.B ID 180 leeren. Dabei soll nicht die ganze Zeile geleert...
  5. SVerweis auch mit farbig formatierten Inhalten?

    in Microsoft Excel Hilfe
    SVerweis auch mit farbig formatierten Inhalten?: Ich möchte per Dropdown Feld jeweils die komplette Zeile der angehängten Tabelle einfügen. Dabei soll nicht nur der Inhalt (hier jeweils das "X") übernommen werden sondern auch die farbliche...
  6. Inhalte mehrer Spalten in zwei Spalten (untereinander)

    in Microsoft Excel Hilfe
    Inhalte mehrer Spalten in zwei Spalten (untereinander): Hallo, ich habe Daten, die wie in der Tabelle unten formatiert sind. Ich habe ein ähnliches Thema bereits im Forum gefunden: Einziger Unterschied ist, dass ich nicht nur eine Liste aller...
  7. Zeilen mit bestimmten Inhalt in anderes Tabellenblatt kopieren

    in Microsoft Excel Hilfe
    Zeilen mit bestimmten Inhalt in anderes Tabellenblatt kopieren: Guten Morgen, ich bräuchte eure Hilfe. Ich habe eine Tabelle in der Anfragen und Buchungen von Terminen eingetragen werden. Wenn ein Termin nur angefragt wurde, wird nur die Zelle "Anfragedatum"...
  8. Inhalt der Zelle anzeigen, nicht den Zellnamen

    in Microsoft Excel Hilfe
    Inhalt der Zelle anzeigen, nicht den Zellnamen: Guten Abend in die Runde, ich bin ganz neu hier, habe mich gerade ganz tapfer durch alle möglichen "alle-Bilder-mit-Autos" und "alle-Bilder-mit-Fahrrädern"-anklicken-Aufgaben geklickt und hoffe...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden