Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
468to472
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
468to472
468to472
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

was ist falsch??

was ist falsch?
17.08.2004 12:53:06
Andy81
an die Könner..
was ist an der Schleife im folgendem Code falsch? Eigentlich funtioniert der Vergleich der Dateinamen (siehe If..) aber sobald i=1 und die Datei gespeichert ist, sollte im nächsten Durchlauf i=2 werden. Das Problem ist, dass i=1 bleibt und Excel immer wieder fragt ob die Datei mit dem Zusatz 1 überschrieben werden soll. Was läuft da schief?
Wie könnte man die Schleife ändern, damit sie nur solange durchläuft bis der vorhandenen Dateiname ungleich dem neuen Dateinamen ist?

Sub Datei_Speichern()
Dim sFile As String
Dim SPath As String
Dim i As Integer
ActiveWorkbook.Sheets("PKR blanko").Copy
Destination = NewWorkbook
i = 0
Do Until i = 3
ActiveWorkbook.Sheets("PKR blanko").Range("D1").Value = "Rev_" & i
sFile = ActiveWorkbook.Sheets("PKR blanko").Range("A1").Value & "_" & Range("D1").Value
sFile = Format(sFile) & ".xls"  'Format der Datei: .xls
SPath = "o:\...\fertig\"
If Dir("o:\...\fertig\*.xls") = sFile _
Then i = i + 1 _
Else: ActiveWorkbook.SaveAs SPath & sFile
Loop
ActiveWorkbook.Close SaveChanges = False
MsgBox "PKR abgeschlossen und gespeichert!"
End Sub

Vielen Dank
Andy81

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: was ist falsch?
Andreas
Du erhöhst i nicht.
Do Until i = 3
ActiveWorkbook.Sheets("PKR blanko").Range("D1").Value = "Rev_" & i
sFile = ActiveWorkbook.Sheets("PKR blanko").Range("A1").Value & "_" & Range("D1").Value
sFile = Format(sFile) & ".xls" 'Format der Datei: .xls
SPath = "o:\...\fertig\"
If Dir("o:\...\fertig\*.xls") = sFile Then
i = i + 1
Else
ActiveWorkbook.SaveAs SPath & sFile
i=i+1
end if
Loop
oder
...
If Dir("o:\...\fertig\*.xls") sFile Then
ActiveWorkbook.SaveAs SPath & sFile
end if
i=i+1
Loop
Do Until i=3
Loop
wird NIE fertig.
For i=1 to 3
Next
läuft dreimal durch
Anzeige
Danke. Aber..
17.08.2004 13:30:35
Andy81
Vielen Dank.
Jetzt habe ich aber noch ein Problem mit der Schleife.. Da der zu prüfende Dateinamen an letzter stelle eine Zahl (y) enhält, soll die Schleife nur solange laufen bis i grösser y ist.
Sub()
...
i = 0
Do Until i grösser y
ActiveWorkbook.Sheets("PKR blanko").Range("D1").Value = "Rev_" & i
sFile = ActiveWorkbook.Sheets("PKR blanko").Range("A1").Value & "_" & Range("D1").Value
sFile = Format(sFile) & ".xls" 'Format der Datei: .xls
SPath = "o:\...\fertig\"
If Dir("o:\...\fertig\*")& y & ".xls" sFile Then
ActiveWorkbook.SaveAs SPath & sFile
end if
i=i+1
Loop
...
End Sub
DAnke
Andy81
Anzeige
AW: Danke. Aber..
Andreas
Sub()
...
i = 0
Do Until i grösser y
ActiveWorkbook.Sheets("PKR blanko").Range("D1").Value = "Rev_" & i
sFile = ActiveWorkbook.Sheets("PKR blanko").Range("A1").Value & "_" & Range("D1").Value
sFile = Format(sFile) & ".xls" 'Format der Datei: .xls
SPath = "o:\...\fertig\"
If Dir("o:\...\fertig\*")& y & ".xls" sFile Then
ActiveWorkbook.SaveAs SPath & sFile
end if
i=i+1
Loop
...
End Sub
Jetzt habe ich es ein bisschen näher angesehen.
Irgendwie bis Du hier auf einem falschen Weg, glaube ich.
Hast Du angesehen, was
Dir("o:\...\fertig\*")
zurückbringt? Die Antwort ist eine Dateiname, z.B.
mappe1.xls
Aber dann addierst Du
& y & ".xls"
dazu um mit sfile zu vergleichen. Ist das richtig?
Du vergleichst mappe1.xls4711.xls mit was in sfile ist?
Und was ist "y" sowieso überhaupt?
Vermutlich willst Du die Datei unter einer Laufenden-Nummer ablegen oder? Und willst zuerst feststellen, welche die höchste Nummer ist? DIR() bringt Dir aber genau eine Datei zurück.
Folgendes ist ungetestet
Sub()
...
i = 0
Do
ActiveWorkbook.Sheets("PKR blanko").Range("D1").Value = "Rev_" & i
sFile = ActiveWorkbook.Sheets("PKR blanko").Range("A1").Value & "_" & Range("D1").Value
sFile = Format(sFile) & ".xls" 'Format der Datei: .xls
SPath = "o:\...\fertig\" ---------- muss EIN Vereichnis sein oder
If Dir(SPath & sfile) ="" Then
ActiveWorkbook.SaveAs SPath & sFile
exit do
end if
i=i+1
Loop
...
End Sub
Anzeige
AW: Danke. Aber..
17.08.2004 14:50:21
Andy81
Super... Genau das hab ich gebraucht.
..und ich sitz den halben Tag und überleg..
Vielen, Vielen Dank
gruß
Andy
AW: was ist falsch?
17.08.2004 13:54:52
Günter
Hallo Andy,
hier eine Lösung die funktionieren muss:

Sub Schleife_Test()
Dim sFile As String
Dim SPath As String
Dim i As Integer
ActiveWorkbook.Sheets("PKR blanko").Copy
Destination = NewWorkbook
i = 0
Do Until i = 3
ActiveWorkbook.Sheets("PKR blanko").Range("D1").Value = "Rev_" & i
sFile = ActiveWorkbook.Sheets("PKR blanko").Range("A1").Value & "_" & Range("D1").Value
sFile = Format(sFile) & ".xls"  'Format der Datei: .xls
SPath = "c:\Allgemeines\"
If Dir("c:\Allgemeines\*.xls") <> sFile Then
ActiveWorkbook.SaveAs SPath & sFile
End If
i = i + 1
Loop
ActiveWorkbook.Close SaveChanges = False
MsgBox "PKR abgeschlossen und gespeichert!"
End Sub

Gruss,
Günter
Anzeige
AW: was ist falsch?_Günter
17.08.2004 14:00:28
Andy81
Hallo Günter!
der Vorschlag von Andreas hat einwandfrei funtioniert. Nun möchte ich die Schleife noch
ändern, so dass sie beendet wird wenn i größer y. siehe Antwort "Danke. Aber.."
Andy81

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige