Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Изменение расширения файла который имеет неизвестное имя. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Изменение расширения файла который имеет неизвестное имя. (Макросы Sub)
Изменение расширения файла который имеет неизвестное имя.
naxa Дата: Вторник, 22.10.2013, 14:20 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте.
Как переименовать готовый файл prm который получается в результате такого кода:
...
[vba]
Код
Const FINAL_OUT = "final\"
dateFormat = Format(Now(), "dd.mm.yyyy_hh-mm-ss")

MkDir ThisWorkbook.Path & "\" & FINAL_OUT
ChDir Left(ThisWorkbook.Path, 1): ChDir ThisWorkbook.Path & "\" & FINAL_OUT
ActiveWorkbook.SaveAs Filename:="" & dateFormat & ".prn", _
FileFormat:=xlTextPrinter, CreateBackup:=False
[/vba]

Суть такого решения в том, что: Создается таблица в которой от 20 до 10000 строк текста, длина текста всегда разная, формат тоже разный, от 00001 до 2,45. При экспорте данных в txt(с табуляцией), xlText все данные в которых есть знак "," берутся в кавычки, при экспорте в txt(с табуляцией), xlTextPrinter - между очень длинными данными отсутствует пробел. А это все в таком виде не загружается в базу. Идеальное форматирование сохраняется при экспорте в формате *.prm. Но итоговый файл должен быть с расширением *.txt . При этом текущее имя файла должно быть в формате текущей даты и времени, можно без секунд.

Информацию как переименовать файлы с помощью vba я нашел, а вот как правильно указать данный адрес файла не могу понять. Кто сможет показать корректный код для данного решения?
Заранее благодарен
 
Ответить
СообщениеЗдравствуйте.
Как переименовать готовый файл prm который получается в результате такого кода:
...
[vba]
Код
Const FINAL_OUT = "final\"
dateFormat = Format(Now(), "dd.mm.yyyy_hh-mm-ss")

MkDir ThisWorkbook.Path & "\" & FINAL_OUT
ChDir Left(ThisWorkbook.Path, 1): ChDir ThisWorkbook.Path & "\" & FINAL_OUT
ActiveWorkbook.SaveAs Filename:="" & dateFormat & ".prn", _
FileFormat:=xlTextPrinter, CreateBackup:=False
[/vba]

Суть такого решения в том, что: Создается таблица в которой от 20 до 10000 строк текста, длина текста всегда разная, формат тоже разный, от 00001 до 2,45. При экспорте данных в txt(с табуляцией), xlText все данные в которых есть знак "," берутся в кавычки, при экспорте в txt(с табуляцией), xlTextPrinter - между очень длинными данными отсутствует пробел. А это все в таком виде не загружается в базу. Идеальное форматирование сохраняется при экспорте в формате *.prm. Но итоговый файл должен быть с расширением *.txt . При этом текущее имя файла должно быть в формате текущей даты и времени, можно без секунд.

Информацию как переименовать файлы с помощью vba я нашел, а вот как правильно указать данный адрес файла не могу понять. Кто сможет показать корректный код для данного решения?
Заранее благодарен

Автор - naxa
Дата добавления - 22.10.2013 в 14:20
Матраскин Дата: Вторник, 22.10.2013, 15:34 | Сообщение № 2
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
naxa, а можете сказать покороче...мне кажется тут много лишнего написано =\

как найти файл *.prm на компьютере и переименовать с помощью VBA? такой ваш вопрос?


в интернете опять кто-то не прав

Сообщение отредактировал Матраскин - Вторник, 22.10.2013, 15:35
 
Ответить
Сообщениеnaxa, а можете сказать покороче...мне кажется тут много лишнего написано =\

как найти файл *.prm на компьютере и переименовать с помощью VBA? такой ваш вопрос?

Автор - Матраскин
Дата добавления - 22.10.2013 в 15:34
Alex_ST Дата: Вторник, 22.10.2013, 17:50 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
Цитата Матраскин, 22.10.2013 в 15:34, в сообщении № 2
как найти файл *.prm на компьютере и переименовать с помощью VBA? такой ваш вопрос?

похоже, что всё-таки не совсем так.
naxa, похоже, хочет, сохранив файл командой[vba]
Код
ActiveWorkbook.SaveAs Filename:="" & dateFormat & ".prn"
[/vba] найти где-то файл с расширением
в формате *.prm
но при этом
итоговый файл должен быть с расширением *.txt
Ну неужели не понятно? :)



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Вторник, 22.10.2013, 17:52
 
Ответить
Сообщение
Цитата Матраскин, 22.10.2013 в 15:34, в сообщении № 2
как найти файл *.prm на компьютере и переименовать с помощью VBA? такой ваш вопрос?

похоже, что всё-таки не совсем так.
naxa, похоже, хочет, сохранив файл командой[vba]
Код
ActiveWorkbook.SaveAs Filename:="" & dateFormat & ".prn"
[/vba] найти где-то файл с расширением
в формате *.prm
но при этом
итоговый файл должен быть с расширением *.txt
Ну неужели не понятно? :)

Автор - Alex_ST
Дата добавления - 22.10.2013 в 17:50
Poltava Дата: Вторник, 22.10.2013, 18:01 | Сообщение № 4
Группа: Друзья
Ранг: Форумчанин
Сообщений: 232
Репутация: 50 ±
Замечаний: 0% ±

Я полагаю что автор пытается переименовать файл пока он незакрыт а если его закрыть то дальнейший код по переименованию не срабатывает. В общем тут нужны пояснения ТС
 
Ответить
СообщениеЯ полагаю что автор пытается переименовать файл пока он незакрыт а если его закрыть то дальнейший код по переименованию не срабатывает. В общем тут нужны пояснения ТС

Автор - Poltava
Дата добавления - 22.10.2013 в 18:01
Alex_ST Дата: Вторник, 22.10.2013, 18:10 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
1. Раз уж
итоговый файл должен быть с расширением *.txt
, то почему сразу не сохранить как *.txt ?
2. Что-то я очень сильно сомневаюсь, что при простом переименовании файла получится что-то путное.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщение1. Раз уж
итоговый файл должен быть с расширением *.txt
, то почему сразу не сохранить как *.txt ?
2. Что-то я очень сильно сомневаюсь, что при простом переименовании файла получится что-то путное.

Автор - Alex_ST
Дата добавления - 22.10.2013 в 18:10
Poltava Дата: Вторник, 22.10.2013, 18:23 | Сообщение № 6
Группа: Друзья
Ранг: Форумчанин
Сообщений: 232
Репутация: 50 ±
Замечаний: 0% ±

Может автору такой вариант нужен. Пересохранение через промежуточный файл
[vba]
Код
Sub naxa()
      Const FINAL_OUT = "final\"
      dateFormat = Format(Now(), "dd.mm.yyyy_hh-mm-ss")
      fn = ThisWorkbook.Path & "\" & FINAL_OUT
      pas = Right(ThisWorkbook.Name, Len(ThisWorkbook.Name) - InStrRev(ThisWorkbook.Name, ".") + 1)
      On Error Resume Next: MkDir fn: On Error GoTo 0
      ActiveWorkbook.SaveCopyAs Environ("temp") & "\" & dateFormat & ðàs
      Workbooks.Open Environ("temp") & "\" & dateFormat & pas
      ActiveWorkbook.SaveAs Filename:=fn & dateFormat & ".prn", _
                            FileFormat:=xlTextPrinter, CreateBackup:=False
      ActiveWorkbook.Close False: Kill Environ("temp") & "\" & dateFormat & pas
      Name fn & dateFormat & ".prn" As fn & dateFormat & ".txt"
End Sub
[/vba]


Сообщение отредактировал Poltava - Вторник, 22.10.2013, 18:30
 
Ответить
СообщениеМожет автору такой вариант нужен. Пересохранение через промежуточный файл
[vba]
Код
Sub naxa()
      Const FINAL_OUT = "final\"
      dateFormat = Format(Now(), "dd.mm.yyyy_hh-mm-ss")
      fn = ThisWorkbook.Path & "\" & FINAL_OUT
      pas = Right(ThisWorkbook.Name, Len(ThisWorkbook.Name) - InStrRev(ThisWorkbook.Name, ".") + 1)
      On Error Resume Next: MkDir fn: On Error GoTo 0
      ActiveWorkbook.SaveCopyAs Environ("temp") & "\" & dateFormat & ðàs
      Workbooks.Open Environ("temp") & "\" & dateFormat & pas
      ActiveWorkbook.SaveAs Filename:=fn & dateFormat & ".prn", _
                            FileFormat:=xlTextPrinter, CreateBackup:=False
      ActiveWorkbook.Close False: Kill Environ("temp") & "\" & dateFormat & pas
      Name fn & dateFormat & ".prn" As fn & dateFormat & ".txt"
End Sub
[/vba]

Автор - Poltava
Дата добавления - 22.10.2013 в 18:23
AndreTM Дата: Вторник, 22.10.2013, 19:08 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Может, автору вообще сразу формировать нужный файл, в нужном месте и нужного вида?


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеМожет, автору вообще сразу формировать нужный файл, в нужном месте и нужного вида?

Автор - AndreTM
Дата добавления - 22.10.2013 в 19:08
Alex_ST Дата: Вторник, 22.10.2013, 19:38 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
А может быть мы все перестанем изображать из себя Вольфов Мессингов и пытаться силой мысли проникнуть в тайны задумки автора?



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеА может быть мы все перестанем изображать из себя Вольфов Мессингов и пытаться силой мысли проникнуть в тайны задумки автора?

Автор - Alex_ST
Дата добавления - 22.10.2013 в 19:38
Poltava Дата: Вторник, 22.10.2013, 19:58 | Сообщение № 9
Группа: Друзья
Ранг: Форумчанин
Сообщений: 232
Репутация: 50 ±
Замечаний: 0% ±

Alex_ST, hands hands hands
 
Ответить
СообщениеAlex_ST, hands hands hands

Автор - Poltava
Дата добавления - 22.10.2013 в 19:58
naxa Дата: Вторник, 05.11.2013, 01:03 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Цитата Матраскин, 22.10.2013 в 15:34, в сообщении № 2
naxa, а можете сказать покороче...мне кажется тут много лишнего написано =\

Вот как раз этим "лишним" я и пытался избежать всего что было тут сейчас написано) но похоже ни код ни помог ни все лишнее :)
Короче попытаюсь пояснить еще раз что нужно:
1. Сохраняю файл в формате prn (почему именно в нем уже писал - сохраняется абсолютное форматирование как у оригинала)
2. Файл закрывается.
3. Необходимо найти этот файл в той папке где он сохранился(путь сохранения устанавливается через ThisWorkbook.Path & "\" & FINAL_OUT как указано в вопросе)
4. И изменить расширение файла с prn на txt (что бы программа его приняла)

Что у меня не получается из всего этого сделать:
3. Необходимо найти этот файл в той папке где он сохранился(путь устанавливается через ThisWorkbook.Path & "\" & FINAL_OUT как указано в вопросе)
4. И изменить расширение файла с prn на txt (что бы программа его приняла)
В особенности пункт 3
 
Ответить
Сообщение
Цитата Матраскин, 22.10.2013 в 15:34, в сообщении № 2
naxa, а можете сказать покороче...мне кажется тут много лишнего написано =\

Вот как раз этим "лишним" я и пытался избежать всего что было тут сейчас написано) но похоже ни код ни помог ни все лишнее :)
Короче попытаюсь пояснить еще раз что нужно:
1. Сохраняю файл в формате prn (почему именно в нем уже писал - сохраняется абсолютное форматирование как у оригинала)
2. Файл закрывается.
3. Необходимо найти этот файл в той папке где он сохранился(путь сохранения устанавливается через ThisWorkbook.Path & "\" & FINAL_OUT как указано в вопросе)
4. И изменить расширение файла с prn на txt (что бы программа его приняла)

Что у меня не получается из всего этого сделать:
3. Необходимо найти этот файл в той папке где он сохранился(путь устанавливается через ThisWorkbook.Path & "\" & FINAL_OUT как указано в вопросе)
4. И изменить расширение файла с prn на txt (что бы программа его приняла)
В особенности пункт 3

Автор - naxa
Дата добавления - 05.11.2013 в 01:03
AndreTM Дата: Вторник, 05.11.2013, 05:30 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
naxa, понимаете, вот вы пишете:
[vba]
Код
ActiveWorkbook.SaveAs Filename:="" & dateFormat & ".prn"
[/vba]а зачем? Кто вам запрещает сразу указать расширение .txt?
Кроме того - нет "формата prn", есть FileFormat:=xlTextPrinter. И он тоже имеет свои недостатки.
Поэтому я и указывал выше, что можно сформировать файл с нужным содержанием и именем. А вы всё решаете какую-то поставленную только перед собою задачу...


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщениеnaxa, понимаете, вот вы пишете:
[vba]
Код
ActiveWorkbook.SaveAs Filename:="" & dateFormat & ".prn"
[/vba]а зачем? Кто вам запрещает сразу указать расширение .txt?
Кроме того - нет "формата prn", есть FileFormat:=xlTextPrinter. И он тоже имеет свои недостатки.
Поэтому я и указывал выше, что можно сформировать файл с нужным содержанием и именем. А вы всё решаете какую-то поставленную только перед собою задачу...

Автор - AndreTM
Дата добавления - 05.11.2013 в 05:30
naxa Дата: Среда, 06.11.2013, 22:50 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
а зачем? Кто вам запрещает сразу указать расширение .txt?

Извините, но вы вообще читали что я писал?
Попробуйте сохранить ячейки с абсолютно разными форматами и длиной строки(от 3 до 30 символов) и сохранить в формате txt и вы увидите что очень длинные строки сливаются вместе, из-за более коротких строк, а так же происходит смещение самого текста все по той же самой причине.
И он тоже имеет свои недостатки.

Я достаточно перебирал все варианты и уже четко определил какой формат мне нужен. Я не задаю вопрос какой формат мне выбрать.
А вы всё решаете какую-то поставленную только перед собою задачу...

Что-то я не совсем вас понял, вы вообще о чем? Ясное дело что это моя задача и мне ее нужно решить для себя, для облегчения рутинной, ежедневной, работы, что бы делать ее не за 3 с половиной часа, а за 2 минуты. Я за тем сюда и обратился, в надежде, что знающие люди помогут мне в этом.
Если нет возможности подсказать то зачем тратить и свое и чужое время??
 
Ответить
Сообщение
а зачем? Кто вам запрещает сразу указать расширение .txt?

Извините, но вы вообще читали что я писал?
Попробуйте сохранить ячейки с абсолютно разными форматами и длиной строки(от 3 до 30 символов) и сохранить в формате txt и вы увидите что очень длинные строки сливаются вместе, из-за более коротких строк, а так же происходит смещение самого текста все по той же самой причине.
И он тоже имеет свои недостатки.

Я достаточно перебирал все варианты и уже четко определил какой формат мне нужен. Я не задаю вопрос какой формат мне выбрать.
А вы всё решаете какую-то поставленную только перед собою задачу...

Что-то я не совсем вас понял, вы вообще о чем? Ясное дело что это моя задача и мне ее нужно решить для себя, для облегчения рутинной, ежедневной, работы, что бы делать ее не за 3 с половиной часа, а за 2 минуты. Я за тем сюда и обратился, в надежде, что знающие люди помогут мне в этом.
Если нет возможности подсказать то зачем тратить и свое и чужое время??

Автор - naxa
Дата добавления - 06.11.2013 в 22:50
AndreTM Дата: Четверг, 07.11.2013, 01:42 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
naxa, а вы читали, что вам отвечали?
Вы задали вопрос:
Как переименовать готовый файл prn который получается в результате такого кода
Вам ответили полностью. При этом решили вашу задачу.

Другие (и я в том числе) посчитали, что перед вами всего лишь стояла задача:
Идеальное форматирование сохраняется при экспорте в формате *.prn. Но итоговый файл должен быть с расширением *.txt . При этом текущее имя файла должно быть в формате текущей даты и времени
Вам сказали, затем ещё раз намекнули:
сразу указать расширение .txt

Мы всеми силами пытались вам подсказать, что достаточно (либо в вашем исходном коде, либо в коде Poltava) написать вместо ".prn" - ".txt"
[vba]
Код
ActiveWorkbook.SaveAs Filename:=fn & dateFormat & ".txt", FileFormat:=xlTextPrinter, CreateBackup:=False
[/vba]
И всё. Здесь - не делают за вас. Здесь пытаются научить. А вы, судя по всему, даже и не пытались проверять работоспособность даваемых вам советов. Или не понимаете вообще, что написано в коде, а просто откуда-то его скопипастили, а теперь ещё и пытаетесь что-то доказывать. Это типа мы ещё и ваше драгоценное время потратили...


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщениеnaxa, а вы читали, что вам отвечали?
Вы задали вопрос:
Как переименовать готовый файл prn который получается в результате такого кода
Вам ответили полностью. При этом решили вашу задачу.

Другие (и я в том числе) посчитали, что перед вами всего лишь стояла задача:
Идеальное форматирование сохраняется при экспорте в формате *.prn. Но итоговый файл должен быть с расширением *.txt . При этом текущее имя файла должно быть в формате текущей даты и времени
Вам сказали, затем ещё раз намекнули:
сразу указать расширение .txt

Мы всеми силами пытались вам подсказать, что достаточно (либо в вашем исходном коде, либо в коде Poltava) написать вместо ".prn" - ".txt"
[vba]
Код
ActiveWorkbook.SaveAs Filename:=fn & dateFormat & ".txt", FileFormat:=xlTextPrinter, CreateBackup:=False
[/vba]
И всё. Здесь - не делают за вас. Здесь пытаются научить. А вы, судя по всему, даже и не пытались проверять работоспособность даваемых вам советов. Или не понимаете вообще, что написано в коде, а просто откуда-то его скопипастили, а теперь ещё и пытаетесь что-то доказывать. Это типа мы ещё и ваше драгоценное время потратили...

Автор - AndreTM
Дата добавления - 07.11.2013 в 01:42
naxa Дата: Суббота, 23.11.2013, 01:08 | Сообщение № 14
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Больше спасибо всем кто помог с кодом.

Да, действительно я не проверял советы! я их просто не увидел на фоне всего остального, что было написано. Приношу извинения, а так же благодарность Вам, AndreTM и Poltava за труд, буду проверять.

2AndreTM мне кажется это все лишнее, но если вам интересно то я прекрасно понимаю что написано в том что я предоставил, поскольку именно я это и писал. А в том что написал Poltava я, как вы верно указали, пока мало что понимаю. И да, время драгоценное и ваше и мое, не стоит вырывать отдельные слова из текста.
 
Ответить
СообщениеБольше спасибо всем кто помог с кодом.

Да, действительно я не проверял советы! я их просто не увидел на фоне всего остального, что было написано. Приношу извинения, а так же благодарность Вам, AndreTM и Poltava за труд, буду проверять.

2AndreTM мне кажется это все лишнее, но если вам интересно то я прекрасно понимаю что написано в том что я предоставил, поскольку именно я это и писал. А в том что написал Poltava я, как вы верно указали, пока мало что понимаю. И да, время драгоценное и ваше и мое, не стоит вырывать отдельные слова из текста.

Автор - naxa
Дата добавления - 23.11.2013 в 01:08
AndreTM Дата: Суббота, 23.11.2013, 01:16 | Сообщение № 15
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
naxa, аналогично... :D


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщениеnaxa, аналогично... :D

Автор - AndreTM
Дата добавления - 23.11.2013 в 01:16
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Изменение расширения файла который имеет неизвестное имя. (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!