MS-Office-Forum
Google
   

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

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 05.01.2017, 15:27   #1
bkremser
Neuer Benutzer
Neuer Benutzer
Standard Frage - Dateiname automatisch mit Textmarke erstellen

Hallo zusammen,


in einem Forenbeitrag habe ich ein Code entdeckt um fortlaufende Nummern mit Hilfe von Textmarke und ini-Datei über eine Word-Vorlage erstellen kann.

Nun möchte ich den Dateinamen neben einem festen Begriff mit der letzten laufenden Nummer aus der ini-Datei in einem bestimmten Pfad zur Speicherung vorgeben.

Wie kann ich das realisieren?

Die Fortlaufende NUmmer ist wie folgt realisiert:

Sub AutoNew()
Quelle = "E:AL Seebüllhm-ini.txt"
With System
Seriennummer = .PrivateProfileString(Quelle, "hm", "Nr")
If Seriennummer = "" Then Seriennummer = 100
Seriennummer = Seriennummer + 1
.PrivateProfileString(Quelle, "hm", "Nr") = Seriennummer
End With

Selection.GoTo What:=wdGoToBookmark, Name:="Kennziffer"
Selection.TypeText Seriennummer


Jetzt zum Dateinamen, hier habe ich meine Probleme:
Bis hierher bin ich gekommen, doch wie bekomme ich nun die laufende Nummer hinter den Standard-Text???

Sub FileSave()
If ActiveDocument.Path = "" Then
FileSaveAs
Exit Sub
End If
ActiveDocument.Save
End Sub

Sub FileSaveAs()
Dim DocName As String


DocName = "E:Archiv" & "Hausmitteilung_Nr."


With Dialogs(wdDialogFileSaveAs)
.Name = DocName
.Show
End With
End Sub



Vielen vielen Dank im Voraus
bkremser ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 05.01.2017, 16:24   #2
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo ,

du hast die Variable seriennummer ja schon in deinem Autonew-Makro mit einem Wert versehen und in eine Textmarke eingetragen.

Wenn du sie zur modulweit gültigen Variablen ernennst, indem du sie einfach als erstes über allen Prozeduren im Modulfenster deklarierst, kannst du im Speichermakro direkt drauf zugreifen:

DocName = ...(DeinPfad)... & "Hausmitteilung_Nr." & seriennummer & ".docx"

Oder lass alles wie es ist und hole die Seriennummer aus der Textmarke:

DocName = ...(DeinPfad)... & "Hausmitteilung_Nr." & ActiveDocument.Bookmarks("kennziffer").Range & ".docx"

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.01.2017, 13:31   #3
bkremser
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Konfus

Es klappt leider nicht.

Alles habe ich mit Hilfe der vielen Forenbeiträge zusammengeschrieben,
doch die laufende Nummer im Dateinamen bekomme ich nicht hin.

Es wird einfach nicht angezeigt...

Hier nochmal mein Code und im Anhang das Ergebnis:

************************************
Sub AutoNew()
Quelle = "E:AL Seebüllhm-ini.txt"
With System
Seriennummer = .PrivateProfileString(Quelle, "hm", "Nr")
If Seriennummer = "" Then Seriennummer = 1
Seriennummer = Seriennummer + 1
.PrivateProfileString(Quelle, "hm", "Nr") = Seriennummer
End With

Selection.GoTo What:=wdGoToBookmark, Name:="Kennziffer"
Selection.TypeText Seriennummer

End Sub


Sub FileSave()
If ActiveDocument.Path = "" Then
FileSaveAs
Exit Sub
End If
ActiveDocument.Save
End Sub

Sub FileSaveAs()
Dim DocName As String


DocName = "E:Archiv" & "Hausmitteilung_Nr." & ActiveDocument.Bookmarks("Kennziffer").Range & ".docx"


With Dialogs(wdDialogFileSaveAs)
.Name = DocName
.Show
End With
End Sub
*************************************


Hat jemand eine Idee, woran das liegen könnte?
Angehängte Grafiken
Dateityp: jpg 2017-01-09 13_28_24-Speichern unter.jpg (51,2 KB, 5x aufgerufen)
bkremser ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.01.2017, 14:55   #4
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo ,

das Makro läuft, nachdem ich es nachgeholt habe, die Variablen zu deklarieren. Ferner hab ich eine kleine Änderung bei der Befüllung der Textmarke vorgenommen, die aber nicht fehlerrelevant ist.

Da bei dir die Seriennummer überhaupt nicht erzeugt wird, ohne dass eine Fehlermeldung angezeigt wurde (richtig? - ansonsten Fehlermeldung im Wortlaut herzeigen!), liegt die Vermutung nahe, dass dein AutoNew()-Makro überhaupt nicht startet.

Das wäre dann der Fall, wenn das Dokument, in dem das Makro gespeichert ist, keine Dokumentvorlage (Dateiendung .dotm) ist, sondern ein normales Dokument (Dateiendung: .docm)

Im letzteren Fall müsste der Makro-Kopf Sub AutoOpen() oder moderner Sub Document_Open() lauten. Im ersteren Sub AutoNew() oder moderner Sub Document_New()
Hier das geänderte AutoNew-Makro (der Rest kann bleiben wie er ist).
Code:

Sub Document_New()
Dim Quelle As String, Seriennummer As String
Dim bmRange As Range

Quelle = "F:*AL_Seebüll*hm-ini.txt" 'Pfad und Backslashes kontrollieren!!
Set bmRange = ActiveDocument.Bookmarks("kennziffer").Range

With System
    Seriennummer = .PrivateProfileString(Quelle, "hm", "Nr")
    If Seriennummer = "" Then Seriennummer = 1
    Seriennummer = Seriennummer + 1
    .PrivateProfileString(Quelle, "hm", "Nr") = Seriennummer
End With

bmRange = Seriennummer
ActiveDocument.Bookmarks.Add Name:="kennziffer", Range:=bmRange

End Sub
Achtung: Die Foresoftware schmeißt die Backslashes raus. Ich hab dort, wo ich sie vermute, Sternchen eingefügt.Die musst du natürlich wieder durch Backslashes ersetzen.

__________________

Gruß
Gerhard

Geändert von Gerhard H (09.01.2017 um 14:58 Uhr).
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.01.2017, 15:22   #5
bkremser
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

...vielen Dank für die Rückmeldung...

Allerdings bekomme ich jetzt die Fehlermeldung (siehe Anhang).
bkremser ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.01.2017, 16:17   #6
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo ,

hast du kontrolliert, ob der Pfad bei Quelle ="..." tatsächlich so stimmt? Ich hab nur rein gefühlsmäßig Backslashe und Unterstriche verteilt. Das muss mit deinen Gegebenheiten nicht übereinstimmen. Wenn es diesen Ordner gibt, sollte darin die INI-Datei automatisch erstellt werden, falls du sie nicht selber erstellt hast.

Und lass noch das letze ".txt" bei "Quelle =..." weg. Das ist nicht fehlerverursachend, aber du willst ja eine .ini-Datei erzeugen und keine .txt-Datei.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.01.2017, 16:27   #7
bkremser
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Strahlen

Habe den Pfad überprüft und geändert.
Die Fehlermeldung bleibt.

Dann habe ich mal die .ini-Datei gelöscht und neuangelegt.
Und siehe da, dann hat es funktioniert.


Vielen Dank für dein Einsatz! Du hast mir eine Melde Arbeit gespart.

B.Kremser




Sub Document_New()
Dim Quelle As String, Seriennummer As String
Dim bmRange As Range

Quelle = "E:ArchivHausmitteilungenhm.ini"
Set bmRange = ActiveDocument.Bookmarks("kennziffer").Range

With System
Seriennummer = .PrivateProfileString(Quelle, "hm", "Nr")
If Seriennummer = "" Then Seriennummer = 1
Seriennummer = Seriennummer + 1
.PrivateProfileString(Quelle, "hm", "Nr") = Seriennummer
End With

bmRange = Seriennummer
ActiveDocument.Bookmarks.Add Name:="kennziffer", Range:=bmRange

End Sub
bkremser ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.01.2017, 16:31   #8
bkremser
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Danke

Geändert von bkremser (09.01.2017 um 16:48 Uhr).
bkremser ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2017, 07:43   #9
bkremser
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Suche

Was muss ich denn im Code noch hinzufügen, wenn ich den Zähler in der .ini-Datei wieder zurücksetzten möchte, wenn die Datei ungespeichert (abgebrochen) wird?

Gibt es dafür auch Lösungen?

Viele Grüße aus dem hohen Norden
B. Kremser

Geändert von bkremser (10.01.2017 um 07:47 Uhr).
bkremser ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2017, 11:10   #10
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo B.,

da ist doch gescheiter, die Seriennummer nicht schon bei Dokumentstart eintragen zu lassen, sondern erst anlässlich des Speicherns. Da sind allerdings einige Änderungen nötig:
Code:

Option Explicit
Private WithEvents App As Word.Application

Private Sub Document_New()
'die Dokumentvariable bei Dokumentstart initialisieren
    If App Is Nothing Then
        Set App = ThisDocument.Application
    End If
    
End Sub

Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
    
    'damit nur Dokumente betroffen sind, die aus der Dokumentvorlage stammen:
    If Doc.AttachedTemplate = ThisDocument.AttachedTemplate Then
      
    'Makro aufrufen
    nummerEintragen
 
    End If
End Sub

Sub nummerEintragen()

Dim Quelle As String, Seriennummer As String
Dim bmRange As Range

Quelle = "F:\temp\hm-ini" '**hier deinen Pfad einragen
Set bmRange = ActiveDocument.Bookmarks("kennziffer").Range

With System
    Seriennummer = .PrivateProfileString(Quelle, "hm", "Nr")
    If Seriennummer = "" Then Seriennummer = 1
    Seriennummer = Seriennummer + 1
    .PrivateProfileString(Quelle, "hm", "Nr") = Seriennummer
End With

bmRange = Seriennummer
ActiveDocument.Bookmarks.Add Name:="kennziffer", Range:=bmRange

End Sub
Die Makros FileSave und FileSaveAs entfallen damit.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.04.2017, 14:39   #11
bkremser
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Gerhard,

vielen Dank! Das ist noch viel besser!

Ich möchte gerne das Erstelldatum mit in den Dateinamen einfügen.

Wie lautet eigentlich noch mal dafür der Befehl?

DocName = "E:ArchivHausmitteilungen" & "HM_Nr._" & ActiveDocument.Bookmarks("kennziffer").Range & "_YYYY.MM.DD_" & ActiveDocument.Bookmarks("username").Range & ".docx"


Viele Grüße
Bülent
bkremser ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.04.2017, 16:43   #12
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Bülent,

das Erstelldatum kriegst du so:
Code:

Dim ErstellDatum As Variant '(Variant ist wichtig, da das Datum noch formatiert wird)
ErstellDatum = Format(ActiveDocument.BuiltInDocumentProperties("Creation date").Value, "dd_MM_yyyy")
Diese Variable hängst du bei deinem Docname einfach hinten dran.

Möglicherweise passt dir auch Last print date oder Last save time besser.

__________________

Gruß
Gerhard
Gerhard H 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 06:17 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 - 2017, Jelsoft Enterprises Ltd.

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