Mit VBA Speichern Unter mit Pfadsuche anhand Zelle

Hallo Leute,

ich weiß, die Frage klingt verwirrend aber ich habe vor eine Checkliste zu erstellen und diese in einem vorgegebenen Pfad mit einer Suchfunktion speichern.
Verwendung: Ein Montagemitarbeiter soll nach Fertigstellung seiner Baugruppe eine Checkliste durchgehen und sie am Ende speichern.
Ich habe die Checkliste so gestaltet, dass der Mitarbeiter nur die Seriennummer und den Takt einträgt und die einzelnen Prüfpunkte abhakt (Checkbox). Ganz unten in der Liste habe ich ein Button mit „Speichern“.

Mein Ziel ist es, dass wenn der Mitarbeiter auf den Button klickt, die Datei in einem Pfad gespeichert wird, wo sich ein Ordner befindet in dem sich wiederum ein Unterordner mit der Seriennummer befindet.

z.B. Baugruppe 1 wird im Takt 1 montiert. Die Seriennummer „1“ wird in der Zelle „B5“ und Takt in der Zelle „C5“ eingetragen. Der Ordner „1“ (auch 2,3,4,5, usw.) im Pfad H:\Test\ wurde bereits vor einiger Zeit manuell angelegt. Wenn der Mitarbeiter auf den Button klickt, soll im Pfad H:\Test\ der Ordner mit den Einträgen aus Zellen „B5“ und „C5“ gesucht werden und die Datei dort abgespeichert werden.

Ich habe das hier versucht:

Option Explicit

Sub SaveAsDialog()
Dim strPfad As String
Dim strFileName As String
Dim strFullFileName As String

strPfad = „H:\Test“
strFileName = Range(„B5“) & Range(„C5“)
strFullFileName = strPfad & strFileName & „.xlsx“
'Nur zum Test
MsgBox „*“ & strFullFileName & „*“

If Dir(strPfad) = „“ Then
MsgBox „Pfadname falsch!“
Exit Sub
End If
If Len(Trim(strFullFileName)) > 0 Then
Application.Dialogs(xlDialogSaveAs).Show strFullFileName
Else
MsgBox „Dateiname darf nicht leer sein!“
End If
End Sub

Bei der Ausführung wird der Dateiname richtig angezeigt, aber wenn ich auf OK klicke, dann öffnet der den Pfad wo ich vorher etwas abgespeichert habe und zeigt auch nicht den Dateinamen, den ich vorgegeben habe.

Kann mir jemand helfen?

Grüße

Hallo me.serhad,

statt dem Application.Dialogs mach mal Folgendes:

ChDir strPfad
With Application.FileDialog(msoFileDialogSaveAs)
 .InitialFileName = strFileName & ".xlsx"
 .Show
End With

Gruß, Andreas

Hallo Andreas!
Vielen Dank für die rasche Antwort!

Jetzt zeigt er mir den Dateinamen an aber öffnet nicht den Pfad, den ich suche…
Habe den Code wie folgt abgeändert:

Option Explicit

Sub SaveAsDialog()
Dim strPfad As String
Dim strFileName As String
Dim strFullFileName As String

strPfad = „H:\Test“
strFileName = Range(„B5“) & Range(„C5“)
strFullFileName = strPfad & strFileName & „.xlsx“
'Nur zum Test
MsgBox „*“ & strFullFileName & „*“

If Dir(strPfad) = „“ Then
MsgBox „Pfadname falsch!“
Exit Sub
End If
If Len(Trim(strFullFileName)) > 0 Then
ChDir strPfad
With Application.FileDialog(msoFileDialogSaveAs)
.InitialFileName = strFileName & „.xlsx“
.Show
End With
Else
MsgBox „Dateiname darf nicht leer sein!“
End If
End Sub

dann lass mal das

ChDir

weg
und mach bei

.InitialFileName = strPfad & strFileName & ".xlsx"

Gruß, Andreas

Ok. Jetzt öffnet der bis H:\Test\ aber öffnet den Ordner nicht wo ich speichern möchte. Ist das machbar oder geht das nicht?

dann habe ich da irgendwas noch nicht kapiert. Noch mal zu meinem Verständnis:
Du hast einen Hauptordner H:\Test\
Darin gibt es einen Unterordner. Dessen Name steht in B2.
In diesem Unterordner soll die Datei gespeichert werden. Ihr Name steht in C2.
Ist das so weit richtig?
Wenn ja, müsstest du in deinem Code die Zeile

strFileName = Range("B5") & Range("C5")

ändern in

strFileName = Range("B5") & "\" & Range("C5")

Wenn’s anders gemeint war, erklär’s bitte noch mal.

Gruß, Andreas

Also, der Ordner H:\Test\ existiert bereits. Wenn eine Baugruppe im System gestartet wird, erzeugt der Mitarbeiter aus dem Auftragszentrum den Ordner „Baugruppe 1“. Somit hätten wir H:\Test\Baugruppe 1. Mit dem Code was ich habe, wird beim Speichern nur der Ordner H:\Test\ aufgemacht, so dass ich den Ordner Baugruppe 1 manuell öffnen muss. B5 ist die Seriennummer und C5 ist die Taktung.
Ich hoffe, dass ich es erklären konnte.

Gruß

„Baugruppe 1“ muss aber irgendwo in der Datei stehen. Sonst kann der Makro nicht wissen, welchen Ordner er ansteuern soll. Also, in welcher Zelle steht „Baugruppe 1“?

Gruß, Andreas

Habe ich vergessen zu erwähnen. B6= Baugruppe (Festwert) und C6= 1 (fortlaufende Nummer, die der Mitarbeiter einträgt)

Gruß

Dann erweitere doch den strPfad:

strPfad = "H:\Test\" & Range("B6") & " " & Range("C6") & "\"

Gruß, Andreas

Hmm, funktioniert immer noch nicht…
Trotzdem vielen Dank Andreas. Ich ändere den Code mal ab und taste mich heran.

Gruß

Es kann doch gar nicht so schwer sein.
Das was hinter InitialFileName steht, muss zusammen, den kompletten Pfad zur Datei ergeben. In dem Speicher-Fenster wird das dann automatisch aufgeteilt in den Verzeichnisnamen (der wird anmanövriert) und den Dateinamen (der wird automatisch in das Feld eingetragen).

Gruß, Andreas