Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Makro Ausstieg - die 2





Frage

Wunderschönen guten Morgen! Vielleicht können mir die VBA-Experten weiterhelfen. Ich habe mit Hilfe des Forums ein Makro zum Speichern einer Datei erstellt. Manchmal kommt es vor, dass die Datei im betreffenden Pfad bereits vorhanden ist und eine Abfrage erscheint. Wie kann ich nun die Abfrage "abfangen" und je nach Button (überschreiben = nein, überschreiben = abbrechen) im Makro fortfahren? Zur Vereinfachung habe ich die Datei mal hochgeladen. [url=http://www.netupload.de/detail.php?img=155c24f4c82e32367f0d1ae9cfd98754.xls]Link zur Datei[/url] Thanx Tom

Antwort 1 von Hajo_Zi

Hallo Tom,

prüfe vorher ob die Datei vorhanden ist und dann ist es nur eine einfache MsgBox.

Sub Vorhanden_Datei()
' Fehler falls LW nicht vorhanden
If Dir("D:\Eigene Dateien\Hajo\Adresse1.xls") <> "" Then
MsgBox "vorhanden"
Else
MsgBox "nicht vorhanden"
End If
End Sub

Sub Datei_vorhanden()
' von Berti Koern
Dim Fso, Dateiname
Set Fso = CreateObject("Scripting.FileSystemObject")
Dateiname = "D:\Eigene Dateien\Hajo\Adresse.xls"
' Egänzung öffnung Hajo
If Fso.FileExists(Dateiname) Then
Workbooks.Open Dateiname
End If
End Sub

Gruß hajo

Antwort 2 von Tomschi

Hallo Hajo!

Vorweg ein DANKE für die rasche Antwort!
Ist sicherlich ein Ansatz. Leider weiss nicht nicht genau, ob dies auch mit einem variablen Dateinamen funktioniert.

Bin was VBA betrifft noch immer ein Neuling.
Ich werden Deinen Lösungsvorschlag in einer ruhigen Minute durchdenken.

Habe schon einiges ausprobiert. --> Die Betonung liegt auf "probieren".
on Error
Application.DisplayAlerts
Dialog = Application.Dialogs(xlDialogSaveAs).Show
Dialog = Application.Dialogs(xlDialogSaveWorkbook).Show

Da ich die exakte Syntax nicht kenne, hat alles leider nichts gefruchtet.

Ciao

Tom

Antwort 3 von Hajo_Zi

Hallo Tom,

ChDir "C:\tmp"
If Dir("C:\tmp\Fälligkeit_" & Format(Range("H2"), "YYYY.MM.DD") & ".xls") <> "" Then
If MsgBox("Soll die Datei überschrieben werden?", vbYesNo + vbQuestion, "Überschreiben ?") = vbYes Then
ActiveWorkbook.SaveAs Filename:="C:\tmp\Fälligkeit_" & Format(Range("H2"), "YYYY.MM.DD") & ".xls"
Else
MsgBox "nicht gespeichert"
End If
Else
ActiveWorkbook.SaveAs Filename:="C:\tmp\Fälligkeit_" & Format(Range("H2"), "YYYY.MM.DD") & ".xls"
End If

ungetestet.

Gruß Hajo

Antwort 4 von Tomschi

Hi!

Verstehe ich den Code richtig, dass nunmehr die Windows-Standard-Abfrage "überlistet" wird und eine separate Abfrage erfolgt?

Hm, so könnte man das Problem umgehen.

Jetzt ist mir noch was eingefallen:
Wie kann ich den Eingabewert aus der Inputbox in der Folge übernehmen?
Bis dato bin ich immer davon ausgegangen, dass der Pfad bestehen bleibt.
Was aber, wenn z. B. in der Inputbox von C:\tmp auf C:\TEST gewechselt wird?

Frage 2:
Kann man den Eingabewert auf eine bestimmte Logik überprüfen?
Z. B. --> "Achtung Sie haben die Pfadangabe vom Vorschlagewerg C:\tmp\... auf C:\TEST\... geändert!"

Sorry für die vielen Fragen.
Ist das erste Mal dass ich einen derartig umfangreichen Code bastle.

Vielen DANK für die Unterstützung!

Tom

Antwort 5 von Hajo_Zi

Hallo Tom,

ich habe mir nur den relevanten Teil angesehen.
Das was Du jetzt willst Bedarf doch einer gewissen Zeit, da man sich jetzt in den Code einarbeiten muss. Du hast ja ach noch ein Open Ereignis das nicht auf jeden Rechner läuft.
Das ist mir jetzt zu Zeitaufwendig. Mit Insr kannst Du prüfen ob / eingegeben wude.
Ab XP auch mit instrrev von rechts um Pfad von Dateiname zu trennen.

Gruß Hajo

Antwort 6 von Tomschi

Hallo Hajo!

Ich habe zwar schon lange an der Datei getüftelt, aber trotz allem fällt mir eben immer wieder was ein. :-(

Das mit dem Open_workbook tut mir leid.
Den Code kann man in der Testdatei ohne Probleme löschen.

Danke für Deine Geduld/Nachsicht.

Tom

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: