Clever-Excel-Forum

Normale Version: Speichern unter und automatisches Verschieben - Makro
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich versuche gerade ein Antragsformular zu erstellen.

Im ersten Step soll das Formular einen Button bekommen, der das Formular mit bestimmten Inhalten aus Zellen an einem bestimmten Ort speicher.
Das habe ich bisher hinbekommen. Nur speichert er noch oberhalb meines angebenen Ordners, jemand eine Idee woran das liegen kann?

Sub Speichern_unter()

Dim Datei As String
Dim Verzeichnis As String
Dim SaveDummy As Variant

Verzeichnis = "X:\Werkzeugantrag\offene Anträge" 'Verzeichnis-Vorschlag
Datei = "Werkzeugantrag" & "_" & Range("K3") & "_" & Range("B3") & "_" & Format(Date, "_dd_mm_yy") & ".xls"  'Datei-Vorschlag
SaveDummy = SpeichernUnter(Datei)
If SaveDummy <> False Then ActiveWorkbook.SaveAs SaveDummy 'Es wurde im Dialog auf Speichern gedrückt

End Sub



Function SpeichernUnter(VorgabeName As String) As Variant

SpeichernUnter = Application.GetSaveAsFilename(InitialFileName:=VorgabeName, Filefilter:="Excel Dateien (*.xls),*.xls*", _
FilterIndex:=1, Title:="Speichern unter...", ButtonText:="speichern")

End Function


Als zweiter Step möchte ich Makro integrieren, das einen geschlossenen Antrag automatisch vom Ordner "offene Anträge" in den Ordner "geschlossene Anträge" verschiebt. Ist sowas möglich?

Vielen Dank für eure Tipps!

Grüße Lars
HI

Zitat:Als zweiter Step möchte ich Makro integrieren, das einen geschlossenen Antrag automatisch vom Ordner "offene Anträge" in den Ordner "geschlossene Anträge" verschiebt. Ist sowas möglich?

Ja, ist möglich und die Datei MUSS geschlossen sein sonst kann diese ja gar nicht verschoben werden!

Code:
Option Explicit

Sub Move_File()
    Dim strSourceFile As String, StrTarget As String, FSO As Object
    strSourceFile = "C:\Temp\xyz.xlsx"
    If Dir(strSourceFile) = "" Then
        MsgBox "Keine Datei" & Chr(10) & strSourceFile & Chr(10) & "vorhanden!"
    Else
        StrTarget = "C:\Temp1\" 'sollte vorhanden sein!
        Set FSO = CreateObject("Scripting.FileSystemObject")
        FSO.MoveFile strSourceFile, StrTarget
        Set FSO = Nothing
    End If
End Sub
Morgen,

danke für deine Antwort.

Ich habe es getestet, hatte aber keine Funktion. Bin jetzt leider nicht so fit in VB.


Code:
strSourceFile = "C:\Temp\xyz.xlsx"

Hier muss die aktuelle Datei stehen?

Code:
    If Dir(strSourceFile) = "" Then
Hier muss die Zeile zum Auslösen stehen?


Code:
StrTarget = "C:\Temp1\" 'sollte vorhanden sein!
Und hier der Zielordner?
Zitat:Datei MUSS geschlossen sein sonst kann diese ja gar nicht verschoben werden!

D.H. ? Die Tabelle verschiebt sich erst nach schließen der Datei?

Danke für deine Hilfe!
Hi,

anbei ein wenig dokumentiert

Code:
Sub Move_File()
    Dim strSourceFile As String, StrTarget As String, FSO As Object
    'Pfad und Name der Datei die verschoben werden sollte (Quelle)
    strSourceFile = "C:\Temp\xyz.xlsx"
    
    'wenn diese Datei nicht vorhanden ist dann kommt die Meldung das die Datei nicht vorhanden ist
    If Dir(strSourceFile) = "" Then
        MsgBox "Keine Datei" & Chr(10) & strSourceFile & Chr(10) & "vorhanden!"
    Else
        'ansonsten
        'ZielPfad der sollte auch vorhanden sein...
        StrTarget = "C:\Temp1\"
        Set FSO = CreateObject("Scripting.FileSystemObject")
        'verschiebe die Quelle ins Ziel
        'NUR SOLLTE DIE DATEI(Quelle) AUCH GESCHLOSSEN SEIN DIE VERSCHOBEN WIRD:)
        'sonst kann ja nicht verschoben werden
        FSO.MoveFile strSourceFile, StrTarget
        Set FSO = Nothing
    End If
End Sub

Bei mir tauchen auch immer mehr Fragen auf :)

Nur wenn du das mit deinem ersten Teil koppeln willst...
Warum wird der Dialog Speichern Unter genutzt?
Warum wird zwar die Variable Verzeichnis angelegt, aber dann wird diese nicht weiter verwendet...
Warum überhaupt zuerst was speichern und dann verschieben, warum nicht gleich dort abspeichern?
Zitat:Warum wird der Dialog Speichern Unter genutzt?

Ich habe eine Vorlage für ein Formular, das von mehreren Personen genutzt werden soll und immer in der selben Weise bezeichnet werden soll. Dieses soll das in einem Ordner "offene Anträge" gespeichert werden.
Zitat:Warum wird zwar die Variable Verzeichnis angelegt, aber dann wird diese nicht weiter verwendet...
In wiefern wird es nicht genutzt?
Zitat:Warum überhaupt zuerst was speichern und dann verschieben, warum nicht gleich dort abspeichern?

Wenn der Antrag genehmigt (und somit geschlossen) wird, soll der Antrag automatisch von "offene Anträge" zu "geschlossene Anträge" verschoben werden. Ist für mich nur eine Frage der Ordnung (ja, ich traue meinen Kollegen nicht zu, diesen Antrag händisch zu verschieben).
Hallo zusammen,

so selber jetzt zwei Wochen keine Zeit gehabt.

Hat jemand noch eine Idee und kann mir weiterhelfen?

Danke!
Hallöchen,

Wie wird der Dialog Speichern Unter genutzt?
… der Öffnen, z.B. einfache codevariante

strSourceFile = Application.GetOpenFilename()

Dim Verzeichnis
… ist unnütz, wenn Du sie im weiteren Codeverlauf nicht verwendest