СообЧа > База Знаний > Программы > MS Word

Вопрос

Нужен такой макрос, который вставляет текущую дату вида «седьмое августа две тысячи второго года». Желательно, чтобы стояло в документе и автоматом обновлялось на текущую дату (чтобы каждый раз не вставлять). Т.к. очень много документов и каждый раз менять утомительно…

Ответ

Есть вот такой макрос для вставки даты в Ворде:
'
\ Dim Day(1 To 21) As String
Dim Month(1 To 12) As String
Dim Year(1 To 14) As String
Dim DD, MM, YY As Integer

Day(1) = "первое "
Day(2) = "второе "
Day(3) = "третье "
Day(4) = "четвертое "
Day(5) = "пятое "
Day(6) = "шестое "
Day(7) = "седьмое "
Day(8) = "восьмое "
Day(9) = "девятое "
Day(10) = "десятое "
Day(11) = "одиннадцатое "
Day(12) = "двенадцатое "
Day(13) = "тринадцатое "
Day(14) = "четырнадцатое "
Day(15) = "пятнадцатое "
Day(16) = "шестнадцатое "
Day(17) = "семнадцатое "
Day(18) = "восемнадцатое "
Day(19) = "девятнадцатое "
Day(20) = "двадцатое "
Day(21) = "тридцатое "

Month(1) = "января "
Month(2) = "февраля "
Month(3) = "марта "
Month(4) = "апреля "
Month(5) = "мая "
Month(6) = "июня "
Month(7) = "июля "
Month(8) = "августа "
Month(9) = "сентября "
Month(10) = "октября "
Month(11) = "ноября "
Month(12) = "декабря "

Year(1) = "первого "
Year(2) = "второго "
Year(3) = "третьего "
Year(4) = "четвертого "
Year(5) = "пятого "
Year(6) = "шестого "
Year(7) = "седьмого "
Year(8) = "восьмого "
Year(9) = "девятого "
Year(10) = "десятого "
Year(11) = "одиннадцатого "
Year(12) = "двенадцатого "
Year(13) = "тринадцатого "
Year(14) = "четырнадцатого "

'strDate = InputBox("Ввод даты", " Введите дату", Date$)
'If Not IsDate(strDate) Then GoTo GetOut
strDate = Date$ Then
'DD = Val(Mid(strDate, 4, 2))
'MM = Val(Mid(strDate, 1, 2))
'YY = Val(Mid(strDate, 9, 2))
'Else
DD = Val(Mid(strDate, 1, 2))
MM = Val(Mid(strDate, 4, 2))
YY = Val(Mid(strDate, 9, 2))
'End If
If DD <= 20 Then strDate = Day(DD)
If (DD >= 21) And (DD <= 29) Then
strDate = "двадцать "
strDate = strDate + Day(DD Mod 20)
End If
If DD = 30 Then strDate = Day(21)
If DD = 31 Then strDate = "тридцать " + Day(1)
strDate = strDate + Month(MM) + "две тысячи " + Year(YY) + "года "
Selection.TypeText Text:=strDate
GetOut:
End Sub


Чтобы автоматически обновлять, сделай так: создай в Word макрос с именем Auto_Open() (или Auto_Exec() — не помню точно)
Sub Auto_Open()
DataInsert() 'это твой макрос с вставкой даты
End Sub

Такая вещь должна открываться при старте Word и выполнять указанный макрос (да и вообще любые действия, которые нужно — хоть пароль запрашивай :-)

Alex Dolgow, FatCat



Copyright © 2000-2004 Сообщество Чайников
Контактная информация