Speichern mit Dateinamen aus Tabelle

Moderator: ModerationP

Speichern mit Dateinamen aus Tabelle

Beitragvon WaWa » 13. Jan 2020, 19:30

Hallösche,

ich habe zur Abwechslung mal eine Frage zu VBA in Word. Ich habe eine Vorlage mit einer Tabelle. Nach dem Ausfüllen der Tabelle soll das Ganze als normales Dokument mittels Button gespeichert werden. Der Name unter dem das Dokument gespeichert werden soll steht in der Tabelle. Wie kann ich Word dazu bringen den Namen aus der Tabelle auszulesen und das Dokument unter diesem Namen abzuspeichern. Für den Namen könnte ich auch, falls erforderlich, ein Textfeld o.ä. verwenden.

Besten Dank im Voraus.

WaWa aus dem hohen Norden
Office 2016
WaWa
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 87
Registriert: 25. Jan 2008, 22:51

Re: Speichern mit Dateinamen aus Tabelle

Beitragvon theoS » 14. Jan 2020, 09:14

Steht der Name immer in der gleichen Zelle? Oder ist das veränderlich?
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5195
Registriert: 19. Apr 2008, 00:14

Re: Speichern mit Dateinamen aus Tabelle

Beitragvon WaWa » 14. Jan 2020, 12:01

Moin Theo,

der Name steht immer in der gleichen Zelle.

WaWa
Office 2016
WaWa
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 87
Registriert: 25. Jan 2008, 22:51

Re: Speichern mit Dateinamen aus Tabelle

Beitragvon theoS » 14. Jan 2020, 16:59

so in etwa:
Code: Alles auswählen
Sub speicherir()
Dim strFilNam As String
Dim dd1 As Document: Set dd1 = ActiveDocument 'oder ThisDocument, wenns das sein soll mit dem Button
Dim tB As Table: Set tB = dd1.Tables(1) 'die erste Tabelle in dem Fall
Dim strPf As String
strPf = "C:\Users\" & Environ("USERNAME") & "\Desktop\" 'du kannst hier auch einen fixen Pfad angeben
'wenn du nur mit dem Namen speicherst, dann im Standardverzeichnis, wo immer das ist
strFilNam = Left(Trim(tB.Cell(1, 1).Range.Text), Len(Trim(tB.Cell(1, 1).Range.Text)) - 2)
strFilNam = strPf & strFilNam & ".docx"
dd1.SaveAs FileName:=strFilNam 'Achtung!, keine Warnung wenn schon vorhanden!

End Sub
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5195
Registriert: 19. Apr 2008, 00:14

Re: Speichern mit Dateinamen aus Tabelle

Beitragvon Gast » 14. Jan 2020, 19:06

Hallo Theo,

vielen Dank, funktioniert so wie ich mir das vorgestellt habe.

Da aber doch ein kleiner Unterschied zu Excel VBA ist, hätte ich noch zwei Verständnisfragen:
1. Du hast die Bezeichnung strFilNam zwei mal verwendet. Einmal um den Namen aus der Tabelle zu lesen und das zweite Mal um den Speicherpfad und den Namen zusammenzufassen.
Beim Befehl zum Speichern gibst Du dann strFilNam als die Zusammenfassung an (Pfad und Name - wenn ich das richtig sehe). Weshalb kommt da keine Fehlermeldung? Ich habe ja zwei strFilNam mit unterschiedlichen Inhalten /
Möglichkeiten.
2. tb.Cell (1, 1) ist mir klar, bezieht sich auf die oben festgelegte Tabelle 1 / Zelle1. Was aber bedeutet Left(Trim... bzw. Len(Trim...?

Kannst Du mir das bitte erklären, damit ich das Makro auch verstehe?

Danke Dir.

WaWa
Gast
 

Re: Speichern mit Dateinamen aus Tabelle

Beitragvon theoS » 14. Jan 2020, 19:48

Die Bildung des Dateinamen ist nur in zwei Schritten erfolgt, dass du beim Speicherpfad, also da, wo du ggf den Pfad fest verdrahten möchtest extra hast.
Die Variable wird zuerst mit dem Dateinamen gefüllt und dann mit dem Pfadstring und dem Wert der bis zu dieser Zeile in der Variable abgelegt war.
Ähnlich macht man das ja bei Zählvariablen. I = i +1, da weßt du ja was rauskommt..

Jetzt zum Namen. Hier sind die Stringfunktionen von VBA nötig. Trim entfernt die Leerzeichen vorn und hinten. Dann die Left(), weil Word in Tabellenranges an den Text noch 2 Zeichen dranhängt. Den Sputnik ¤ und die Absatzmarke. Also alle Zeichen von Links weg wären die len() und die -2 dann ohne die Steuerzeichen.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5195
Registriert: 19. Apr 2008, 00:14


Zurück zu Word Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron