Страница 1 из 2

Автоматизация сохранения отчета Л7 для импорта в АвтоПарк

СообщениеДобавлено: Пятница 22.06.2007 07:12
Павел Штатнов
Надоело каждый раз нажимать много кнопок для того чтобы сохранить отчет Л7 из каскада в формат MSDOS CSV, поэтому написал макрос:

Sub save()

t = Right(Worksheets("Лист1").Cells(1, 1).Value, 8)
newt = "_200706" & Left(t, 2)
filenamenew = "Kaskad" & newt
ChDir "\\ak1789nt01\AutoPark\TXT\Kaskad"
ActiveWorkbook.SaveAs Filename:=filenamenew, FileFormat:=xlCSVMSDOS, CreateBackup:=False


End Sub

При его использовании всё получается, файл сохраняется в нужном формате, в нужном расширении и в нужное место, но
разделитель данных в файле CSV при использовании этого макроса - ','. Если ту же процедуру проделывать руками (т.е. через меню файл сохранить в формат MS-DOS CSV, То получается разделитель данных в файле CSV - ';' - как раз то что нужно АвтоПарку.
Как с этим бороться я пока не нашёл решения, если кто знает, то напишите.

СообщениеДобавлено: Пятница 22.06.2007 09:24
Дмитрий Логинов
Здравствуйте, Павел
В SaveAs надо добавить параметр Local.
Должно быть так:

ActiveWorkbook.SaveAs Filename:=filenamenew, FileFormat:=xlCSVMSDOS, CreateBackup:=False, Local:=True
И все будет хорошо :)
P.S. Кстати, можно отключать смайлики (галочка соответствующая под окном редактирования сообщения), чтобы информация не искажалась (как в вашем случае - в операторе Right(..., 8 ) преобразовалось в смайлик 8))

СообщениеДобавлено: Пятница 22.06.2007 10:58
Павел Штатнов
Дмитрий Логинов писал(а):В SaveAs надо добавить параметр Local.
Должно быть так:

ActiveWorkbook.SaveAs Filename:=filenamenew, FileFormat:=xlCSVMSDOS, CreateBackup:=False, Local:=True
И все будет хорошо :)


Спасибо Дмитрий - действительно очень сильно помогли. Это настолько нудно каждый раз заходить в меню меню и руками сохранять файл в нужно формате, когда это делаешь сразу за 30 дней. Теперь станет намного легче.

СообщениеДобавлено: Пятница 22.06.2007 11:04
Дмитрий Логинов
Всегда пожалуйста :)
Кстати, а где именно вы сохранили макрос? Надеюсь, вам не приходиться его каждый раз вставлять в Excel перед выполнением?

СообщениеДобавлено: Пятница 22.06.2007 11:22
Павел Штатнов
Дмитрий Логинов писал(а):Всегда пожалуйста :)
Кстати, а где именно вы сохранили макрос? Надеюсь, вам не приходиться его каждый раз вставлять в Excel перед выполнением?


Да-да, я как раз и хотел об этом спросить. Как его правильно сохранить?

СообщениеДобавлено: Пятница 22.06.2007 11:26
Андрей Гуминов
А в каком виде Каскад создает отчет? Может в имени книги есть дата отчета?
Я так понял, год и месяц Вы указали в макросе, а день пишете руками в ячейку A1.

СообщениеДобавлено: Пятница 22.06.2007 11:32
Павел Штатнов
Андрей Гуминов писал(а):А в каком виде Каскад создает отчет? Может в имени книги есть дата отчета?
Я так понял, год и месяц Вы указали в макросе, а день пишете руками в ячейку A1.


Нет, в ячейке A1 как раз выводится строка "Форма Л7. Поездки по транспортным картам за период с 01/06/07 по 01/06/07"
Как раз из нее я дату и вырезаю. Как вырезать месяц я еще не разобрался.
Имя книги никакой информации не содержит.

СообщениеДобавлено: Пятница 22.06.2007 11:44
Дмитрий Логинов
Павел Штатнов писал(а):Да-да, я как раз и хотел об этом спросить. Как его правильно сохранить?

Создаете xls-файл (например, MyMacro.xls). В нем создаете требуемые вам макросы, и сохраняете файл в каталог MS Office - XLStart (если ничего не меняли при установке, то это будет "C:\Program Files\Microsoft Office\OFFICE11\XLSTART" ). При следующем запуске Excel макросы из файла, находящегося в этом каталоге, будут доступны в любом документе Excel.

СообщениеДобавлено: Пятница 22.06.2007 12:02
Андрей Гуминов
Понятно. Ну так функций Right и Left достаточно, Вы уже почти всё сделали:
Код: Выделить всё
t = Right(Worksheets("Лист1").Cells(1, 1).Value, 8)
newt = "_200706" & Left(t, 2)
следует модифицировать:
Код: Выделить всё
t = Right(Worksheets("Лист1").Cells(1, 1).Value, 8)
newt = "_20" & Right(t, 2) & Left(Right(t, 5), 2) & Left(t, 2)


По поводу сохранения Дмитрий всё правильно написал.
Рекомендую также выполнить в Excel пункт меню "Окно - Скрыть", чтобы сама книга не мешалась.

СообщениеДобавлено: Пятница 22.06.2007 12:24
Павел Штатнов
Ок, всем спасибо, коллективными усилиями сделали, теперь на то чтобы сохранить форму Л7 уходит 1 секунда
Выкладываю полный текст макроса для желающих и последовательность действий:
1. Создаем МАКРОС:
Sub SaveL7ForAutoPark()

t = Right(Worksheets("Лист1").Cells(1, 1).Value, 8)
newt = "_20" & Right(t, 2) & Left(Right(t, 5), 2) & Left(t, 2)
filenamenew = "\\Ak1789nt01\AutoPark\TXT\KASKAD\Kaskad" & newt 'Укажите свой путь
ChDir "\\ak1789nt01\AutoPark\TXT\Kaskad" 'Укажите свой путь
ActiveWorkbook.SaveAs Filename:=filenamenew, FileFormat:=xlCSVMSDOS, CreateBackup:=False, Local:=True


End Sub

2. Сохраняем его в пустой книге в C:\Program Files\Microsoft Office\OFFICE11\XLSTART\

3. Создаем кнопку на любой панели инструментов и назначаем ей макрос

4. Выгружаем Л7 нажимаем созданную кнопку и наслаждаемся...

СообщениеДобавлено: Пятница 22.06.2007 13:31
Светлана Хорькова
о как! Какие вы молодцы!
попользую обязательно

СообщениеДобавлено: Пятница 22.06.2007 14:09
Светлана Хорькова
Павел Штатнов писал(а):3. Создаем кнопку на любой панели инструментов и назначаем ей макрос

4. Выгружаем Л7 нажимаем созданную кнопку и наслаждаемся...


может Уважаемый "Полак" влючит этот макрос в свой макрос "Автопарк " и нам сразу станет легче , еще легче?

СообщениеДобавлено: Пятница 22.06.2007 14:24
Леонид Сандал
Светлана Хорькова писал(а):
Павел Штатнов писал(а):3. Создаем кнопку на любой панели инструментов и назначаем ей макрос

4. Выгружаем Л7 нажимаем созданную кнопку и наслаждаемся...


может Уважаемый "Полак" влючит этот макрос в свой макрос "Автопарк " и нам сразу станет легче , еще легче?


Нет. Пока. Вот тут http://forum.autopark.ru/viewtopic.php?p=314#314 я называл текущую интеграцию АвтоПарк с Каскад чахлой поделкой. Т.е. по уму, следует все переделать. Я еще, в отличие от тебя, Света, надежду не потерял.

P.S.
Наверняка найдется задача, не связанная с АвтоПарк никак совсем, для решения которой потребуется макрос. Вот тут и пригодится копилка в виде MyMacros.xls
P.P.S.
Наступление состояния "легче, еще легче" должно быть плавным :). Любой стресс вреден для здоровья :P

СообщениеДобавлено: Пятница 22.06.2007 14:26
Павел Штатнов
Светлана Хорькова писал(а):может Уважаемый "Полак" влючит этот макрос в свой макрос "Автопарк " и нам сразу станет легче , еще легче?


Не не нужно, кто знает, что еще МТА в этой форме будет менять???

СообщениеДобавлено: Пятница 22.06.2007 14:28
Павел Штатнов
Не пойму прикола...
После выгрузки Л7 список макросов пуст, а если просто открыть EXEL - то макросы есть.
:roll: