Office: FormFields "Datum"

Helfe beim Thema FormFields "Datum" in Microsoft Word Hilfe um das Problem gemeinsam zu lösen; Hallo Community, ich brauch mal eure Hilfe beim Schreiben eines Codes. Also Ich habe ein Word-Dokument mit FormFields, in einer Zeile habe ich 4... Dieses Thema im Forum "Microsoft Word Hilfe" wurde erstellt von Charly842, 4. Januar 2021.

  1. FormFields "Datum"


    Hallo Community,

    ich brauch mal eure Hilfe beim Schreiben eines Codes.
    Also Ich habe ein Word-Dokument mit FormFields, in einer Zeile habe ich 4 FormFields.
    Von diesen Zeilen wiederum habe ich insgesammt 8 Zeilen, das Word-Dukument wird per VBA gefühlt.
    In der ersten Zeile wird das Datum in allen FormFields wie folgt eingetragen
    - wenn der Code vor 22:00 Uhr ausgeführt wird dann nimm das Aktuelle Datum u. trag es ein.
    - wenn der Code nach 22:00 Uhr ausgeführt wird dann nimm das Aktuelle Datum u. addiere einen Tag dazu.
    So weit so gut...

    Jetzt mein Problem, wie schaffe ich es:
    - das Zeile2, FormFields1,2,3,4 das Datum aus Zeile1 + 1 Tag erhält
    - das Zeile3, FormFields1,2,3,4 das Datum aus Zeile1 + 2 Tag erhält
    - das Zeile4, FormFields1,2,3,4 das Datum aus Zeile1 + 3 Tag erhält
    - das Zeile5, FormFields1,2,3,4 das Datum aus Zeile1 + 4 Tag erhält
    - das Zeile6, FormFields1,2,3,4 das Datum aus Zeile1 + 5 Tag erhält
    - das Zeile7, FormFields1,2,3,4 das Datum aus Zeile1 + 6 Tag erhält
    - das Zeile8, FormFields1,2,3,4 das Datum aus Zeile1 + 7 Tag erhält


    Hier mein Code für die Zeile1, FormFields1,2,3,4
    With DocTest.FormFields("TB1_Tag1_FD")
    If Time < CDate("22:00") Then
    .Result = Format(Date, "dd.mm.yyyy")
    Else
    .Result = Format(Date + 1, "dd.mm.yyyy")
    End If
    End With

    With DocTest.FormFields("TB2_Tag1_SD")
    If Time < CDate("22:00") Then
    .Result = Format(Date, "dd.mm.yyyy")
    Else
    .Result = Format(Date + 1, "dd.mm.yyyy")
    End If
    End With

    With DocTest.FormFields("TB3_Tag1_ND")
    If Time < CDate("22:00") Then
    .Result = Format(Date, "dd.mm.yyyy")
    Else
    .Result = Format(Date + 1, "dd.mm.yyyy")
    End If
    End With

    With DocTest.FormFields("TB4_Tag1_BD")
    If Time < CDate("22:00") Then
    .Result = Format(Date, "dd.mm.yyyy")
    Else
    .Result = Format(Date + 1, "dd.mm.yyyy")
    End If
    End With


    Hier mein Code Schnippsel für Zeile2, FormFields1

    DocTest.FormFields("TB1_Tag2_FD").Result = Format(DocTest.FormFields("TB1_Tag1_FD"), DateAdd("d", 1, (Date)))

    Getestetes Beispiele:
    Bsp. 1: Zeile1 FormFields1,2,3,4 ; Datum vor 22:00 Uhr = 06.01.2021
    Bsp. 2: Zeile1 FormFields1,2,3,4 ; Datum nach 22:00 Uhr Datum 06.01.2021 + 1 Tag = 07.01.2021

    Wenn der Code ausgeführt wird für Zeile2, FormFields1, dann steht in FormFields1 der Zweiten Zeile "701,01.2021".
    Das ist kein richtiges Datum u. es wird nicht die 22:00 Uhr Klausel der 1 Zeile berücksichtigt.
    Dacht der Wert der If Anweisung bleibt bestehen, wenn man denn Wert aus der Ersten Zeile weiter nutzen will.

    Gruß Charly

    :)
     
    Charly842, 4. Januar 2021
    #1
  2. Gerhard H Erfahrener User
    Hallo Charly,

    von der Syntax her muss die Berechnung für TB1_Tag2 so aussehen:

    ....Result = Format(DateAdd("d", 1, CDate(InhaltDesQuellFeldes)), "Formatschalter")

    Eine Anmerkung:
    Meiner Meinung nach musst du nur das Datum für das erste Formularfeld berechnen. Da die Daten in einer Zeile gleich bleiben, und pro nächster Zeile um einen Tag erhöht werden, kannst du die restlichen Daten einfach zeilenweise kopieren. Noch besser: Wenn du die Formfelder in eine Tabelle steckst, könntest du alles in einer kleinen Doppel-Schleife erledigen. Ich hab dir dazu ein verkürztes Strickmuster mit folgendem Code angehängt.
    Code:
    Wenn du weitere Hilfe brauchst, dann stell bitte ein Musterdokument mit den Formfields zur Verfügung. Es wird wohl kaum einer Lust haben, das nachzubasteln, zumal du das schon gemacht hast.
     
    Gerhard H, 6. Januar 2021
    #2
  3. Hallo Gerhard,

    danke für deine Antwort der Code sieht super aus, funktioniert auch zum teil mit Anpassung.

    Ich muss mal kurz etwas weiter aus holen um zu erklären was ich umsetzen möchte, habe ich in meinem ersten Beitrag nicht erwähnt.

    Zum ersten öffne Ich das Word-Dokument über Excel-VBA,
    zum zweiten besitzt das Dokument viele andere FormFields, nur die ich benötige habe ich Beschriftet.

    Anbei habe ich eine Bsp.-Datei mit den gekennzeichneten FormFields angehangen u. eine Excel-Datei zum Aufruf des Word-Dokumentes u. Ausführen des Codes.
    Die schleife in deinem Code kann so nicht durchlaufen.

    Sorry für mein fehlenden angaben.

    Gruß Charly
     
    Charly842, 7. Januar 2021
    #3
  4. Gerhard H Erfahrener User

    FormFields "Datum"

    Hallo Charly,

    dass du das Word-Dokument von Excel aus öffnest, sollte kein neues Problem aufmachen. Statt wie bei mir
    Set docTest = ThisDocument
    steht halt bei dir
    Set docTest = appWord.Documents.Open(strFile, ReadOnly:=True)
    Und dann gehts mit dieser Variable weiter. Ansonsten wird ja von Excel aus nichts übergeben, soweit ich sehen kann.

    Obwohl du verbundene Spalten in der Word-Tabelle drin hast, kann man die Doppelschleife erhalten, weil die Zeilen mit den verbundenen Spalten übersprungen werden können (bzw. müssen). Ich musste nur wenige Änderungen machen und natürlich den Pfad zur Word-Datei auf meine Testumgebung anpassen (rücksetzen nicht vergessen).
    Das geänderte Makro aus deiner Excel-Mappe sieht nun so aus (Änderungen mit '** gekennzeichnet)
    Code:
     
    Gerhard H, 7. Januar 2021
    #4
  5. Hallo Gerhard,

    danke für die Rückmeldung, habe deine Angepassten Code getestet.

    Das füllen der ersten vier FormFields klappt super.

    Die ersten vier FormFields gehören zum 1. Tag, Bsp. 07.01.2021 das klappt mit deinem Code.
    Die nächsten vier FormFields gehören zum 2. Tag hier + (1.Tag + 1 Tag) = 08.01.2021, mit deinem Code 10.01.2021
    Dann die nächsten vier FormFields gehören zum 3. Tag hier + (1.Tag + 2 Tage) = 09.01.2021, mit deinem Code 13.01.2021
    Danach die nächsten vier FormFields gehören zum 4. Tag hier + (1.Tag + 3 Tage) = 10.01.2021, mit deinem Code 16.01.2021

    Nach dem 4. Tag hört die Schleife auf, hierbei folgen eigentlich noch 4 weitere Tage
    5. Tag FormFields(1-4) hier + (1.Tag + 4 Tage) = 11.01.2021
    6. Tag FormFields(1-4) hier + (1.Tag + 5 Tage) = 12.01.2021
    7. Tag FormFields(1-4) hier + (1.Tag + 6 Tage) = 13.01.2021
    8. Tag FormFields(1-4) hier + (1.Tag + 7 Tage) = 14.01.2021

    Das Dokument hat zwei Blätter, berücksichtigt die Doppelschleife nur das erste Blatt?

    Gruß Charly
     
    Charly842, 7. Januar 2021
    #5
  6. Gerhard H Erfahrener User
    Hallo charly,

    ups, da hab ich doch nicht richtig getestet. Also ein neuer Versuch. Er arbeitet mit einer weiteren Variable namens "incr", die jetzt das Datum zeilenweise immer nur um 1 erhöht.

    Dass die Schleife bei der vierten Zeile aufhört, war allerdings planmäßig, weil ich nicht realisiert hatte, dass die Tabelle auf der zweiten Seite die Fortsetzung der ersten ist.
    Drum gibts die Schleife jetzt zweimal hintereinander, einmal für die Tabelle auf der ersten Seite (tables(2)) und ein zweites mal für die Tabelle auf der zweiten Seite (tables(4)).

    Du darfst wieder testen:
    Code:
     
    Gerhard H, 7. Januar 2021
    #6
  7. Hallo Gerhard

    Danke für die Rückmeldung, mit der neuen Anpüassung läuft es jetzt ohne Probleme durch.

    Vielen Dank für deine Hilfe.

    Gruß Charly
     
    Charly842, 8. Januar 2021
    #7
  8. FormFields "Datum"

    Hallo Gerhard,

    könntest du mir noch einmal Helfen beim Datum Eintragen in FormFields.

    Ich bin dabei deinen Code für ein weiteres Word-Dokument ebenfalls mit FormFields u. Datum umzuschreiben.

    Leider komme ich an dem Punkt mit der Doppelschleife nicht weiter.
    Das Dokument hat 10 Seiten, jede Seite hat 5 Tables mit je 4 Zeilen u. 15 Spalten. Ich vermute mal da die Tables nicht Verbunden sind komme Ich wohl nicht weiter. Auch hier möchte ich die gleich Vorgehensweise wie bereits im Beitrag gelöst anwenden.

    Ich habe hierzu Bsp. Dateien Vorbereitet.
    Excel-Mappe2 zum Öffnen u. Ausführen der Word-Datei.
    Word-Datei:
    - Hellblau markiertes FormFields, hier soll das Ausgangsdatum stehen, ebenfalls mit der 22:00 Uhr abfrage.
    - Gelbe markierte FormFields, hier soll auf Basis des Hellblau markiertes FormFields das Datum fort geführt werden immer um 1 Tag plus.

    Anmerkung: In diesem Dokument nutze ich das Datumsformat "dd.mm."
    Wenn ich das Lokal-Fenster in VBA öffne u. per F8 das Programm durchlaufen lasse wird mir ein falsches Datum angezeigt wenn ich das Format "dd.mm" nutze.

    Danke im Vorfeld...

    Gruß Charly
     
    Charly842, 12. Januar 2021
    #8
  9. Gerhard H Erfahrener User
    Hallo Charly,

    das Problem mit dem Datum kommt daher, dass "mm" üblicherweise für "Minuten" steht, und "MM" für Monate. Wenn man das verwechselt (so wie ich in dem Vorgängermakro - ändere das auch dort), geht das oft gut, manchmal aber nicht.

    Bei der Gelegenheit kannst du das Referenzdatum und die Beschriftung des Startfeldes ein wenig anders gestalten, dann passt das auch:

    Ersetze diesen Teil..
    Code:
     
    Gerhard H, 13. Januar 2021
    #9
  10. Hallo Gerhard

    Danke für die Rückmeldung,
    das Datum soll nur in den gelben Feldern geschrieben werden.

    Gruß Charley
     
    Charly842, 13. Januar 2021
    #10
  11. Gerhard H Erfahrener User
    Hallo Charly,

    dann gestaltet sich das relativ übersichtlich:
    Code:
     
    Gerhard H, 13. Januar 2021
    #11
  12. Hallo Gerhard

    Ich werd deinen Code später Testen.

    Danke im Voraus.

    Gruß Charly
     
    Charly842, 13. Januar 2021
    #12
  13. FormFields "Datum"

    Hallo Gerhard

    Habe nun den Angepassten Code Testen können, er Funktioniert super.

    Danke für deine Hilfe u. Mühe...

    Gruß Charly
     
    Charly842, 13. Januar 2021
    #13
  14. Hallo Gerhard

    Sorry ich muss dich noch etwas fragen, vielleicht kannst du mir da weiterhelfen.

    Frage1
    Wie erreiche ich folgendes Szenario, dies möchte ich für alle Seiten im Dokumentes anwenden.
    Abfrage für Seite_1, Ermittlung von Monat u. Jahr
    - RefDate aus FormFields("Date1"), Datum aus der ersten Tabelle
    - Eintragen in FormFields("B1_M_J"), in dieser Schreibweise "MM/yy"
    Abfrage für Seite_2, Ermittlung von Monat u. Jahr
    - RefDate aus FormFields("Date2"), Datum aus der ersten Tabelle
    - Eintragen in FormFields("B2_M_J"), in dieser Schreibweise "MM/yy"

    Frage2
    Wie erreiche ich eine Seiten-Nummerierung (fortlaufend)
    Seite 1, FormFields("B1_BlattNr") = 1
    Seite 2, FormFields("B2_BlattNr") = 2

    Ich habe hierzu wieder Bsp. Dateien Vorbereitet.
    Excel-Datei "Doc_BP": zum Öffnen u. Ausführen der Word-Datei.
    Word-Datei "Doc_BP:
    - Blaue Felder, RefDate für Monat/Jahr
    - Gelbe Felder, zum Eintragen der Monats/Jahr angaben
    - Magenta Felder, Blattnummerierung

    Tut mir leid das ich mehr Fragen als Antworten habe.
    Ich hoffe das du mir weiter helfen magst.


    Gruß Charly
     
    Charly842, 13. Januar 2021
    #14
  15. Gerhard H Erfahrener User
    Hallo Charly,

    dazu brauchst du: zwei zusätzliche Variablen für die Seitenzählung (j as long und letzteSeite as long) und einen zusätzlichen Makroschnipsel:
    Code:
    In das letzte Makro eingebaut, sieht die Sache nun so aus:
    Code:
    Achtung, wichtiger Hinweis fürs Feld Monat / Jahr: So lange das Formularfeld vom Typ "Normaler Text" ist, weigert es sich, einen Schrägstrich anzunehmen und ersetzt diesen durch einen Punkt. Du musst vor Makrodurchlauf in den Eigenschaften dieser Formularfelder den Typ auf "Datum" setzen und das gewünschte Format dort angeben. Ich hab das zur Demonstration nur fürs erste Formularfeld gemacht.

    Im übrigen musst du dich nicht für deine Fragen entschuldigen. Es sollte in einem Forum ja normal sein, dass die Fragesteller mehr Fragen als Antworten haben und die Tippgeber umgekehrt. Und da du deine Fragen vorbildlich mit entsprechenden Musterdokumenten versiehst, ist das Antworten ja auch angenehm.
     
    Gerhard H, 13. Januar 2021
    #15
Thema:

FormFields "Datum"

Die Seite wird geladen...
  1. FormFields "Datum" - Similar Threads - FormFields Datum

  2. Datum wird nicht sortiert

    in Microsoft Excel Hilfe
    Datum wird nicht sortiert: Moin zusammen, ich brauche Eure Hilfe... Ich habe eine Datei vom Server geladen, die die Daten (01.01.23-31.12.23) meiner PV Anlage enthält. Es handelt sich naturgemäß um eine Excel-Tabelle. In...
  3. Datum und Uhrzeit

    in Microsoft Excel Hilfe
    Datum und Uhrzeit: Hallo, ich habe ein kleines Problem vielleicht kann mir Bitte Jemand weiterhelfen, müsste eigentlich schnell lösbar sein dieses Problem. Ich habe in einem Monat (variierend) 20 bis mehrere...
  4. Summewenns mit Datum und Zwei Buchstaben eingrenzen

    in Microsoft Excel Hilfe
    Summewenns mit Datum und Zwei Buchstaben eingrenzen: Guten Abend Zusammen, ich versuche aus einer Tabelle mit Summewenns (sumifs) die Beträge vom Kalendermonat abweichend zu errechnen. Das funktioniert mittlerweile auch. Da das Datum über den...
  5. Zeit Berechnung mit mehreren kriterien (Datum/Uhrzeit)

    in Microsoft Excel Hilfe
    Zeit Berechnung mit mehreren kriterien (Datum/Uhrzeit): Hallo zusammen, leider weiss ich nicht wie ich die Start- und Endzeit von "Datum und Uhrzeit" mit mehreren kriterienin über Summewenns einbauen kann. Hab hier im Forum nach einer Lösung geschaut...
  6. Dokumente und Blatt umbenennen

    in Microsoft Word Hilfe
    Dokumente und Blatt umbenennen: Ich lade mir jeden Tag csv-Dateien von meiner Bank herunter. Diese sind mit Datum versehen, also die Datei selbst und das erste Blatt, z.B. "Konto_13.02.2024". Wenn ich ein Makro erstelle, in dem...
  7. Suche Datum mit >= "Startdatum" und <= "Enddatum

    in Microsoft Excel Hilfe
    Suche Datum mit >= "Startdatum" und <= "Enddatum: Hallo Forengemeinde, ich versuche derzeit eine Tabelle mit Daten mit Daten aus einer anderen Tabelle zu kombinieren. Hierzu soll ein Wert, in Abhängigkeit des Datums herausgesucht werden. In...
  8. Formfield im Header

    in Microsoft Word Hilfe
    Formfield im Header: Hallo, ersteinmal ein großes Lob an das Forum hier. Hier gibt es doch einige nützliche Tips und Tricks. Ich stehe aktuell vor dem Problem, daß ich ein kleines Tool in VB.NET geschrieben...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden