Страница: 1 | 2 |
Вопрос: Как проще отнять от текущей даты 1 день?
Добавлено: 23.04.09 12:10
Автор вопроса: oleg
Всем добрый день!
Подскажите как проще открыть файл, находящийся в определенном месте, который имеет имя вчерашней даты, то есть отнять от текущей даты 1 день.
Sub откр()
Dim strDate As String
strDate = Format(Now(), "dd.mm.yy") & ".xls"
Application.Workbooks.Open "\путь\" & strDate
End Sub
Если пойти дальше, то еще вопрос как можно показать, что если текущий день недели понедельник, то минусовать нужно 3 дня, то есть открывать файл за пятницу.
Спасибо.
Ответы
Всего ответов: 17
Номер ответа: 1
Автор ответа:
User Unknown
Вечный Юзер!
ICQ: uu@jabber.cz
Вопросов: 120
Ответов: 3302
Профиль | | #1
Добавлено: 23.04.09 13:51
Что-то вроде такого наверное:
http://support.microsoft.com/kb/116281
Номер ответа: 2
Автор ответа:
oleg
Вопросов: 12
Ответов: 23
Профиль | | #2
Добавлено: 23.04.09 16:25
Спасибо. Результат будет получен и при strDate = Format(Now() - 1, "dd.mm.yy" & ".xls" без оператора "сегодня", а если к дням недели привязаться?
Номер ответа: 3
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #3
Добавлено: 23.04.09 19:06
Есть такое выражение
Номер ответа: 4
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #4
Добавлено: 23.04.09 19:07
В Excel есть функция определения дня недели WorkDay(Date,2). Можно как-то использовать.
Номер ответа: 5
Автор ответа:
fAndOrIn
Вопросов: 5
Ответов: 344
Профиль | | #5
Добавлено: 23.04.09 21:24
oleg, попробуй так - всё включено:
Номер ответа: 6
Автор ответа:
mai
Вопросов: 0
Ответов: 24
Профиль | | #6
Добавлено: 24.04.09 03:14
Извиняюсь, можно немного сократить.
Номер ответа: 7
Автор ответа:
oleg
Вопросов: 12
Ответов: 23
Профиль | | #7
Добавлено: 24.04.09 09:09
Спасибо. Попробовал, ругается, что не может найти файл с именем. Само имя, которое нужно найти пишет верно, место верно и файл такой есть, а открыавть не хочет. При вычитании от даты находит, а так нет. Че за фигня не пойму.
Номер ответа: 8
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #8
Добавлено: 24.04.09 09:25
Может нужно явно преобразовать дату в строку, а потом делать слияние строк.
Хотя обычно этого не нужно.
Номер ответа: 9
Автор ответа:
fAndOrIn
Вопросов: 5
Ответов: 344
Профиль | | #9
Добавлено: 24.04.09 11:46
oleg, пример из поста 5 у меня работает.
В посте 6 укороченный код требует 4-хзначное указание года (у меня по крайней мере),
к тому же есть вероятность глюков при изменении настроек системы или при переносе проги с базами на другой комп,
т.к. Date при выводе использует системные настройки отображения даты (по-моему).
Номер ответа: 10
Автор ответа:
mai
Вопросов: 0
Ответов: 24
Профиль | | #10
Добавлено: 24.04.09 14:03
oleg, извините. Упустил из вида, что год надо обозначать двумя знаками. Тогда получается не на много короче.
Работают оба варианта. Вероятность глюков одинакова. Системные настройки отображения даты одинаковы для всех дат.
Может, быть не правильно указываете путь.
Номер ответа: 11
Автор ответа:
fAndOrIn
Вопросов: 5
Ответов: 344
Профиль | | #11
Добавлено: 24.04.09 14:52
А для любителей "посокращать" код нате ещё 3 "копейки" -
Номер ответа: 12
Автор ответа:
mai
Вопросов: 0
Ответов: 24
Профиль | | #12
Добавлено: 24.04.09 16:47
fAndOrIn, стоимость Вашего сокращения вычислите сами, читаемость значительно ухудшилась. Основная идея была в том, что можно от даты отнять некоторое количество дней.
Номер ответа: 13
Автор ответа:
oleg
Вопросов: 12
Ответов: 23
Профиль | | #13
Добавлено: 24.04.09 17:12
Всем большое СПАСИБО! Все работает.
Номер ответа: 14
Автор ответа:
fAndOrIn
Вопросов: 5
Ответов: 344
Профиль | | #14
Добавлено: 25.04.09 09:44
mai, вовсе не хочу чего-то вычислять сам!(потому и занимаюсь этой х....й)
А что бы
Причем неизвестно кем сказано, что единица в этом числе - один день (и не понятно, от какого Рождества). А потому буду считать решение из поста 5 оптимальным.
Номер ответа: 15
Автор ответа:
mai
Вопросов: 0
Ответов: 24
Профиль | | #15
Добавлено: 25.04.09 13:25
fAndOrIn. DateAdd то же чего-то вычисляет, у даты вообще-то тип Date. Пожалуйста, внимательнее читайте справки.
Если Date есть целое число, то почему от одного числа нельзя отнять другое число. Причем здесь Рождество действительно непонятно.
Считать что-то оптимальным или не оптимальным – Ваше право.
Ради интереса запустите в пошаговом режиме процедуру:
В окне Locals посмотрите что происходит.