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?
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?
Czy masz na myśli generowanie „23.12.2018”?
Date \@ “MM/dd/”=date \@ “yyyy”+1
(lub skopiuj i wklej)
do dokumentu Worda. 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! date \@ “yyyy”
i naciśnij Ctrl + F9 . = { data „yyyy” } +1
i naciśnij Ctrl + F9 .
Linia powinna teraz wyglądać tak: { Data „MM / dd /” } { = { data „yyyy” } +1 }
. 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:
Set best_date quote =date \@ “yyyy”+1Date \@ “/MM/dd”
.
Możesz to zrobić gdzieś na początku dokumentu. quote { = { data „yyyy” } +1 } { Data @ „/ MM / dd” }
(tj. wszystko z quote
przez koniec linii)
i naciśnij Ctrl + F9 . Set best_date { zacytować { = { data „yyyy” } +1 } { Data @ „/ MM / dd” }}
(tj. cała linia) i naciśnij Ctrl + F9 . 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”. 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:
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:
Jak w opisie tutaj (i tutaj ),
Niestety, każdy użytkownik będzie musiał się nauczyć to każdy czas otwierania dokumentu (lub przynajmniej każdego dnia).
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.