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

Forumthread: Rechnung erstellen und Funktionen automatisieren.

Rechnung erstellen und Funktionen automatisieren.
Manfred
Hallo.
Habe ein Problem mit der Automatisierung meiner Rechnungstabelle.
Worum es geht:
- Habe eine Vorlage (.xlt) für eine Rechnung erstellt.
- Datum und Teile der Rechnungsnummer ("XXX"-2009) werden automatisch erstellt.
- "Bezeichnungseingabe" der abzurechnenden Dienstleistungen werden per DropDown ausgewählt. Dadurch wird direkt der Einzelpreis ermittelt und die dafür vorgesehene Spalte geschrieben. Anzahl (z.B. der Stunden) sind händig einzugeben und der Gesamtpositionspreis wird dann wieder automatisch errechnet. Berechnungen hab ich alle soweit im Griff.
Aber jetzt kommst:
Brauche noch drei Funktionen.
Automatisches Speichern der Datei mit automatischer Vergabe des Dateinamens (zum Teil schon über VB erledigt durch auslesen der automatisch erstellten Bestellnummer). Nun soll aber zu der nummerischen Speicherung der Rechnung (.xls) auch gleichzeitig die .xlt aktualisiert und gespeichert werden werden, aber ohne die Positionen und Preise aus der abgespeicherten Rechnung (muß diese sonst jedes Mal händig löschen.
Ziel:
Rechnungsvorlage öffnen - Rechnung schreiben - automatisch speichern der Rechnung und gleichzeitig die Vorlage mit aktualisierter Bestellnummer aber ohne Dienstleistungbeschreibung und Preise speichern.
Falls die Beschreibung zu allgemein ist, kann ich auch gerne die Datei hochladen.
Muß nur noch sehen wo ich das machen kann, da ich mich gerade erst angemeldet hab.
Allen schon mal Danke im Voraus!!!
P.S.: Rechnung soll noch weiter automatisiert werden, z.B. wenn letzte Beschreibungszeile der Dienstleistung voll ist, automatisch eine neue Zeile anfügen.
Bei mehreren Seiten automatischer Übertrag der Zwischensumme und beim speichern der Vorlage Zeilen wieder auf Ursprungsanzahl setzen.
Denke aber sollte zuerst mal das eine Prob lösen.-)
Anzeige
AW: Rechnung erstellen und Funktionen automatisieren.
13.08.2009 11:05:50
Manfred
Hier der Code:
Wobei ' ###### Automatisch Zeilen einfügen und Formeln, Formate etc. übernehmen ### NICHT funktioniert!
Option Explicit
' ###### Schreibschutz für Makros deaktivieren und RechnungsZähler beim Öffnen der Datei erhöhen! ###
Private Sub Workbook_Open()
' ###### heb den Schreibschutz manuell auf und setze ihn dann per Makro nach folgendem Muster: # _
' ###### Durch den Parameter UserInterfaceOnly gilt der Blattschutz nur für manuelle Eingaben,  _
nicht aber für Makros. ###
Worksheets("Rechnung für Dienstleistungen").Protect UserInterfaceOnly:=True
' ###### ENDE "heb den Schreibschutz manuell auf und setze ihn dann per Makro nach folgendem  _
Muster:"! ###
' ###### in der folgenden Zeilen wird der RechnungsZähler beim Öffnen der Datei erhöht werden! # _
ActiveSheet.Range("F6") = ActiveSheet.Range("F6") + 1
End Sub

' ###### ENDE "der RechnungsZähler wird beim Öffnen der Datei erhöht"! ###
' ###### Automatisch Zeilen einfügen und Formeln, Formate etc. übernehmen ###
Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1).Address = Target.Address Then
With Application
.ScreenUpdating = False
Range(Cells(Target.Row, 1), Cells(Target.Row, 5)).Copy
Cells(Target.Row + 1, 1).PasteSpecial Paste:=xlPasteFormulasAndNumberFormats
ActiveCell.ClearContents
.GoTo ActiveCell.Offset(-1, 0)
.ScreenUpdating = True
Application.CutCopyMode = False
End With
End If
End Sub

' ###### ENDE "Automatisch Zeilen einfügen und Formeln, Formate etc. übernehmen"! ###
' ###### in den folgenden Zeilen wird die AutoSave-Funktion gesetzt mit fortlaufendem Dateiname! ###
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim aw
If ThisWorkbook.Saved Then Exit Sub
aw = MsgBox("Änderungen speichern?", vbYesNoCancel)
Select Case aw
Case vbYes: SpeichernUnter
Case vbNo: ThisWorkbook.Saved = True
Case vbCancel: Cancel = True
End Select
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI Then MsgBox "Dateiauswahl deaktiviert! Dateiname wird automatisch vergeben.  _
Speicherort: D:\Rechnung_XXX-2009!"
Cancel = True
SpeichernUnter
End Sub

Private Sub SpeichernUnter()
Dim fn As String
' ###### Dateiname ermitteln und prüfen: ###
fn = Worksheets("Rechnung für Dienstleistungen").Range("D6")
If Trim(fn) = "" Or _
InStr(fn, ".") > 0 Or _
InStr(fn, "\") > 0 Or _
InStr(fn, "/") > 0 Or _
InStr(fn, " 0 Or _
InStr(fn, ">") > 0 Or _
InStr(fn, "[") > 0 Or _
InStr(fn, "]") > 0 Or _
InStr(fn, ":") > 0 Or _
InStr(fn, "|") > 0 Or _
InStr(fn, "*") > 0 Or _
InStr(fn, "?") > 0 Then
MsgBox "Unzulässiger Dateiname!" & vbLf & "Datei wurde nicht gespeichert!", vbCritical
Exit Sub
End If
Application.EnableEvents = False
Application.DisplayAlerts = True
On Error Resume Next
' ###### in der folgenden Zeile wird der Dateiname und Speicherort bestimmt (Rechnung für  _
Dienstleistungen!D6)! ###
ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & "Rechnung_" & fn & ".xls"
If Err.Number > 0 Then MsgBox Err.Description, vbCritical, "Fehler " & Err.Number
On Error GoTo 0
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub

' ###### ENDE "wird die AutoSave-Funktion gesetzt mit automatischem Dateiname"! ###
P.S.: Wie und wo kann ich denn die Datei hochladen, falls nötig und gewünscht?
Anzeige
AW: Rechnung erstellen und Funktionen automatisieren.
13.08.2009 15:28:08
robert
hi,
rechts über der email-adresse
hier gehts zum file-upload
gruß
robert
AW: Rechnung erstellen und Funktionen automatisieren.
13.08.2009 17:56:02
Manfred
Danke Robert!
Werde die Datei spätestens morgen uploaden, in der Hoffnung, dass Du mir vielleicht auch bei meinem Problem, was ich mit der Automatisierung hab, helfen kannst.
P.S.: Wo ist den der "Abmelde-Button" hier im Forum. Denn so wie es aussieht, bin ich selbst nach einem Rechnerneustart immer noch angemeldet und sehe all meine Daten...
Ist das normal?
Und was bedeutet "Frage noch offen"? Muß ich da 'nen Haken setzen? Ich mach's einfach mal...
Anzeige
AW: Rechnung erstellen und Funktionen automatisieren.
13.08.2009 18:18:22
robert
hi,
hast du auch die bedingungen für datei-upload gelesen?
dateigröße, dateiname, speicherort(am besten C:)
abmeldebutton gibt es keinen, beiträge wandern nach ein paar tagen ins archiv
zu frage noch offen- wenn du meinst noch keine lösung für dein problem zu haben,
haken bei frage noch offen
gruß
robert
Anzeige
AW: Rechnung erstellen und Funktionen automatisieren.
14.08.2009 10:14:17
Manfred
Hallo.
Hab die Datei nun hochgeladen unter:
https://www.herber.de/bbs/user/63824.xlt
Hoffe auf Hilfe von Euch.
Nochmal kurze Zusammenfassung:
Wie gesagt geht es zuerst mal darum, wenn eine Rechnung als .xls (durch die .xlt erstellt) gespeichert wurde und analog dazu die .xlt mit aktualisiertem Stand auch, dass beim nächsten öffnen der Vorlage .xlt die Einträge unter Beschreibung leer sind, um die neue Bestellung mit neuen Daten zu füttern.
Den VB-Code habe ich gestern wieder etwas abgeändert, speichert nun die .xls und die aktualisierte .xlt gleichzeitig per Knopfdruck.
Alles was im VB-Code steht funktioniert auch soweit. Auskommentiert ist "automatisch Zeilen einfügen...", funktioniert leider noch nicht.
P.S.: Bereits geschriebene und gespeicherte Rechnungen sollen / dürfen nicht mehr bearbeitet werden. Für die Rechnungserstellung ist nur die aktualisierte .xlt vorgesehen.
Danke im Voraus.
Manfred
Anzeige
AW: Rechnung erstellen und Funktionen automatisieren.
14.08.2009 12:09:16
Manfred
Bezüglich meiner Anfrage ist mir vielleicht etwas eingefallen, indem ich einen Schritt in der Problemlösung vorgreife.
Wenn ich durch VB automatisch "Beschreibungs"-zellen (inklusive Formatierung, Berechnungen und DropDowns) einfügen lasse, sobald die letzte "Beschreibungs"-zellen über das DropDown-Menü mit Werten gefüllt wird, habe ich ja immer eine "leere (Inhalte, Formate, Berechnungen etc. sollen natürlich mit übergeben werden)" "Beschreibungs"-zellen übrig.
Wenn ich nun über VB definiere, dass der Inhalt der letzten "Beschreibungs"-zellen in alle "Beschreibungs"-zellen der .xlt geschrieben werden, sind diese doch wieder "leer".
Vielleicht besteht auch die Möglichkeit die ursprünglich "leeren" "Beschreibungs"-zellen der .xlt beim Abspeichern der .xlt zurück zu schreiben. Hat den Vorteil, dass die "Beschreibungs"-zellen durch einen Schritt wieder in den Urzustand zurückversetzt werden (Inhalte, Formate, Berechnungen, Anzahl der Zeilen etc. wie in der ursprunglichen .xlt).
Oder hab ich da einen Denkfehler im Ablauf?
Hinzu kommt noch, dass ich absolut keine Ahnung hab, wie ich das lösen kann!
Anzeige
AW: Rechnung erstellen und Funktionen automatisieren.
14.08.2009 13:05:32
robert
hi,
ich persönlich sehe folgende problematik:
a) wieviele positionen sollen in dein formular passen-problem neue seite wann wo wie ?
b)momentan kopierst du alle makros mit,dropdowns, gültigkeit...
mein vorschlag:
vorlage befüllen, neues blatt erstellen, daten kopieren(spalte A bis D )-nur formate und werte
eingaben in vorlage löschen, schliessen
blatt mit rechnungsdaten speichern
...oder so ähnlich :-)
frage ist: wer macht dir das ?
für mich leider zu aufwendig-sorry
gruß
robert
Anzeige
AW: Rechnung erstellen und Funktionen automatisieren.
14.08.2009 13:55:41
Manfred
Hallo Robert.
Zu der Problematik, die Du siehst.
Fange mit b) an.
Keine Ahnung wie Du das meinst, -worauf bezogen...
Im Moment ist es tatsächlich so, dass die Makros aus der .xlt mit in die .xls geschrieben werden. Dort sehe ich aber weniger ein Problem, da die gespeicherte .xls Datei nich mehr geöffnet wird und wenn, kann man die Makro deaktivieren. Vielleicht sogar automatisch über VB vor dem Speicherprozess...
Zu a)
Die Datei, die ich auf den Server gestellt habe, ist mit einen Druckbereich versehen (Zeile1 - 39). Zeile 39 ist gleichzeitig die letzte Zeile auf der ersten Seite. Wenn die Rechnung über mehrere Seiten geht, soll Zeile 39 einen Summenübertrag beinhalten.
Die zweite Seite fängt mit Zeile 40 an, wobei die Zeile 40 eine Wiederholzeile (über Excel Seite einrichten) aus Seite eins ist (Beschreibung, Preis, Anzahl und Betrag). Zeile 41 (2'te Zeile auf der 2'ten Seite soll den automatischen Summenübertrag von Seite 1 enthalten). Dann geht es mit Zeile 42 (3'te Zeile auf der 2'ten Seite) ganz normal mit Rechnungspositionen weiter usw. (für alle folgenden Seiten gleiches Schema).
Zu Deinem Vorschlag.
Keine Ahnung, ob ich den Vorschlag richtig verstehe, aber wenn doch, denke ich, ist es weniger aufwändig die ganze Rechnung auf copy and paste auszulegen, Zellen manuell einfügen etc., aber wo ist dann die Automatisierung?
Der Rechnungsvordruck soll für den "Endbenutzer(in)", in dem Fall meine Freundin, so einfach wie möglich gehalten werden, fast ohne Excel Kenntnisse und großen Aufwand.
Gruß
Alex
Anzeige
AW: Rechnung erstellen und Funktionen automatisieren.
14.08.2009 14:12:55
robert
hi,
also ich bin nicht der grosse VBA-künstler, aber wenn dein level-Kaum Excel/VBA-Kenntnisse
stimmt, hast du dir viel vorgenommen.
du sprichst von automatisierung:
...ich sehe keine seiteneinrichtung..
...wie gibst du die kundendaten ein...
...eine bestehende rechnung kannst du öffnen und bearbeiten...
...daher-keine makros mitkopieren...
...usw...
das sind sachen, die gemacht, bzw.geändert werden müssen
zu meinem vorschlag:
diese punkte können doch automatisiert werden, mit VBA, aber siehe einleitung.....
sorry, bin draussen
viel glück
gruß
robert
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Rechnungen automatisiert erstellen mit Excel


Schritt-für-Schritt-Anleitung

  1. Vorlage erstellen: Erstelle eine Excel-Vorlage (.xlt) für deine Rechnung, die alle notwendigen Felder enthält (Kundendaten, Rechnungsnummer, Dienstleistungen etc.).
  2. Formeln einfügen: Füge Formeln ein, um Preise automatisch zu berechnen. Beispielsweise kannst du den Gesamtpreis aus den Einzelpreisen und der Anzahl ermitteln:
    =B2*C2  ; (B2 ist Einzelpreis, C2 ist Anzahl)
  3. DropDown-Listen: Verwende Datenüberprüfung, um DropDown-Listen für die Auswahl der Dienstleistungen zu erstellen. Dadurch wird der Preis automatisch eingetragen.
  4. Automatisierung via VBA: Füge VBA-Code hinzu, um die Rechnungen automatisch zu speichern und die Vorlage zu aktualisieren. Beispielcode für das Speichern:
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
       If SaveAsUI Then MsgBox "Dateiauswahl deaktiviert! Dateiname wird automatisch vergeben."
       Cancel = True
       SpeichernUnter
    End Sub
  5. Automatische Zeilen einfügen: Implementiere eine Funktion, die neue Zeilen hinzufügt, wenn die letzte Zeile gefüllt ist:
    Private Sub Worksheet_Change(ByVal Target As Range)
       If Cells(Rows.Count, 1).End(xlUp).Row = Target.Row Then
           ' Neue Zeile hinzufügen
           Rows(Target.Row + 1).Insert Shift:=xlDown
       End If
    End Sub

