Office: (Office 2013) Rechungen mit VBA erstellen und als PDF speichern.

Helfe beim Thema Rechungen mit VBA erstellen und als PDF speichern. in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Leute, da ich ein VBA Neuling bin entschuldige mich für die Fehler und bitte um eure Hilfe. Des Weiteren ist mein Deutsch nicht so Gut und bitte... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von dimah, 6. März 2018.

  1. Rechungen mit VBA erstellen und als PDF speichern.


    Hallo Leute,
    da ich ein VBA Neuling bin entschuldige mich für die Fehler und bitte um eure Hilfe.
    Des Weiteren ist mein Deutsch nicht so Gut und bitte ich auch zu entschuldigen.
    Habe mir den Code von vielen stellen zusammengesucht.

    Ich habe eine Excel-Mappe erstellt, mit der ich meine Rechnungen erstellen möchte. Diese soll nur die Werte, Rahmen und Layout der Tabelle der Rechnungstabelle in einer neu erstellten Tabelle mit dem Rechnungsnamen (bestehen aus Daten, die sich aus der Rechnungstabelle ergeben) übertragen. Die Datei soll als Excel und pdf in einem neuen Ordner mit dem Namen des Rechnungsmonates gespeichert werden. Anschließend soll wieder das Sheet Rechnungstabelle aktiv sein, damit ich die nächste Rechnung erstellen kann.
    Die Datei soll so aussehen, wie die Tabelle Rechnung.
    Meine Probleme sind:
    1. Durch das ganze auf und zumachen der Tabellen dauert dies zu lange, auf mich wirkt mein Code ganz schön primitiv, gibt es nicht eine elegantere Lösung?
    2. Wenn ich am Ende die neu erstellte Datei als PDF speichern möchte, muss ich dies bestätigen, kann ich dies irgendwie umgehen und die Datei direkt speichern?
    3. Geht es, dass es am Ende die neu erzeugte PDF Datei nicht auf geht, sondern einfach erzeugt und geschlossen bleibt?
    4. Wenn die neu erzeugte Mappe mit dem Sheet „name_new_wb“ schließe, bleibt ein leeres Excelfenster im Vordergrund offen, welches ich von Hand Schließen muss. Wie kann ich dies vermeiden? Wichtig ist, dass die Ausgangsdatei „Rechnungsdatei“ offenbleibt, damit ich im nächsten Schritt eine weitere Rechnung erzeugen kann.
    5. Ich wollte mit „Worksheets("Rechnungstabelle").Range("A1:j80").Value = „neue_mappe_neue_seite“.Range("A1:J80").Value“ die Werte übertragen, aber ich habe dies leider nicht geschafft. Daher musste ich zu copy und paste greifen, nach dem ich eine Datei aus der Vorlage erzeugt habe.
    Dies führt dazu, dass sich der zwischen Speicher füllt, wie kann ich diesen löschen? Bei „ClearClipboard = True“ bekomme ich den Fehler, „Variable nicht definiert!“
    Ich danke euch schon mal im Voraus für die Mühe.

    LG Dimah
    Hier ist mein Code.

    Code:
    bitte die Datei: k_vorlage als .xltx nochmal speichern.

    :)
     
    dimah, 6. März 2018
    #1
  2. Niemand hier, der mir helfen kann?
     
    dimah, 8. März 2018
    #2
  3. Hallo dimah,

    versuch es mal mit diesem Code
    Code:
    Hinweis: die Vorlage "k_vorlage.xltx" wir nicht benötigt, ist ja identisch mit dem Worksheet "Rechnungen" in "Rechnungsdatei.xlsm". Eine zweite Excel-Instanz (für Workbook öffnen) braucht man auch nicht.

    Fragen:
    1.) soll die PDF-Datei im gleichen Ordner wie die Exceldatei gespeichert werden? (wenn ja, sind einige Variablen unnötig)
    2.) ist eine Exceldatei schon vorhanden, darf der Benutzer den Namen dann ändern? (wenn ja, muss auch der Name der PDF-Datei geändert werden)
    3.) muss denn VOR dem Speichern der Dateien eine Info (MsgBox) ausgegeben werden, wenn ein neuer Pfad angelegt, bzw. der ermittelte Pfad vorhanden ist?
     
  4. Rechungen mit VBA erstellen und als PDF speichern.

    Bevor du dich weiterquälst solltest du über eine Access-Lösung nachdenken.
    Vorteile: Alle Rechnungen werden in der Datenbank gespeichert und können jederzeit gedruckt oder als PDF ausgegeben werden, komfortable Eingabemasken usw.
    Wenn du mal googelst mit Rechnungen mit Access findest du sehr gute Beschreibungen wie das geht.
     
    rainer176, 9. März 2018
    #4
  5. Hallo Evus,

    erst ein Mal herzlichen Dank für deine Hilfe. Der Code funktioniert toll, habe mir das genau so vorgestellt.

    nun zu den Fragen:

    zu 1. Die pdfs sollten im gleichen Ordner wie die Excel gespeichert werden. Welche Variablen sind unnötig?

    zu 2. Genau so ist es, wenn bereits eine Datei vorhanden ist, soll diese bleiben und die neue Datei soll vom Benutzer mit einem anderen Namen versehen werden, gilt natürlich auch für die pdfs.
    Ich habe jetzt das Problem, dass wenn bei vorhandenen Dateien nicht überschrieben werden soll, die Fehlermeldung:Laufzeitfehler 1004 kommt, die und ich entweder Debuggen oder abbrechen muss. Ich hätte gerne eine If-Schleife, die dies abfängt und beim nicht überschreiben einfach beendet wird.

    zu 3. Nein das muss nicht sein, hatte ich nur zur Kontrolle eingebaut.
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
  6. Hallo Rainer,

    danke für die Info.
    Ich habe aber noch weniger Ahnung vom Access, brauche ich dafür nicht SQL- Kenntnisse und Server?
    Wie erzeuge ich die Rechnungen?
    Wie öffene ich diese?
    wo liegt der Server?

    Das alles hilt mich bisher davon ab, darüber nachzudenken.

    Danke und LG
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
  7. Hallo 2.0;
    Da ich jetzt mit dem Code von Evus meine Rechnungen erzeugen kann, komme ich zu meinem nächsten Problem, womit ich wieder eure Hilfe bedarf.
    Ich trage alle erbrachen Leistungen in dem WB „Leistungsübersicht in Sheet 1 in der Übersichttabelle.
    Wenn ich am Ende des Monats meine Rechnungen erstellen möchte, muss ich von Hand für jeden einzelnen Klienten von I1 – U1 die Werte kopieren und diese in die Rechnungs-WB einfügen.
    Dies mache ich wie folgt:
    Zum Kopieren Beispiel von I1:
    I1 Auswählen
    So filtern, dass die leeren Zeilen ausgeblendet sind
    Die Werte aus den Zeilen 6; 7 und 9 und zwar für die Spalten A-F auswählen und kopieren
    Diese dann in dem WB-Rechnungsdatei / Sheet 1Tabelle 1 in den Spalten A-E und Reihen 23, 24 und 25 einfügen
    Und dann die Rechnungen erzeugen. Ihr könnt euch vorstellen, dass dies schnell nervig und fehleranfällig werden kann.
    Meine Frage ist, ob ich dies auch automatisieren kann und mit VBA abfragen kann.

    Danke nochmal für die Mühe
     
  8. Rechungen mit VBA erstellen und als PDF speichern.

    rainer176, 10. März 2018
    #8
  9. Danke für die Info Rainer,

    habe jetzt so wie im Pdf Steht einige tabellen erstllt, aber ich weiss nicht wie ich die Oberfläche gestallten sol. Also bleiben ich lieber bei Excel.
     
  10. Hallo dimah,

    Codeänderungen (u.a.):
    - Sreenupdate für Verarbeitung ausgeschaltet
    - zusätzliche Sub für Dateiprüfung
    - vor dem Kopieren der "Rechnung" in eine neue Datei wird geprüft ob Datei bereits vorhanden. Benutzer kann Dateinamen ändern, oder Verarbeitung abbrechen, wobei bei Abbruch eine Info ausgegeben wird.
    - wenn Subordner nicht vorhanden, wird dieser automatisch ohne Infoausgabe angelegt.
    - Info am Ende, welche Datei wo gespeichert wurde
    Code:
    Kopier beide Subs in ein neues Modul und ändere den Namen der alten "Übertragen"-Sub um.

    Grüße,
    evus
     
  11. Hallo Evus,

    super Code, Danke sehr. Funktioniert Einwandfrei.
    Bin Jetzt unverschämt und frage dich nochmal.

    Hast du auch hierfür eine Lösung?

    Hallo 2.0;
    Da ich jetzt mit dem Code von Evus meine Rechnungen erzeugen kann, komme ich zu meinem nächsten Problem, womit ich wieder eure Hilfe bedarf.
    Ich trage alle erbrachen Leistungen in dem WB „Leistungsübersicht in Sheet 1 in der Übersichttabelle.
    Wenn ich am Ende des Monats meine Rechnungen erstellen möchte, muss ich von Hand für jeden einzelnen Klienten von I1 – U1 die Werte kopieren und diese in die Rechnungs-WB einfügen.
    Dies mache ich wie folgt:
    Zum Kopieren Beispiel von I1:
    I1 Auswählen
    So filtern, dass die leeren Zeilen ausgeblendet sind
    Die Werte aus den Zeilen 6; 7 und 9 und zwar für die Spalten B-F auswählen "Anfang und Endzeit werde für die Rechung nicht benötigt" und kopieren
    Diese dann in dem WB-Rechnungsdatei / Sheet 1Tabelle 1 in den Spalten A-E und Reihen 23, 24 und 25 einfügen
    Und dann die Rechnungen erzeugen. Ihr könnt euch vorstellen, dass dies schnell nervig und fehleranfällig werden kann.
    Meine Frage ist, ob ich dies auch automatisieren kann und mit VBA abfragen kann.
     
  12. Hallo dimah,

    hatte leider keine Zeit mich früher zu melden - vielleicht kannst du ja den Code noch gebrauchen. Ein paar Änderungen sind aber in deinen Tabellen noch nötig.

    Datei Leistungsübersicht.xlsx
    - die Spalten in der Kopfzeile mit den Klientenkürzeln MM, ZM,... dürfen nicht mit dem Format "Buchhaltung" (???) formatiert werden, da Excel diese sonst nicht findet. Standard reicht.
    - die Monster WENN-Formel in Spalte W (Zeile 2-11) könntest du ersetzen, Formel: =ANZAHL(Übersichtstabelle[@[MM]:[MY]])
    - beim Filtern wird auch die Datumsspalte (B) berücksichtigt, wegen Zeile mit "Summe:" in Spalte A.

    Datei Rechnungsdatei.xlsm
    - Blatt "Rechnungstabelle", Zelle A30 - Text "Summe" ersetzen durch Formel: ="Summe". Grund: in der Tabelle "Kulturvermittlung" werden alle Werte vor dem Kopieren gelöscht (mit Ausnahme der letzten beiden Zeilen), die Formeln bleiben unverändert.
    - Blatt "Hilfsseite", Zelle B1 - Formel eintragen: =INDEX(Kliententabelle[Kürzel];A1). Grund: wird benötigt für "suche Spalte mit den Klientendaten xy" in der Datei Leistungsübersicht.xlsx

    Wozu Daten der Tabelle "Kliententabelle" per Formel auf das Blatt Hilfsseite übertragen werden, verstehe ich nicht. Wenn du das vereinfachen willst, musst du aber die Codezeile "kennung = .Worksheets("Hilfsseite").Range("B1").Value" anpassen.

    Grüße,
    evus

    Code:
     
  13. Rechungen mit VBA erstellen und als PDF speichern.

    WAW,
    danke Evus, genau so sollte es sein.

    Geil*Smilie



     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
  14. Ich nochmal,

    eine Frage habe ich noch.
    jetzt habe ich bei der Überlegung eine Sache vergessen.
    Ich stelle die Rechnung mtl.
    In der Leistungsübersicht trage ich aber alle Leistungen des Jahres ein.
    Wenn ich mit dem Code Kopiere bekomme ich da ein Problem.

    Nun meine Frage:

    Wenn ich in dem WB Rechnungsdatei in WS Rechnungstabelle Zelle "B19" den Monat manuel eintrage, wie kann ich nur diesen Monat aus der "Leistungsübersicht" kopieren und nicht die gesamte Tabelle.

    Danke in Vorraus.

     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
  15. Hallo dimah,

    trage in Zelle "B19" Monat/Jahr manuell ein und ändere in der Sub Daten_kopieren die Zeile
    von
    If filterBereich(wsQListe, kennung) Then
    in
    If filterBereich(wsQListe, kennung, wsZ.Range("B19").Value) Then

    und ersetzte die Function filterBereich durch folgenden Code:
    Code:
     
Thema:

Rechungen mit VBA erstellen und als PDF speichern.

Die Seite wird geladen...
  1. Rechungen mit VBA erstellen und als PDF speichern. - Similar Threads - Rechungen VBA erstellen

  2. Datei in mehreren Ordnern suchen und wenn gefunden öffnen?! Macro / VBA

    in Microsoft Excel Hilfe
    Datei in mehreren Ordnern suchen und wenn gefunden öffnen?! Macro / VBA: Hallo Leute, Hoffentlich könnt ihr mir hier helfen, ich krieg den Syntax einfach nicht hin (wahrscheinlich ist es auch totaler käse den ich programmiert habe). Also im Grunde soll eine Datei...
  3. Textteile aus Zelle mit mehreren Absätzen

    in Microsoft Excel Hilfe
    Textteile aus Zelle mit mehreren Absätzen: Hallo, ich habe folgendes Problem: Ich habe in einer Liste in einer Zelle mehrere Angaben aus denen ich Textteile (z.B. alles was in () oder {} ist) herausziehen will, um damit weiter zurechnen....
  4. Aufrufen Datei aus SharePoint per VBA

    in Microsoft Access Hilfe
    Aufrufen Datei aus SharePoint per VBA: Wer kann mir helfen. In meiner Firma gibt es Dateien in diversen Ordner in Form von SharePoints, worauf alle Kolleginnen und Kollegen zugreifen kann. Dort habe ich eine Excel-Vorlage, worin die...
  5. VBA: Spalten auf anderen Worksheeds in der Mappe ausblenden.

    in Microsoft Excel Hilfe
    VBA: Spalten auf anderen Worksheeds in der Mappe ausblenden.: Hallo zusammen, Eine Tabelle mit 9 Worksheets, Datenblatt, Studien, Studie_1 ...Studie_7. Auf dem Deckblatt werden in Zelle B4-B10 die Namen der Studien eingetragen. Davon abhängig ob ein Name...
  6. VBA Zeilen kopieren mit Bedingung

    in Microsoft Excel Hilfe
    VBA Zeilen kopieren mit Bedingung: Hallo zusammen, Ich möchte per Makro Zeilen aus Tabelle2 in Tabelle3 kopieren, wenn eine Bedingung erfüllt ist. Bedingung: Der Wert in Spalte E (Tabelle2) kommt in Tabelle1 in Spalte E vor....
  7. VBA - Datensätze ans Ende einer anderen Tabelle kopieren

    in Microsoft Excel Hilfe
    VBA - Datensätze ans Ende einer anderen Tabelle kopieren: Hallo zusammen, ich habe gerade eine "Abrechnungs"-Datei für einen Kindergartenbasar erstellt. Es wäre klasse, wenn man per Schaltfläche die Datensätze aus der Tabelle "Kaeufer" ans Ende der...
  8. Laufzeitfehler 9 VBA

    in Microsoft Excel Hilfe
    Laufzeitfehler 9 VBA: Nschdem ich die Office Version von 2010 auf 2019 aktualisiert habe wird mir der Laufzeitfehler 9 ausgegeben. Das ist der Code Sub FiberCollect() Dim NumRows As Long 'letzte celle Dim Counter As...
  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