Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
836to840
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
836to840
836to840
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

in Dateinamen fortlaufende Zahl einfügen

in Dateinamen fortlaufende Zahl einfügen
13.01.2007 12:19:01
fuzzi
Hallo hab das Problem noch offen, das ich allein nicht schaffe:
derzeit speichere ich mit untenstehendem Makro meine Dateien in einem Order,
der soll immer "D:\Eigene Dateien\Ordi\Buchhaltung\fertigzustellende Rechnungen\" sein.
Mit einem persönlichen Namen aus einer Zelle (d82)ab, aus der Tabelle " KK "(die Datei heisst OOEGKK FA 07-1).
Dann vergebe ich von Hand eine fortlaufende Nummer wie 2002-10-123, Jahr+Monat+3-stellig forlaufende Zahl.
nur die letzten 3 Zahlen sollen variabel sein.
bsp: im Ordner stehen schon Dateien die heissen:
Mayr Franz 2006-04-555.xls
Mauhart Anna 2006-04-556.xls
dann hätte ich gern bei dem Namen (bsp Müller Waltraud, der aus Zelle d82 kopiert wird) dahinter: 2006-04-557 dazugefügt.
Die Nummerierung soll zusätzlich zu den Namen in den Dateinamen kommen.
das Jahr und das Monat richten sich nach den in diesem Ordner schon vorhandenen Zahlen, kann aktuell sein oder nicht,
die gilt es nur zu kopieren, die hinteren 3 Stellen sollen +1 zur letzt größten sein
Die Laufnummer erhöht sich nur im Monat.
Nullen werden erwartet wie 001,oder 012
es gibt nicht mehr als 999
der Code ist in einem Modul (7):

Sub speichern_unter()
Dim str As String
str = Range("d82").Value
ActiveWorkbook.SaveAs filename:= _
"D:\Eigene Dateien\Ordi\Buchhaltung\fertigzustellende Rechnungen\" & str & ".xls" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
End Sub

Kann mir das jemand von euch Profis so ergänzen, daß automatisch die letzte 11-stellige Zahl in den Dateinamen im Ordner gesucht wird un dann mit +1 hinzugefügt wird? Danke
Ciao, grazie

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: in Dateinamen fortlaufende Zahl einfügen
13.01.2007 13:30:38
Franc
Das klingt kompliziert ^^
Also eigentlich müssen alle Namen im Verzeichnis eingelesen werden, dann die letzten 3 Stellen abgeschnitten und da dann die höchste Zahl + 1 wäre deine gesuchte Nummer. (Aufgrund der Namen kannst es ja nicht direkt nach den letzten 3 Ziffern suchen lassen)
Mal schauen ob ich später noch Lust habe das zu machen. ^^
AW: Danke für deine Mühe
13.01.2007 13:45:01
fuzzi
Danke für deine Mühe, ganz richtig:
den Namen übernimmt das vorhandene Makro aus d82,
die Ziffern in Jahr-Monat = die letzten 11 Stellen(ohne die letzten 3 Stellen)sollen aus dem Verzeichnis der vorhandenen Dateien im Ordener unverändert eingelesen werden,
die letzten 3, +1 zum bislang höchsten Wert dann dazu.
Anzeige
AW: Danke für deine Mühe
13.01.2007 20:32:10
Erich
Hallo fuzzi,
probiers mal mit
Option Explicit
Sub speichern_unter()
Dim intN As Integer, strName As String
Const strOrdn = "D:\Eigene Dateien\Ordi\Buchhaltung\fertigzustellende Rechnungen\"
intN = HoleNr(strOrdn)
If intN >= 0 Then _
ActiveWorkbook.SaveAs Filename:=strOrdn & Cells(82, 4) & intN & ".xls"
End Sub
Function HoleNr(strOrdner As String) As Integer
Dim objFSO As Object, objFol As Object, objFile As Object
Dim intNr As Integer, strT1 As String, strT2 As String
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFol = objFSO.GetFolder(strOrdner)
For Each objFile In objFol.Files
'abcd xyz 2006-04-556.xls
If objFile.Name Like "* ####-##-###.xls" Then
strT2 = Left(Right(objFile.Name, 15), 7)
Select Case strT1
Case strT2
Case "":          strT1 = strT2
Case Is <> strT2
HoleNr = -1
MsgBox "In '" & strOrdner & "' stehen Dateien zu verschiedenen Monaten.", _
vbCritical, "Abbruch"
Exit Function
End Select
intNr = Left(Right(objFile.Name, 7), 3)
If HoleNr < intNr Then HoleNr = intNr
End If
Next objFile
HoleNr = HoleNr + 1
End Function
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: fast geschafft
13.01.2007 22:22:44
fuzzi
Lieber Erich! faszinierend, was du mir da gebastelt hast. Derzeit wird an den Namen die 3-stellige fortlaufende Nummer direkt angehängt, das Jahr, Monat fehlt leider noch. auch sähe ein Abstand zwischen Namen und Nummer schön aus wenn das schwierig ist, vergißes.
Nochmals danke Fuzzi
AW: fast geschafft
13.01.2007 23:42:52
fuzzi
noch ein Detail bei 001,002, 045, schreibt er 1,2,45 Ich brauche die fixe Anzahl der Stellen mit den Nullern aber später noch, Danke
AW: fast geschafft
13.01.2007 23:42:57
fuzzi
noch ein Detail bei 001,002, 045, schreibt er 1,2,45 Ich brauche die fixe Anzahl der Stellen mit den Nullern aber später noch, Danke
AW: geschafft?
14.01.2007 00:16:53
Erich
Hallo Fuzzi,
hab grad noch mal reingeschaut - da hatte ich etwas schlampig gelesen/programmiert...
Option Explicit
Sub speichern_unter()
Dim intN As Integer, strName As String, strTxt As String
Const strOrdn = "D:\Eigene Dateien\Ordi\Buchhaltung\fertigzustellende Rechnungen\"
HoleNr strOrdn, strTxt, intN
If intN >= 0 Then _
ActiveWorkbook.SaveAs Filename:= _
strOrdn & Cells(82, 4) & " " & strTxt & "-" & Format(intN, "000") & ".xls"
End Sub
Sub HoleNr(strOrdner As String, strText As String, intMax As Integer)
Dim objFSO As Object, objFol As Object, objFile As Object
Dim intNr As Integer, strTn As String
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFol = objFSO.GetFolder(strOrdner)
For Each objFile In objFol.Files
'abcd xyz 2006-04-556.xls
If objFile.Name Like "* ####-##-###.xls" Then
strTn = Left(Right(objFile.Name, 15), 7)
Select Case strText
Case strTn
Case "":          strText = strTn
Case Is <> strTn
intMax = -1
MsgBox "In '" & strOrdner & "' stehen Dateien zu verschiedenen Monaten.", _
vbCritical, "Abbruch"
Exit Sub
End Select
intNr = Left(Right(objFile.Name, 7), 3)
If intMax < intNr Then intMax = intNr
End If
Next objFile
intMax = intMax + 1
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: geschafft!!!!!
14.01.2007 09:26:37
fuzzi
Bin dir sehr dankbar, bin fasziniert! Solltest du je Rat (oder Tat)von einem Orthopäden brauchen: herbert.schaeffer@austromail.at Grüße aus Österreich
Danke für Rückmeldung - freut mich, ...
14.01.2007 10:49:30
Erich
Hallo Herbert,
... schade, dass Austria so weit von Holland entfernt ist - knapp dort wohne ich.
Schönen Sonntag noch und Grüße von Erich aus Kamp-Lintfort

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige