Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1092to1096
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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.-)
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...
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
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

63 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige