Data „Best Before”, 1 rok w przyszłości

0

Jak mogę utworzyć makro w programie Word dla daty „najlepszy przed” jednego roku od dzisiaj, która będzie się powtarzać, podobnie jak dzisiejsza data w programie Word po wywołaniu?

Bob
źródło

Odpowiedzi:

0

Czy masz na myśli generowanie „23.12.2018”?

  • Rodzaj Date \@ “MM/dd/”=date \@ “yyyy”+1 (lub skopiuj i wklej) do dokumentu Worda.
    Wydaje się to być niewrażliwe na wielkość liter (z wyjątkiem formatów daty).
    I „proste cytaty” ( straight quotes ) i „kręcone cytaty” ( curly quotes ) wydają się być wymienne.
  • Wybierz Date \@ “MM/dd/” i naciśnij Ctrl + F9 , co zmieni go w pole. Zmieni się z wyglądu do { Data „MM / dd /” } i może mieć szare tło. Ta sama transformacja nastąpi za każdym naciśnięciem Ctrl + F9 . Nie wpisuj żadnych nawiasów klamrowych!
  • Wybierz date \@ “yyyy” i naciśnij Ctrl + F9 .
  • Wybierz = { data „yyyy” } +1 i naciśnij Ctrl + F9 . Linia powinna teraz wyglądać tak:
    { Data „MM / dd /” } { = { data „yyyy” } +1 } .
  • Następnie wybierz całą linię i naciśnij F9 ( nie Ctrl + F9 ).
  • Jeśli nic się nie dzieje, naciśnij Przesunięcie + F9 (jeszcze raz, nie Ctrl + F9 ) i to powinno to zrobić.

To trwa po prostu dzisiaj, formatuje je jako „MM / dd /” (tj. „12/23”), a następnie podąża za rokiem bieżącym plus jeden. (Jeśli chcesz inny format, po prostu go zmień). Na przykład, jeśli chcesz „rrrr / MM / dd”, zmień tekst początkowy na =date \@ “yyyy”+1Date \@ “/MM/dd” i postępuj zgodnie z tymi samymi instrukcjami (z tą różnicą MM/dd/ został zastąpiony przez /MM/dd, skoro chcesz / między rokiem a miesiącem, i nie po dniu).

Nie jestem do końca pewien, co masz na myśli mówiąc „zapisz to jako makro i nazwij je”. Może tego właśnie chcesz:

  • Wchodzić Set best_date quote =date \@ “yyyy”+1Date \@ “/MM/dd”. Możesz to zrobić gdzieś na początku dokumentu.
  • Śledź wszystkie Ctrl + F9 kroki z góry.
  • Wybierz quote { = { data „yyyy” } +1 } { Data @ „/ MM / dd” } (tj. wszystko z quote przez koniec linii) i naciśnij Ctrl + F9 .
  • Wybierz Set best_date { zacytować { = { data „yyyy” } +1 } { Data @ „/ MM / dd” }} (tj. cała linia) i naciśnij Ctrl + F9 .
  • Powtórz dwa ostatnie kroki z powyższej listy (te z F9 i Przesunięcie + F9 ). Teraz wszystko, co właśnie zrobiłeś, zniknie, ale zdefiniujesz „zakładkę” o nazwie best_date zawierające datę następnego roku. Jest to dla wszystkich celów praktycznych zmienna; może być wystarczająco blisko tego, co masz na myśli, gdy mówisz „makro”.
  • Teraz, gdziekolwiek w dokumencie, którego chcesz użyć w przyszłości, rodzaj best_date i przekształć go w pole, jak opisano powyżej ( Ctrl + F9 , F9 i Przesunięcie + F9 ).

best_date jest po prostu arbitralnym identyfikatorem. Możesz użyć dowolnego poprawnego identyfikatora, np. bob_string.

Ostrzeżenie: jeśli użyjesz tego w dniu 29 lutego 2020 r., Wyświetli się „2021/2/29”, która nie jest prawidłową datą.


OK, w komentarzu, który zgłosiłeś, po zapisaniu i ponownym otwarciu dokumentu pojawiają się pola, takie jak

 {  Ustaw best_date  {  zacytować  {  =  {  data „yyyy”  }  +1  } {  Data @ „/ MM / dd”  }}} 

a data nie pojawia się. Jest to kontrolowane przez globalne ustawienie słowa. Istnieje co najmniej kilka sposobów naprawy:

  1. Droga Microsoft ci mówi aby to zrobić:
    • Przejdź do „Opcje programu Word”. Na wystarczająco starych wersjach programu Word (przed 2010 r.), jest to dostępne za pośrednictwem „Kuli”. W programie Word 2010 i 2013 (i nowszych wersjach?) Jest to „Plik” → „Opcje”.
    • Przejdź do „Zaawansowane” (klikając „Zaawansowane” w lewej kolumnie okna Opcje).
    • Przewiń w dół do sekcji „Pokaż treść dokumentu”.
    • Kliknij „Pokaż kody pól zamiast ich wartości” do jasny (odznacz) pole wyboru.
  2. Znacznie krótszy sposób:
    • naciśnij Alt + F9 . Pewnego razu. W każdym dokumencie.

Będziesz oczywiście musiał to zrobić (jeden z powyższych) raz na każdej maszynie. Prawdopodobnie raz na maszynę na użytkownika . Lub po prostu powiedz swoim użytkownikom, aby to zrobili (Polecam Alt + F9 jeden) jeśli zobaczą wyświetlane kody pól.

Nie jestem pewien, czy rozumiem twoją inną sprawę. Mówisz tak jeśli zastosujesz się do powyższych instrukcji w dniu 28 grudnia 2017 r., otrzymasz przyszłą datę „2018/12/28”, którą chcesz, ale jeśli go zapiszesz, a następnie ponownie otworzysz 29 grudnia, nadal będzie mówić „2018/12/28”, ale chcesz powiedzieć „2018/12 / 29 ”? To trochę trudniejsze. Najwyraźniej Microsoft Word jest napisany aby nie aktualizować pól podczas otwierania dokumentu (prawdopodobnie dlatego, że teoretycznie może to zająć dużo czasu). Oto dwa rozwiązania tego:

  1. Jak w opisie tutaj (i tutaj ),

    • wybierz cały dokument (najłatwiej jest to zrobić naciskając Ctrl + ZA ), i
    • naciśnij F9 .

    Niestety, każdy użytkownik będzie musiał się nauczyć to każdy czas otwierania dokumentu (lub przynajmniej każdego dnia).

  2. Jak w opisie tutaj , Napisać AutoOpen makro, które mówi

    Sub AutoOpen()
        With Options
            .UpdateFieldsAtPrint = True
            .UpdateLinksAtPrint = True
        End With
        ActiveDocument.Fields.Update
    End Sub
    

    Widzieć Jak dodać VBA w MS Office? ogólne informacje o mechanice tego.

Polecam opcję 1; makra mogą być nieuporządkowane. Ale jeśli Twoi użytkownicy są odporni na uczenie się nowych procedur, opcja 2 może być lepszym wyborem dla Ciebie.

G-Man
źródło
Wielkie dzięki, G-Man. Mam to do pracy w podanym formacie. Wolałbym, żeby czytał rok / miesiąc / dzień, ale kiedy próbuję to zrobić, drukuje niepoprawnie jako 2017 +1, a następnie miesiąc i dzień. Czy jest jakiś sposób, aby zapisać to jako makro i nazwać je?
Bob
Rozszerzyłem moją odpowiedź, próbując rozwiązać twoje obawy.
G-Man
Witaj ponownie, G-Man. Moją potrzebą jest formuła, która pojawi się przy wielokrotnym użyciu jako rzeczywista data, aby inni mogli z niej korzystać bez konieczności jej konwersji. Kiedy zapisuję aktualizowalną datę przyszłą, albo pojawia się ona następnego dnia jako formuła ponownie, albo jako data wczorajsza w następnym roku bez powtarzalnych działań - formuła jest tracona. Muszę być w stanie umieścić te informacje w dziesiątkach plików etykiet BarTender, dzięki czemu za każdym razem, gdy zostanie otworzony, dostarczy datę przyszłą o jeden rok: 2018/12/30 i tak dalej. Nadal się trzęsę.
Bob
@Bob: Szczęśliwego Nowego Roku. Rozszerzyłem moją odpowiedź, próbując rozwiązać twoje obawy (ponownie).
G-Man
@Bob: Czy wciąż „flądrujesz”? Jeśli moja odpowiedź działa dla ciebie, proszę "Zaakceptuj to .
G-Man