Speichern unter Pfad und neuem Ordner
#1
Hallo,

VBA in Word ist für mich relativ neu, daher bin ich hier noch etwas unsicher unterwegs.

Ich habe eine Wordvorlage. Beim Aufrufen der Datei wird als erstes eine Userform geöffnet welche Infos vom User mittels Eingabefeldern abfragt.

Diese Infos werden an verschiedenen Stellen im Dokument mehrmals eingefügt, sie werden aber auch dafür verwendet den Speicherort und den Namen der Datei zu definieren. Genau da liegt mein Problem.

Ich kriege es hin den Zielpfad und den Dateinamen vorzugeben. Wofür ich aber keine Lösung gefunden habe ist, dass im Zielpfad erst ein neuer Ordner für die Datei erstellt werden soll, der mit den Variablen der Userform  benannt werden soll.

Ich habe folgenden Code bisher (Ausschnitt):

STitel = TextBox1.Value
SLBN = TextBox2.Value
SLTBN = TextBox3.Value
SAAN = TextBox4.Value

  Dim Dateiname As String
  Dim SpVerz As String
 
 
  SpVerz = "R:\Ordner\01_Subordner\"        '->Quasi nach "01_Subordner" müsste nun der neue Unterordner erstellt werden
  Dateiname = "VA_" & SLBN & "_" & SLTBN & "_" & SAAN & "_" & "v01_" & STitel
  
 ChDrive "R"
 ChDir "R:\Ordner\01_Subordner\"
 
With Application.Dialogs(wdDialogFileSaveAs)
                  .Name = SpVerz & Dateiname
                  .Show
End With


Im Moment wird der bestehende Zielpfad aufgerufen und es wird der gewünschte Dateiname bereits vorgeschlagen. Der Schritt dass erst ein Unterordner erstellt wird fehlt jedoch.

Der Name des Unterordners soll sich entsprechen der Definition von "Dateiname" zusammensetzen, also auch hier:

Dateiname = "VA_" & SLBN & "_" & SLTBN & "_" & SAAN & "_" & "v01_" & STitel

vielleicht auch noch mit einer Option falls der Ordner schon vorhanden ist (Messagebox und abbrechen oder so)
Wie bekomme ich diese Schritte noch integriert?

Viele Dank im Voraus.

Gruß
Top
#2
Hallöchen,

Du bist mit Deinen DOS-Befehlen doch schon auf dem richtigen Weg

ChDrive "R"
ChDir "R:\Ordner\01_Subordner\"

Hast Du schon mal von MKDir gehört?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
Hallo schauan,

nein MKDir sagt mir jetzt erstmal nichts.

Gruß
Top
#4
Hallo,

das sollte Dich erst recht nicht davon abhalten, im VBA-Editor die Taste F1 zu drücken und nach diesem Begriff zu suchen. Wink

Gruß Uwe
Top
#5
Hallo,

habe das nun gemacht (guter Tipp mit F1 :19: ).

habe es folgendermaßen eingebunden: 

MkDir SpVerz & Dateiname

ChDrive "R"

ChDir "R:\Ordner\01_Subordner\"

 With Application.Dialogs(wdDialogFileSaveAs)
                  .Name = SpVerz & Dateiname
                  .Show

Jetzt wird der Ordner tatsächlich erstellt (bin begeistert). Nur soll nun die Datei in dem Verzeichnis abgespeichert werden. Dazu soll das Speichern unter-Fenster aufgehen, der neu erstellte Ordnerpfad geöffnet sein und der Dateiname als Vorschlag eingegeben sein.

Da hab ich nun verschiedene Varianten versucht, das aber nicht hinbekommen.

Habt ihr da noch einen Tipp?
Top
#6
Hallo,

ich hätte einen Tipp: Lass uns den kompletten Code sehen. Wink

Gruß Uwe
Top
#7
Hallo,

ok hier ist der komplette Code:


Code:
Private Sub CommandButton1_Click()

Dim SLBN As String 'Lagerbereichsnummer aus Textbox 2
Dim SLTBN As String 'Lagerteilbereichsnummer aus Textbox 3
Dim SAAN As String  'Arbeitsaufgabennummer aus Textbox 4
Dim STitel As String  'VA Titel aus Textbox 1

ActiveDocument.Bookmarks("Lagerbereichsnummer").Select
 Selection.Text = TextBox2.Value
 
ActiveDocument.Bookmarks("Lagerteilbereichsnummer").Select
 Selection.Text = TextBox3.Value
 
ActiveDocument.Bookmarks("Arbeitsaufgabennummer").Select
 Selection.Text = TextBox4.Value
 
ActiveDocument.Bookmarks("VATitel").Select
 Selection.Text = TextBox1.Value
 
ActiveDocument.Bookmarks("VATitel2").Select
 Selection.Text = TextBox1.Value
'Kopfzeile ab Seite 2 mit VA-Titel beschriften
If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
        ActiveWindow.Panes(2).Close
    End If
    If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
        ActivePane.View.Type = wdOutlineView Then
        ActiveWindow.ActivePane.View.Type = wdPrintView
    End If
    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
   
ActiveDocument.Bookmarks("VATitelheader").Select
 Selection.Text = TextBox1.Value
 ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
STitel = TextBox1.Value
SLBN = TextBox2.Value
SLTBN = TextBox3.Value
SAAN = TextBox4.Value

  Dim Dateiname As String
  Dim SpVerz As String
 
 
  SpVerz = ""R:\Ordner\01_Subordner\"
  Dateiname = "VA_" & SLBN & "_" & SLTBN & "_" & SAAN & "_" & "v01_" & STitel
  
 
 MkDir SpVerz & Dateiname
 
 ChDrive "R"
 ChDir ""R:\Ordner\01_Subordner\"
 With Application.Dialogs(wdDialogFileSaveAs)
                  .Name = SpVerz & Dateiname
                  .Show
                  
 
End With
 
 
Unload Me
End Sub
Top
#8
Hallo,

auf jeden Fall gehört da noch eine Prüfung rein, ob der neue Pfad wirklich neu ist. Hier mit der Dir-Funktion.
ChDrive und ChDir sind überflüssig, da der Dateiname mit komplettem Pfad dem Dialog übergeben wird.
So (halt mit anderem Pfad und Dateinamen) klappt das einwandfrei:
  Dim Dateiname As String
Dim SpVerz As String

SpVerz = "R:\Ordner\01_Subordner\"
Dateiname = "VA_" & SLBN & "_" & SLTBN & "_" & SAAN & "_" & "v01_" & STitel

If Not Dir(SpVerz, vbDirectory) = "." Then
MkDir SpVerz
End If

With Application.Dialogs(wdDialogFileSaveAs)
.Name = SpVerz & Dateiname
.Show
End With
Unload Me
End Sub
Gruß Uwe
Top
#9
ja also erstmal danke für den Code, jedoch funktioniert er bei mir nicht einwandfrei.

Jetzt wird leider kein neuer Ordner erstellt.

was genau macht denn vbDirectory ?  Habs gegoogelt aber verstehs nicht so ganz.

Gruß
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste