2016-07-10 5 views
0

MS Word에서 날짜 필드를 삽입하려고합니다. 그러면 내일의 날짜가 표시 될 것입니다.내일의 날짜를 MS Word에서 입력하십시오.

{DATE \ @ "dd/MM/yyyy"} 오늘 날짜를 삽입 할 수 있습니다. 수정 된 공식을 사용하여 내일 날짜를 삽입 할 수 있습니까? 말씀 필드 언어 날짜 관련 작업에 대한 매우 제한적인 지원을 가지고 있기 때문에

감사

VBA없이

답변

1

, 계산이 가능하지만 간단하지 않다.

원본으로 문서를 열거 나 닫을 때 Word에서 자동으로 DATE 될 것이라고 생각했지만 추가 실험을 통해 여기에있는 두 번째 제안도 그렇게하지 않을 것이라고 제안했습니다. 설명 된 특정 경우

(1 일 추가), 당신은 다음 필드 코딩을 사용할 수 있어야합니다

:

{QUOTE {SET xxx { DATE }}{SET yyy {xxx \@YYYY}}{SET mmm {xxx \@M}}{SET xxx1 {={xxx \@YYYYMMDD}+1 \#0000'-'00'-'00}}{=13-{xxx1 \@M} \#"'{xxx1}';'{=mmm-11 \#'{=yyy+1}-01-01';'{yyy}-{=mmm+1 \#00'-01'}'"}'"} \@DD/MM/YYYY} 

모든 {} Windows에서 삽입 할 수있는 특별한 필드 코드 중괄호 쌍이어야합니다 ctrl-F9를 사용하는 Word 및 키보드 설정에 따라 cmd-F9 또는 fn-cmd-F9를 사용하여 Mac Word에서 (일반적으로) 필요에 따라 마지막 형식 ("\@DD/MM/YYYY")을 변경할 수 있습니다.

그러나 필드 코드 집합은 문서를 열 때 Word에서 자동으로 업데이트되지 않으므로 사용자가 필드 코드를 선택하고 F9 키를 눌러야합니다.

원래 Word에서 다음 코드를 사용하여 열려 있거나 닫힌/다시 닫힌 날짜를 업데이트 할 것이라고 생각했지만 틀렸다고 생각합니다. 여기

{DATE \@"'{QUOTE {SET xxx { DATE }}{SET yyy {xxx \@YYYY}}{SET mmm {xxx \@M}}{SET xxx1 {={xxx \@YYYYMMDD}+1 \#0000'-'00'-'00}}{=13-{xxx1 \@M} \#"'{xxx1}';'{=mmm-11 \#'{=yyy+1}-01-01';'{yyy}-{=mmm+1 \#00'-01'}'"}'"} \@DD/MM/YYYY}'"} 

알고리즘에 대한 몇 가지 의사 코드입니다 :

Set xxx to the date. 
Set yyy to the 4-digit year 
Set mmm to the month 
Set xxx1 to the date but with the day number incremented by 1. e.g., for 2016-12-31, that would be a string, "2106-12-32" 
This is the tricky bit: 
Try to extract the month from that date using { xxx1 \@M }. If the date is valid, { xxx1 \@M } will return a valid month number, i.e. in the range 1 to 12. If the date is not valid, { xxx1 \@M } will return xxx1, e.g. "2106-12-32", which the { = } field will treat as a calculation, i.e. "year-(a maximum of 12+32=44)", so it is always going to return a number larger than 12. 
If xxx1 is a valid date then 
    result=xxx1 
Else 'xxx1 is not a valid date so... 
    If mmm (the original month) is 12 then 
    result = "(yyy+1)-01-01" 
    Else 
    result = "yyy-(mmm+1)-01" 
    End If 
End If 
Apply the date format you want to "result". 
는 윈도우 워드의 최신 버전에 달성 않는 한 가지가 필드를 업데이트하는 옵션과 함께 "거품"의 날짜 필드를 제공하는 것입니다

NB는 로캘에 관계없이 Word가 "YYYY-MM-DD"형식으로 날짜를 지정할 때 Word가 항상 올바르게 인식한다는 가정에 의존합니다. 즉, "2016-04- 01 "은 항상 2016 년 4 월 1 일로, 결코 2016 년 1 월 4 일로 인식되지 않습니다. 누군가가 반대 사례를 제공 할 수 있다면 가정이 잘못되고 필드 코딩이 변경되어야하며, 아마도 로케일에 따라 달라질 필요가 있습니다.

+0

안녕하세요 bibadia, 고마워요, 내 질문에 VBA를 사용하고 싶지 않아 필드를 자동으로 업데이트하고 싶습니다. 코드를 시도했지만 다음과 같이 나타납니다. Error! 너무 많은 그림 스위치가 정의되었습니다. {}을 (를) 추가하는 데 Ctrl + F9를 사용했지만 위 오류가있었습니다. 어떤 생각? – user72343

+0

@ user72343 : 대개 {} 쌍 중 하나를 놓치거나 잘못 배치했음을 의미합니다. 나는 방금 첫 표현을 통해 여기에서 효과가 있음을 확인했습니다. 하지만 손으로 ​​직접 잡기는 어렵 기 때문에 임시로 * .docx를 https://www.dropbox.com/s/sr33t29o17j691d/2016071101%20datefieldplus1day.docx?dl=0에 입력하십시오. - 다운로드하고, 자신의 문서에 복사/붙여 넣기를하고, 어떤 일이 일어나는지 살펴볼 것을 제안합니다. –

+0

다시 bibadia 주셔서 감사합니다, 그것은 아주 잘하고 있습니다. 자동으로 날짜를 업데이트하지 않았습니다 (시스템 날짜를 변경하여 확인했습니다). Word 2010 32 비트를 사용하고 있습니다. 다른 문서를 업로드 해주십시오. 세 번째 코드로 업데이트 여부를 확인하십시오. – user72343

관련 문제