Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1532to1536
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

Datei Versionenweise in bestimmte Ordner speichern

Datei Versionenweise in bestimmte Ordner speichern
03.01.2017 15:25:01
Nermin
Hallo liebe Community,
ich möchte eine Datei immer Versionsweise abspeichern bsp.: bla_ver1.xl bla_ver2.xl usw und dann aber in einen bestimmten ordner der erstellt wird wenn nicht vorhanden. Soweit so gut:
Sub Schaltfläche48_Klicken()
Dim Cancel As Boolean
Dim vTemp
Dim Folder
Dim myDialog As Variant
Dim strShortName As String
Dim intVersion As Integer
Dim strExtension As String
Dim strNewName As String
Dim arrOrdner As Variant
Dim iOrdner As Integer
Dim sDrive As String, sOrdner As String, sTmp As String
sOrdner = InputBox("Zu erstellendes Verzeichnis:", , "S:\ETEYR\09_Komponenten_Baugruppen\Rohrleitungen\11_Rohrleitungskalkulation\Kalkulationen\Projekte\" & Worksheets("Cockpit").Cells(2, "O").Value)
On Error Resume Next
If sOrdner = "" Then Exit Sub
' If Right(sOrdner, 1) = "\" Then
sOrdner = Left(sOrdner, Len(sOrdner) - 1)
End If
arrOrdner = fncFolders(sOrdner)
For iOrdner = UBound(arrOrdner) To 1 Step -1
If fncIfFolderExists(CStr(arrOrdner(iOrdner))) Then
Else
MkDir arrOrdner(iOrdner)
End If
Next iOrdner
vTemp = Split(ThisWorkbook.Name, ".")
strShortName = vTemp(0)
intVersion = Val(vTemp(1)) + 1
strExtension = vTemp(UBound(vTemp))
On Error GoTo 0
strNewName = strShortName & "." & intVersion & "." & strExtension
If ThisWorkbook.Saved = True And _
ThisWorkbook.Name = strNewName Then
MsgBox "Die Datei " & ThisWorkbook.Name & _
" wurde nicht verändert.", vbInformation
Else
myDialog = MsgBox("Änderungen als " & vbCrLf & _
strNewName & vbCrLf & _
"speichern?", vbYesNoCancel + vbQuestion)
Application.EnableEvents = False
Select Case myDialog
Case vbYes
' Folder = Worksheets("Cockpit").Cells(2, "O").Value
' ThisWorkbook.SaveAs Filename:= _
' "S:\ETEYR\09_Komponenten_Baugruppen\Rohrleitungen\11_Rohrleitungskalkulation\Kalkulationen\Projekte\ & Folder" & strNewName
Case Is = vbNo
MsgBox "Es wurde 'NEIN' gewählt. NICHT gesichert!"
Application.EnableEvents = True
ThisWorkbook.Close SaveChanges:=False
Case vbCancel
MsgBox "Es wurde ABBRECHEN gewählt. WIEDERHOLEN!"
Cancel = True
End Select
Application.EnableEvents = True
End If
End Sub
Private Function fncFolders(sFolder As String) As Variant
Dim arr() As String
Dim iCounter As Integer, iFolder As Integer
ReDim arr(1 To 1)
arr(1) = sFolder
iFolder = 1
For iCounter = Len(sFolder) To 4 Step -1
If Mid(sFolder, iCounter, 1) = "\" Or iCounter = 1 Then
iFolder = iFolder + 1
ReDim Preserve arr(1 To iFolder)
arr(iFolder) = Left(sFolder, iCounter - 1)
End If
Next iCounter
fncFolders = arr
End Function

Private Function fncIfFolderExists(sFolder As String) As Boolean
Dim sOld As String
sOld = CurDir
On Error Resume Next
ChDrive Left(sFolder, 1)
ChDir sFolder
If Err = 0 Then fncIfFolderExists = True
On Error GoTo 0
ChDrive Left(sOld, 1)
ChDir sOld
End Function
Das ist mein Code soweit, jedoch funktioniert das Abspeichern der Datei im erstellten Ordner nicht weil ich den Ordner nicht richtig anspreche bzw. auswähle. Hoffe ihr könnt mir dabei helfen!
Liebe Grüße,
Nermin

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei Versionenweise in bestimmte Ordner speichern
03.01.2017 19:08:46
fcs
Hallo Nermi,
 ThisWorkbook.SaveAs Filename:= _
"S:\ETEYR\09_Komponenten_Baugruppen\Rohrleitungen\11_Rohrleitungskalkulation\" _
& "Kalkulationen\Projekte\ & Folder" & strNewName

Das Problem dürfte das " nach der Variablen Folder sein. Es muss na dem \ stehen.
LG
Franz
Sub Schaltfläche48_Klicken()
Dim Cancel As Boolean
Dim vTemp
Dim Folder
Dim myDialog As Variant
Dim strShortName As String
Dim intVersion As Integer
Dim strExtension As String
Dim strNewName As String
Dim arrOrdner As Variant
Dim iOrdner As Integer
Dim sDrive As String, sOrdner As String, sTmp As String
Dim sOrdnerBasis As String
sOrdnerBasis = "S:\ETEYR\09_Komponenten_Baugruppen\Rohrleitungen\11_Rohrleitungskalkulation\ _
" _
& "Kalkulationen\Projekte\"
sOrdner = InputBox("Zu erstellendes Verzeichnis:", , _
sOrdnerBasis & Worksheets("Cockpit").Cells(2, "O").Value)
On Error Resume Next
If sOrdner = "" Then Exit Sub
' If Right(sOrdner, 1) = "\" Then
sOrdner = Left(sOrdner, Len(sOrdner) - 1)
End If
arrOrdner = fncFolders(sOrdner)
For iOrdner = UBound(arrOrdner) To 1 Step -1
If fncIfFolderExists(CStr(arrOrdner(iOrdner))) Then
Else
MkDir arrOrdner(iOrdner)
End If
Next iOrdner
vTemp = Split(ThisWorkbook.Name, ".")
strShortName = vTemp(0)
intVersion = Val(vTemp(1)) + 1
strExtension = vTemp(UBound(vTemp))
On Error GoTo 0
strNewName = strShortName & "." & intVersion & "." & strExtension
If ThisWorkbook.Saved = True And _
ThisWorkbook.Name = strNewName Then
MsgBox "Die Datei " & ThisWorkbook.Name & _
" wurde nicht verändert.", vbInformation
Else
myDialog = MsgBox("Änderungen als " & vbCrLf & _
strNewName & vbCrLf & _
"speichern?", vbYesNoCancel + vbQuestion)
Application.EnableEvents = False
Select Case myDialog
Case vbYes
Folder = Worksheets("Cockpit").Cells(2, "O").Value
ThisWorkbook.SaveAs Filename:= _
sOrdnerBasis & Folder & strNewName
Case Is = vbNo
MsgBox "Es wurde 'NEIN' gewählt. NICHT gesichert!"
Application.EnableEvents = True
ThisWorkbook.Close SaveChanges:=False
Case vbCancel
MsgBox "Es wurde ABBRECHEN gewählt. WIEDERHOLEN!"
Cancel = True
End Select
Application.EnableEvents = True
End If
End Sub
Private Function fncFolders(sFolder As String) As Variant
Dim arr() As String
Dim iCounter As Integer, iFolder As Integer
ReDim arr(1 To 1)
arr(1) = sFolder
iFolder = 1
For iCounter = Len(sFolder) To 4 Step -1
If Mid(sFolder, iCounter, 1) = "\" Or iCounter = 1 Then
iFolder = iFolder + 1
ReDim Preserve arr(1 To iFolder)
arr(iFolder) = Left(sFolder, iCounter - 1)
End If
Next iCounter
fncFolders = arr
End Function
Private Function fncIfFolderExists(sFolder As String) As Boolean
Dim sOld As String
sOld = CurDir
On Error Resume Next
ChDrive Left(sFolder, 1)
ChDir sFolder
If Err = 0 Then fncIfFolderExists = True
On Error GoTo 0
ChDrive Left(sOld, 1)
ChDir sOld
End Function

Anzeige
AW: Datei Versionenweise in bestimmte Ordner speichern
04.01.2017 08:54:06
Nermin
Hallo Franz,
vielen Dank für die Hilfe :)
LG,
Nermin
AW: Datei Versionenweise in bestimmte Ordner speichern
03.01.2017 19:30:55
Daniel
Hi
wie schon von fcs erkannt musst du die Anführungszeichen korrekt setzen wenn du Variablen mit festem Text verbindest.
Die Variable darf nicht innerhalb der Anführungszeichen stehen, sie muss außerhalb stehen.
weiterhin vermute ich, dass bei dir dann auch noch das Foldertrenner "\" zwischen dem folder und dem strNewName fehlt, aber das müsstest du mal selber prüfen, ob es noch bei folder am Ende oder bei strNewName am Anfang steht
dh richtig währe wahrscheinlich:
ThisWorkbook.SaveAs Filename:="S:\ETEYR\...lkulationen\Projekte\" & Folder & "\" & strNewName
Gruß Daniel
Anzeige
AW: Datei Versionenweise in bestimmte Ordner speichern
04.01.2017 08:52:47
Nermin
Hey Daniel,
hat super funktioniert!! Vielen Dank! :)
Gruß,
Nermin

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige