MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Word
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 11.10.2018, 13:31   #1
Dragores
Neuer Benutzer
Neuer Benutzer
Standard Word 2010 - Dokumentname vorgeben von Dokumenten aus Vorlage

Hallo allerseits.

Ich stehe vor folgendem Problem:

Ich habe eine Vorlage im Word erstellt.
Wenn ich nun ein Dokument aus dieser Vorlage erstelle möchte ich nun, dass beim abspeichern dieses Dokuments der Dateiname teils generiert werden soll:

Vor dem Dateinamen muss das Datum yyyy-mm-dd stehen. Den Dateinamen selber sollte der User in einer Form eingeben können, InputBox oder ähnliches.
Der Pfad wo die Datei hingespeichert werden soll, müsste man auch individuell auswählen können.

Gibt es da eine elegante Lösung?
Dragores ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.10.2018, 14:36   #2
haklesoft
MOF Koryphäe
MOF Koryphäe
Standard

Hallo und willkommen,

elegant? Das müsstest Du definieren. Ohne VBA wird's aber nicht gehen. Du kennst Dich damit aus?

Elegant wäre für mich, wenn der Anwender in einem Startdialog alle für das Dokument relevanten Daten eingeben könnte und nicht mit einer Speichern-Unter-Abfrage behelligt wird, sondern der Code den Ablagepfad und Dateinamen gleich selbst festlegt. Ist auch vorteilhaft für eine spätere Dokumentenverwaltung.

__________________

Hang loose, haklesoft
haklesoft ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.10.2018, 15:33   #3
Dragores
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Ich kenne mich ein wenig mit VBA aus - soweit dass ich mir aus verschiedenen Quellen etwas zusammengebastelt habe:

Sub AutoNew()
Dim PathAndFileName As String
Dim Datum As String
Dim strEingabe As String

strEingabe = InputBox("Dokumentname:", "Texteingabe", "Ihr Text")
Datum = Format(Date, "yyyy-mm-dd")

Dim strPath As String
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.InitialFileName = "C:"
.Title = "Zielordner auswählen:"
If .Show Then strPath = .SelectedItems(1)
End With


PathAndFileName = strPath & "" & Datum & " " & strEingabe
PathAndFileName = PathAndFileName & ".doc"
ActiveDocument.SaveAs PathAndFileName
End Sub

Das funktioniert schon mal, aber nach kurzem testen ist mir aufgefallen, dass sobald ich ein zweites Dokument mit selbem Pfad und selbem Namen erstelle, eine Fehlermeldung aufploppt welche den Prozess stoppt.
Wenn es eine Möglichkeit gibt, diese Fehlermeldung mit einer Meldung zu ersetzen, welche dem User mitteilt, dass diese Datei bereits existiert und ihn wieder auf Step 1 zurücksetzt wäre das super.

Die Reihenfolge der Eingabe (Dateiname -> Pfad) bin ich mir auch nicht schlüssig, ob diese umgekehrt besser sein könnte. Gibt es hier einen Standard?

Aber danke schonmal für den Rat

Ich werde sicher mal weiterbasteln

Edit: Ein weiterer Punkt um es eleganter zu machen wäre es eventuell auch, das Dokument bei der Erstellung nicht direkt zu speichern, sonder nur den Pfad und Dateinamen zu definieren.
Beim Speichern soll dann der Pfad und Dateiname übernommen werden. Die Frage die sich mir nun stellt ist, wie ich ActiveDocument.SaveAs PathAndFileName auskapseln kann und in ein Sub FileSave() stecke, welches den PathAndFileName aus Sub AutoNew() übernimmt.

Geändert von Dragores (11.10.2018 um 15:54 Uhr).
Dragores ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.10.2018, 15:49   #4
haklesoft
MOF Koryphäe
MOF Koryphäe
Standard

Für Pfadauswahl, Dateinamenfestlegung und Existenzprüfung braucht man nur einen einzigen Dialog.
Da ich heute keinen Zugriff auf einen Office-PC habe kann ich erst Morgen ein Beispiel zeigen.

__________________

Hang loose, haklesoft
haklesoft ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.10.2018, 15:59   #5
Dragores
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Super. Ich habe mal ein wenig weitergebastelt und mein Code sieht nun so aus:

Dim PathAndFileName As String

Sub AutoNew()

Dim Datum As String
Dim strEingabe As String

strEingabe = InputBox("Dokumentname:", "Texteingabe", "Ihr Text")
Datum = Format(Date, "yyyy-mm-dd")

Dim strPath As String
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.InitialFileName = "C:/"
.Title = "Ordner auswählen"
If .Show Then strPath = .SelectedItems(1)
End With


PathAndFileName = strPath & "" & Datum & " " & strEingabe
PathAndFileName = PathAndFileName & ".doc"

End Sub

Sub FileSave()
FileSaveAs
End Sub

Sub FileSaveAs()
ActiveDocument.SaveAs PathAndFileName
End Sub

Das funktioniert bei mir.

Bin gespannt auf deine Info's
Dragores ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.10.2018, 08:21   #6
haklesoft
MOF Koryphäe
MOF Koryphäe
Standard

Hier ein Beispielcode:
Code:

    With Application.FileDialog(msoFileDialogSaveAs)
        .InitialFileName = Format(Date, "yyyy-mm-dd_") & "*"
        ' Anwender ersetzt im Dialog Sternchen durch gewünschten Dateinamen 
        If .Show = True Then
            ' Dokument sofort speichern!
            ActiveDocument.SaveAs2 .SelectedItems(1)
        Else
            ' unbenanntes Dokument wieder entfernen
            ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
        End If
    End With
Der Dialog weist automatisch auf eine Doppelvergabe hin und erzwingt das Ersetzen des Sternchens.

__________________

Hang loose, haklesoft

Geändert von haklesoft (12.10.2018 um 08:24 Uhr).
haklesoft ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.10.2018, 08:54   #7
Dragores
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Das sieht sehr gut aus! Vielen Dank.
Dragores ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.10.2018, 09:53   #8
Dragores
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Vielleicht kannst du mir weiterhin behilflich sein

Ich bräuchte selbiges auch noch für eine Excel-Vorlage.

Ich habe dafür folgenden Code in "DieseArbeitsmappe" :

Code:

Private Sub workbook_open()
Call Speichern
End Sub

Sub Speichern()
Dim strPath As String    With Application.FileDialog(msoFileDialogSaveAs)
        .InitialFileName = Format(Date, "yyyy-mm-dd_") & "*"
        ' Anwender ersetzt im Dialog Sternchen durch gewünschten Dateinamen
        If .Show = True Then
            ' Dokument sofort speichern!
            ActiveWorkbook.SaveAs .SelectedItems(1)
        Else
            ' unbenanntes Dokument wieder entfernen
            ActiveWorkbook.Close SaveChanges:=wdDoNotSaveChanges
        End If
    End With
End Sub
Das funktioniert so, jedoch öffnet Excel nach der Eingabe des Dateinamens/Speicherns immer ein Fenster wo man bestätigen muss, dass als Arbeitsmappe ohne Makro gespeichert werden soll.
Gibt es eine Möglichkeit, die Datei automatisch als Arbeitsmappe ohne Makros zu speichern ohne dies jedes mal manuell bestätigen zu müssen?
Dragores ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.10.2018, 11:05   #9
haklesoft
MOF Koryphäe
MOF Koryphäe
Standard

Mit kleinen Abwandlungen kann man das auch in Excel anwenden:
Code:

Option Explicit

Private Sub Workbook_Open()
    SpeichernAls
End Sub

Sub SpeichernAls()
    Dim wbVorlage As Workbook
    
    Set wbVorlage = ThisWorkbook

    With Application.FileDialog(msoFileDialogSaveAs)
        .InitialFileName = Format(Date, "yyyy-mm-dd_") & "*.xlsx"
        ' Anwender ersetzt im Dialog Sternchen durch gewünschten Dateinamen
        If .Show = True Then
            Application.DisplayAlerts = False   ' Warnmeldungen unterdrücken
            ' Als Arbeitsmappe ohne Makros speichern!
            ActiveWorkbook.SaveAs .SelectedItems(1), FileFormat:=xlOpenXMLWorkbook
            Application.DisplayAlerts = True    ' Warnmeldungen wieder aktivieren
        Else
            ' Vorlagenmappe schließen
            wbVorlage.Close SaveChanges:=False
        End If
    End With
End Sub

__________________

Hang loose, haklesoft
haklesoft ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.10.2018, 12:08   #10
Dragores
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Danke vielmals für die Hilfe, funktioniert alles, genau so wie gewünscht!
Dragores ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:11 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.