Eine Zahl aus Worddokument autom. als Dateiname

ich habe eine Dokumentenvorlage in dessen erste Zeile eine Zahl eingegeben wird, z.B. 5743/02 (diese variiert). Nun soll das Dokument mit Hilfe eines Makros abgespeichert werden, in dem die ersten 4 Ziffern als Dateiname benutzt werden sollen (z.B. 5743.doc).

Um Lösungsvorschläge bittet

Roland

Hallo Roland,
wie wärs mit:
Sub Makro1()
ActiveDocument.SaveAs FileName:=ActiveDocument.Range(Start:=0, End:=4) & „.doc“
End Sub

Gruß
Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Roland,
wie wärs mit:
Sub Makro1()
ActiveDocument.SaveAs FileName:=ActiveDocument.Range(Start:=0,
End:=4) & „.doc“
End Sub

Gruß
Reinhard

Hallo Reinhard,

das klappt ja schon mal super! Was aber wenn diese Zahl nicht in der ersten Zeile sondern z.B. in der dritten Zeile steht; oder schlimmer noch, mal in der ersten, mal in der zweiten, mal in der dritten… (aber IMMER mit der Ziffer „5“ beginnt (5324 oder 5881 oder 5…).?

Kann man beginnend mit der ersten Zeile solange suchen bis diese Zahl („5…“) gefunden wird, und diese dann als Dateinamen verwenden?

Gruß Roland

das klappt ja schon mal super! Was aber wenn diese Zahl nicht
in der ersten Zeile sondern z.B. in der dritten Zeile steht;
oder schlimmer noch, mal in der ersten, mal in der zweiten,
mal in der dritten… (aber IMMER mit der Ziffer „5“ beginnt
(5324 oder 5881 oder 5…).?
Kann man beginnend mit der ersten Zeile solange suchen bis
diese Zahl („5…“) gefunden wird, und diese dann als
Dateinamen verwenden?

Hallo Roland,
habe ich nicht groß getestet, scheint aber zu klappen…

Sub Makro2()
ActiveDocument.Select
Set auswahl = ActiveDocument.Range(Start:=0, End:=Selection.End)
For Each wort In auswahl.Words
If Left(wort, 1) = „5“ And Len(wort) > 4 And IsNumeric(Mid(wort, 1, 4)) Then
ActiveDocument.SaveAs FileName:=Left(wort, 4) & „.doc“
MsgBox "Diese Datei wurde soeben als " & Left(wort, 4) & „.doc gespeichert“
GoTo ende
End If
Next wort
MsgBox „keine 5xxx… gefunden“
ende:
End Sub

Gruß
Reinhard

Hallo Roland, hallo Reinhard,

Tolles Makro!
Hat aber nicht auf Anhieb funktioniert.
Ich hab dann die Anweisung:
If Left(wort, 1) = „5“ And Len(wort) > 4 And
IsNumeric(Mid(wort, 1, 4)) Then…

geändert in:

If Left(wort, 1) = „5“ And Len(wort) = 4 And
IsNumeric(Mid(wort, 1, 4)) Then…

Also das „>“ in „=“ geändert.
Danach gings.
Liegt wohl an der Länge 4 des Strings.

Viel Erfolg
Ullrich Sander

Hallo Reinhard, hallo Ullrich,

ihr seid Götter!
Ich als absoluter Programmier-Neuling bin echt beeindruckt von eurem Wissen. Wie lernt man so etwas?

Tausend Dank
Roland

Hat aber nicht auf Anhieb funktioniert.
Ich hab dann die Anweisung:
Len(wort) > 4
geändert in:
Len(wort) = 4
Liegt wohl an der Länge 4 des Strings.

Hallo Ulrich,
meiner Logik nach dürfte es aber nach deiner Änderung nicht mehr funktionieren.
Erstens war die Ausgangslage so, daß es Strings wie 5xxx/xxx gibt, da würde dann ‚=4‘ scheitern, also muß auf jeden Fall ein ‚>‘ oder ‚>=‘ benutzt werden.
Zweitens liest Word die Stringlänge nicht so wie man annehmen sollte.
Len(„1234“) ergibt 4, das ist ja noch einsichtig. Aber wenn der String ‚1234‘ im Text steht und das Makro die Stringlänge einliest ergibt sich eine Stringlänge von 5 oder mehr.
Mehr deshalb, weil Word noch alle Leerzeichen nach dem wort mitdazuzählt.
Beispiel:
Wenn das Dokument wie folgt aussieht:

52 523 5234 52345 523456
52 523 5234 52345 523456

Mit dem nachfolgendem Makro sieht man exakt, welche Längen Word einliest (Im Beispielstext ergibt das erste ‚5234‘ eine Länge von 5 und das zweite ‚5234‘ eine Länge von 8 !!)

Sub Makro3()
 ActiveDocument.Select
 Set auswahl = ActiveDocument.Range(Start:=0,
End:=Selection.End)
 For Each wort In auswahl.Words
 MsgBox wort & "--" & Len(wort)
 Next wort
End Sub

Gruß
Reinhard

Hallo Reinhard,
Ich hatte wohl in meinem Testdokument keine Leerzeichen mit drin, drum hats funktioniert.
Aber… Du fragst ja Numeric ab, daher sollte eigentlich die reine Zahl als String ausgelesen werden.
Hätte ich >3 geschrieben hätte es sicher auch funktioniert und wäre natürlich für kleinere Zahlen besser geeignet.
Oder sehe ich da was falsch?
Ullrich Sander

Ich hatte wohl in meinem Testdokument keine Leerzeichen mit drin, :

drum hats funktioniert. Aber… Du fragst ja Numeric ab, daher sollte

eigentlich die reine Zahl als String ausgelesen werden.
Hätte ich >3 geschrieben hätte es sicher auch funktioniert und wäre
natürlich für kleinere Zahlen besser geeignet.
Oder sehe ich da was falsch?

Hallo Ulrich,
wenn ich mein Makro (ist nachfolgend nochmal gepostet) so wie du schreibst, mit ‚=4‘ bei der Längenüberpfüfung ablaufen lasse über den Text

5 56 567 5678 56789

so wird das Dokument definitiv als ‚567 .doc‘ abgespeichert!
So wie von mir schon geschrieben liest Word ‚567‘ mit 4 und ‚5678‘ mit 5 Zeichen als Länge ein.
Von daher muß, um eine Speicherung als ‚5678.doc‘ zu erreichen, mit ‚>4‘ oder ‚>=5‘ gearbeitet werden.
Zumindest bei meinem Word2000
Und für Word ist m.E. ‚5678‘ eine Zeichenfolge von 4 (bzw 5 *g*) Zeichen. In eine Zahl müßte man es erst umwandeln *annehm*
Gruß
Reinhard

Sub Makro2()
ActiveDocument.Select
Set auswahl = ActiveDocument.Range(Start:=0, End:=Selection.End)
For Each wort In auswahl.Words
 If Left(wort, 1) = "5" And Len(wort) = 4 And IsNumeric(Mid(wort, 1, 4)) Then
 ActiveDocument.SaveAs FileName:=Left(wort, 4) & ".doc"
 MsgBox "Diese Datei wurde soeben als " & Left(wort, 4) & ".doc gespeichert"
 GoTo ende
 End If
Next wort
MsgBox "keine 5xxx... gefunden"
ende:
End Sub

Das Problem verstehe ich nicht. Word gibt als Dateinamen ohnehin den Inhalt der ersten Zeile als default vor (jedenfalls bei Word 97).

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Das Problem verstehe ich nicht. Word gibt als Dateinamen
ohnehin den Inhalt der ersten Zeile als default vor
(jedenfalls bei Word 97).

Hi,
in der Ausgangsfragestellung ging es u.a. dadrum das Dokument mit den ersten 4 Zeichen von 5xxxxxxx als .doc automatisch abzuspeichern und nicht noch im ‚Speichern unter‘-Vorschlag von Word herumzueditieren.
Weiterhin wurde die Ausgangsfragestellung recht bald erweitert durch:

Was aber wenn diese Zahl nicht in der ersten Zeile sondern z.B. in der dritten Zeile steht; oder schlimmer noch, mal in der ersten, mal in der zweiten, mal in der dritten… (aber IMMER mit der Ziffer „5“ beginnt (5324 oder 5881 oder 5…).?
Kann man beginnend mit der ersten Zeile solange suchen bis diese Zahl („5…“) gefunden wird, und diese dann als Dateinamen verwenden?

Gruß
Reinhard