Проблема в том, что ваш синтаксис неверен. Свойства .Date
и .Replacement.Cell
не существуют в объекте Find
. Обязательно прочитайте инструкцию найти объект и не придумывайте свойства.
Правильная синтаксис c в соответствии с Поиск и замена текста или форматирование выглядит примерно так:
With wdDoc.Content.Find
.ClearFormatting
.Text = "17.01.2020" 'your date to replace
.Replacement.ClearFormatting
.Replacement.Text = ThisWorkbook.Worksheets("Sheet1").Range("A1").Text 'read value from sheet1 cell A1
.Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue
End With
Согласно комментарию Cindys, существуют соответствующие символы подстановки в Word аналогично использованию регулярных выражений.
With wdDoc.Content.Find
.ClearFormatting
.Text = "[0-9]{2}.[0-9]{2}.[0-9]{4}" 'will match ##.##.####
.MatchWildcards = True 'makes sure the above wildcards are recognized
.Replacement.ClearFormatting
.Replacement.Text = ThisWorkbook.Worksheets("Sheet1").Range("A1").Text 'read value from sheet1 cell A1
.Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue
End With
Поскольку вы используете позднее связывание, вы должны либо определить свои константы Word для перечисления WdFindWrap и WdReplace перед их использованием
Const wdReplaceAll As Long = 2
Const wdFindContinue As Long = 1
или замените их значениями
.Execute Replace:=2, Forward:=True, Wrap:=1
или установите ссылку на Word и используйте привязку eary, чтобы они определялись автоматически.