Häufige Fehler und Lösungen

  • Problem: Die Vorlage speichert auch die Rechnungsdaten.

    • Lösung: Stelle sicher, dass dein VBA-Code die Daten in der Vorlage löscht, bevor sie gespeichert wird.
  • Problem: DropDown-Listen funktionieren nicht korrekt.

    • Lösung: Überprüfe die Datenquelle für die DropDown-Listen. Diese sollten auf einer separaten Tabelle basieren.
  • Problem: Automatische Zeilen werden nicht eingefügt.

    • Lösung: Überprüfe, ob der VBA-Code korrekt verknüpft ist und die richtige Tabelle angesprochen wird.

Alternative Methoden

  • Excel-Add-Ins: Es gibt verschiedene Add-Ins für Excel, mit denen Rechnungen automatisch erstellt werden können. Diese Tools bieten oft erweiterte Funktionen zur Automatisierung.
  • Online-Tools: Überlege, Online-Dienste zu nutzen, die Rechnungen automatisch erstellen und anpassen können.

Praktische Beispiele

Ein Beispiel für eine einfache Rechnung in Excel könnte so aussehen:

Dienstleistung Einzelpreis Anzahl Gesamtpreis
Webdesign 100 € 5 =B2*C2
Hosting 50 € 1 =B3*C3

Hierbei wird der Gesamtpreis automatisch berechnet, sobald die Anzahl oder der Einzelpreis geändert wird.


Tipps für Profis

  • Nutzung von Vorlagen: Erstelle eine standardisierte Rechnungsvorlage, um einen einheitlichen Look zu gewährleisten.
  • Automatisierung: Nutze die Möglichkeit, über VBA auch wiederkehrende Rechnungen zu automatisieren, indem du Kundendaten und Dienstleistungen speicherst.
  • Datenbankanbindung: Erwäge, deine Excel-Rechnungsdaten mit einer Datenbank zu verknüpfen, um eine noch effektivere Automatisierung zu erreichen.

FAQ: Häufige Fragen

1. Wie kann ich Rechnungen automatisch erstellen?
Du kannst Rechnungen automatisch erstellen, indem du eine Excel-Vorlage mit Formeln und VBA-Code verwendest, um Daten zu verwalten und zu speichern.

2. Ist es möglich, mehrere Rechnungen in einer Zelle zu haben?
Ja, du kannst mehrere Rechnungen in einer Zelle zusammenfassen, indem du die Funktion TEXTVERKETTEN nutzt, um die Inhalte zusammenzuführen.

3. Wie kann ich ein Rechnungsformular in Excel erstellen?
Um ein Rechnungsformular in Excel zu erstellen, nutze Formatierungen, Tabellen und Formeln, um die benötigten Daten strukturiert darzustellen.

4. Welche Excel-Version benötige ich für die Automatisierung?
Die meisten Automatisierungsfunktionen und VBA-Codes sind ab Excel 2007 verfügbar, aber es wird empfohlen, eine aktuelle Version zu verwenden, um von den neuesten Funktionen zu profitieren.

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