359 Aufrufe
Gefragt in Tabellenkalkulation von
Guten Morgen!

Ich habe eine meiner Meinung nach etwas komplizierte Aufgabe in Excel und zwar: Ich sollte im Zuge meines Ferialpraktikums eine Rechnungsvorlage erstellen da bis jetzt die Rechnungen immer mit Word geschrieben wurden (super umständlich). Nun ist die Vorlage fertig und ich möchte sie allerdings noch etwas automatisieren (um hier einen guten Eindruck zu hinterlassen)

zwar geht es darum dass beim Öffnen der Vorlagen-Datei ein Auswahlfenster kommt wo ausgewählt werden von welcher Firma verrechnet werden soll (es sind insg. 6 Firmen in der Unternehmensgruppe die mit dieser Vorlage arbeiten werden), nachdem das ausgewählt wurde sollte in dem Ordner für die Firma das Makro nachsehen was die letzte RE-Nummer war und die Datei automatisch mit der nächsten Nummer abspeichern und diese Nummer auch in das Feld für die Rechnungsnummer eintragen ....

Ich habe die Vorlage soweit fertig es passt alles nur mit Makros kenne ich mich leider nicht aus - vielleicht kann mir hier jemand helfen ...

LG Tobias

5 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Tobias,

das lässt sich grundsätzlich alles über Makros lösen.

Jetzt kommt das aber :-).

Für das Fenster zur Auswahl der Firma, wie du das willst, ist eine benutzerdefinierte Userform notwendig. Und den Code kann man hier nicht posten. Da wäre schon eine Beispieldatei notwendig.
Aber vielleicht reicht ja eine Zelle, in der die Firma ausgewählt werden kann. Schau dir mal diese Links zur Gültigkeit an:
Gültigkeit - Teil 1
Gültigkeit - Teil 2

Wie soll denn die nächste Rechnungsnummer ermittelt werden? Soll diese aus eventuell vorhandenen Dateinamen ermittelt werden oder gibt es eine Datei mit Rechnungsnummern. Das müsstest du schon mal genauer erklären.

Gruß

M.O.

P.S. Wenn ich eine Excel-Datei - egal ob mit oder ohne Makros - für den Einsatz im Betrieb bekommen würde, würde ich denjenigen bitten mir zu erklären, wie die Datei funktioniert. Es können ja gelegentlich Anpassungen notwendig sein ;-).
0 Punkte
Beantwortet von
Hallo M.O. und Community ^^

Vielleicht hilfreich für M.O.

Gruss Nighty

Es werden die Dateiattribute aller Dateien eines Verzeichnisses geprüft und die neueste anhand des Datums und der Zeit ausgelesen
Das Verzeichnis Temp wäre der Firmenname
Pfadangabe ist zur zeit fix
Rechnungsnummer wäre in diesem Beispiel Tabelle1 Zelle A1
Ausgabe zur zeit Range("A1")

Sub Rechnungsnummer()
Dim Dpfad As String, DateiName As String, Dname As String, Fname As String
Dim FileO As Object
Dim Ddatum As Date, Dzeit As Date, Puffer1 As Date, Puffer2 As Date, Dalter As Date
Set FileO = CreateObject("Scripting.FileSystemObject")
Fname = "Temp\"
Dpfad = "J:\" & Fname
DateiName = Dir(Dpfad & "*.xls")
Do While DateiName <> ""
Dname = FileO.GetFile(Dpfad & DateiName).Name
Dalter = FileO.GetFile(Dpfad & DateiName).DateLastModified
Ddatum = Mid(Dalter, 1, 10)
Dzeit = Mid(Dalter, 12, 8)
If Ddatum > Puffer1 Or Ddatum = Puffer1 And Dzeit > Puffer2 Then
Puffer1 = Ddatum
Puffer2 = Dzeit
Dname = DateiName
End If
DateiName = Dir
Loop
Cells(1, 1) = ExecuteExcel4Macro("'" & Dpfad & "[" & Dname & "]Tabelle1" & "'!" & Range("A1").Address(, , xlR1C1)) + 1
End Sub
0 Punkte
Beantwortet von
korrigiert!

Sub Rechnungsnummer()
Dim Dpfad As String, DateiName As String, Dname As String, Fname As String
Dim FileO As Object
Dim Ddatum As Date, Dzeit As Date, Puffer1 As Date, Puffer2 As Date, Dalter As Date
Set FileO = CreateObject("Scripting.FileSystemObject")
Fname = "Temp\"
Dpfad = "J:\" & Fname
DateiName = Dir(Dpfad & "*.xls")
Do While DateiName <> ""
Dalter = FileO.GetFile(Dpfad & DateiName).DateLastModified
Ddatum = Mid(Dalter, 1, 10)
Dzeit = Mid(Dalter, 12, 8)
If Ddatum > Puffer1 Or Ddatum = Puffer1 And Dzeit > Puffer2 Then
Puffer1 = Ddatum
Puffer2 = Dzeit
Dname = DateiName
End If
DateiName = Dir
Loop
Cells(1, 1) = ExecuteExcel4Macro("'" & Dpfad & "[" & Dname & "]Tabelle1" & "'!" & Range("A1").Address(, , xlR1C1)) + 1
End Sub
0 Punkte
Beantwortet von
Hallo Tobias :-)

Komplex war das aber nicht gerade .-)

Gruss Nighty
0 Punkte
Beantwortet von
Hallo Community .-)

Oder mit Ordnerauswahl

Gruss Nighty

Sub Rechnungsnummer()
Dim Dpfad As String, DateiName As String, Dname As String
Dim FileO As Object
Dim Ddatum As Date, Dzeit As Date, Puffer1 As Date, Puffer2 As Date, Dalter As Date
Set FileO = CreateObject("Scripting.FileSystemObject")
Dpfad = OrdnerAuswahl
DateiName = Dir(Dpfad & "*.xls")
Do While DateiName <> ""
Ddatum = Mid(FileO.GetFile(Dpfad & DateiName).DateLastModified, 1, 10)
Dzeit = Mid(FileO.GetFile(Dpfad & DateiName).DateLastModified, 12, 8)
If Ddatum > Puffer1 Or Ddatum = Puffer1 And Dzeit > Puffer2 Then
Puffer1 = Ddatum
Puffer2 = Dzeit
Dname = DateiName
End If
DateiName = Dir
Loop
Cells(1, 1) = ExecuteExcel4Macro("'" & Dpfad & "[" & Dname & "]Tabelle1" & "'!" & Range("A1").Address(, , xlR1C1)) + 1
End Sub

Function OrdnerAuswahl() As String
On Error Resume Next
Dim AppShell As Object
Dim BrowseDir As Variant
Set AppShell = CreateObject("Shell.Application")
Set BrowseDir = AppShell.BrowseForFolder(0, "Ordner auswählen", &H1000, 17)
OrdnerAuswahl = BrowseDir.items().Item().Path & "\"
End Function
...