Заменить все разные даты в формуле на вчерашнюю дату в Excel - PullRequest
0 голосов
/ 29 мая 2020

Я хотел бы, чтобы мой макрос изменил книгу (с любыми датами), указанную в формуле, на другую книгу (с сегодняшней датой), оба файла находятся в одном и том же пути.

Сложность заключается в том, что дата в формуле может быть любой датой за последние 5 дней, поэтому я не могу указать дату для изменения при использовании приведенного ниже кода. Я пробовал рассматривать его как текст с вопросительными знаками "??" для обозначения длины даты (2020 ????), потому что формат даты будет таким же, но когда макрос запускается, он не меняет даты.

Это то, что я Сейчас я использую

    Dim TdyDt2 As String, YstDt2 As String
     Dim DateTdy As String, DateYtr As String
    TdyDt2 = "2020????"  'this is any date in last 5 days
   YstDt2 = Format(Date - 1, "yyyymmdd") 'this needs to be yesterday's date

   Range("B:N").Cells.Replace What:=YstDt2, Replacement:=TdyDt2, LookAt:=xlPart, _
      SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
      ReplaceFormat:=False

Книга Excel, показывающая формулу расположения файла с датой, которую я пытаюсь изменить NB: я знаю, что формула отсутствует "=" это было просто, чтобы получить снимок экрана.

Итак, в понедельник макрос должен измениться "C: \ Daily [Daily202005 29 F.csv]" на «C: \ Daily [Daily202005 31 F.csv] ", что будет вчерашним днем ​​понедельника.

Если у кого-то есть предложение, я рад его услышать.

Ответы [ 2 ]

0 голосов
/ 15 июля 2020

Всем, у кого есть эта проблема, извините, но я не нашел подходящего решения.

То, что я сделал, изменило способ запуска отчетов, так что он должен быть выполняется каждый день недели.

Я использовал предложение @ BigBen для редактирования ссылок:

    'replace the date with today's date
ActiveWorkbook.ChangeLink "N:\Folder\Daily" & Format$(Date - 1, "yyyymmdd") & ".csv", _
"N:\Folder\Daily" & Format$(Date - 1, "yyyymmdd") & ".csv", xlExcelLinks
0 голосов
/ 29 мая 2020

Если ваша проблема действительно в том, как go вернуться на 5 дней, то я бы использовал приведенный ниже код, чтобы получить «Сегодня» и любой предыдущий день, например, вчера. Тогда я бы повторил поиск все последние 5 дней.

Dim dToday As Date
dToday = Date
Dim dYesterday As Date
dYesterday = Date - 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...