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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос сохранения с присвоением имени файла из ячейки - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос сохранения с присвоением имени файла из ячейки (Макросы/Sub)
Макрос сохранения с присвоением имени файла из ячейки
Yar4i4 Дата: Среда, 09.03.2016, 08:13 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 55
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Доброе утро!
Имею файл с ячейкой C7, в которой содержится полезная информация для наименования файла, при сохранении:
2-32-1 Ф ЯМ*4-525-3Д1* ФЕВРАЛЬ 2016г.*"КС-3 "Гагарацкая". КЦ-2".Строительные работы блок-бокса трансформаторной подстанции 2КТП-ЭП-400/10/0,4-УХЛ1 (107г) (Доп. к смете 4-525-3 №14303606, кн.16) -158 064*, 32 Система магистральных газопроводов Бованенково - Ухта.
Данные ячейки C7 разделены знаком "*".
Необходимо сохранить файл в любом месте в экселе со стандартным расширением используя в названии:
"букву Р", "пробел", "данные до первой звёздочки", "три пробела", "данные между первой и второй звёздочкой", "три пробела", "цифры перед четвёртой звёздочкой (иногда со знаком минуса)"
Пример названия файла:
"Р 2-32-1 Ф ЯМ 4-525-3Д1 -158 064"
К сообщению приложен файл: _2-32-1___4-525.xlsx(14Kb)
 
Ответить
СообщениеДоброе утро!
Имею файл с ячейкой C7, в которой содержится полезная информация для наименования файла, при сохранении:
2-32-1 Ф ЯМ*4-525-3Д1* ФЕВРАЛЬ 2016г.*"КС-3 "Гагарацкая". КЦ-2".Строительные работы блок-бокса трансформаторной подстанции 2КТП-ЭП-400/10/0,4-УХЛ1 (107г) (Доп. к смете 4-525-3 №14303606, кн.16) -158 064*, 32 Система магистральных газопроводов Бованенково - Ухта.
Данные ячейки C7 разделены знаком "*".
Необходимо сохранить файл в любом месте в экселе со стандартным расширением используя в названии:
"букву Р", "пробел", "данные до первой звёздочки", "три пробела", "данные между первой и второй звёздочкой", "три пробела", "цифры перед четвёртой звёздочкой (иногда со знаком минуса)"
Пример названия файла:
"Р 2-32-1 Ф ЯМ 4-525-3Д1 -158 064"

Автор - Yar4i4
Дата добавления - 09.03.2016 в 08:13
Апострофф Дата: Среда, 09.03.2016, 09:05 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 26 ±
Замечаний: 0% ±

Excel 2003
Оно -
[vba]
Код
A = Split([c7], "*")
For i = Len(A(3)) To 1 Step -1
  If Mid$(A(3), i, 1) Like "[!- 0-9]" Then Exit For
Next
fn = "Р " & A(0) & "   " & A(1) & "   " & Trim$(Mid$(A(3), i + 1))
[/vba]


Сообщение отредактировал Апострофф - Среда, 09.03.2016, 09:07
 
Ответить
СообщениеОно -
[vba]
Код
A = Split([c7], "*")
For i = Len(A(3)) To 1 Step -1
  If Mid$(A(3), i, 1) Like "[!- 0-9]" Then Exit For
Next
fn = "Р " & A(0) & "   " & A(1) & "   " & Trim$(Mid$(A(3), i + 1))
[/vba]

Автор - Апострофф
Дата добавления - 09.03.2016 в 09:05
Yar4i4 Дата: Среда, 09.03.2016, 09:40 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 55
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Цитата Апострофф, 09.03.2016 в 09:05, в сообщении № 2
Оно

Может что не так делаю, не сохраняет. Поиском искал... нигде нет файла.
К сообщению приложен файл: 6505516.jpg(35Kb)
 
Ответить
Сообщение
Цитата Апострофф, 09.03.2016 в 09:05, в сообщении № 2
Оно

Может что не так делаю, не сохраняет. Поиском искал... нигде нет файла.

Автор - Yar4i4
Дата добавления - 09.03.2016 в 09:40
Апострофф Дата: Среда, 09.03.2016, 09:42 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 26 ±
Замечаний: 0% ±

Excel 2003
[vba]
Код
activeworkbook.saveas fn
[/vba] - думал, сами догадаетесь %)
 
Ответить
Сообщение[vba]
Код
activeworkbook.saveas fn
[/vba] - думал, сами догадаетесь %)

Автор - Апострофф
Дата добавления - 09.03.2016 в 09:42
Yar4i4 Дата: Среда, 09.03.2016, 09:55 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 55
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Цитата Апострофф, 09.03.2016 в 09:42, в сообщении № 4
догадаетесь

нееее, я же первые шаги делаю в этом.
Добавил в последнюю строку - работает.

Но проверил на других файлах - сохраняет так как надо (наименование файла как надо), но сохраняет в непонятном расширении.
Приложил файл эксель "2" и файл с непонятным расширением "Р 2-28-1 Ф ЯМ л.с.6-15-1-1р 49 692"
К сообщению приложен файл: _2-28-1___..6-1.noext(13Kb) · 0097989.xlsx(13Kb)
 
Ответить
Сообщение
Цитата Апострофф, 09.03.2016 в 09:42, в сообщении № 4
догадаетесь

нееее, я же первые шаги делаю в этом.
Добавил в последнюю строку - работает.

Но проверил на других файлах - сохраняет так как надо (наименование файла как надо), но сохраняет в непонятном расширении.
Приложил файл эксель "2" и файл с непонятным расширением "Р 2-28-1 Ф ЯМ л.с.6-15-1-1р 49 692"

Автор - Yar4i4
Дата добавления - 09.03.2016 в 09:55
RAN Дата: Среда, 09.03.2016, 10:06 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4277
Репутация: 829 ±
Замечаний: 0% ±

2010
Yar4i4,
1. Это файл Excel.
2. Вы задаете вопрос: "Я что-то делаю, но получается хрень. Что я делаю не так?"
Могу ответить абсолютно точно - что-то!


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеYar4i4,
1. Это файл Excel.
2. Вы задаете вопрос: "Я что-то делаю, но получается хрень. Что я делаю не так?"
Могу ответить абсолютно точно - что-то!

Автор - RAN
Дата добавления - 09.03.2016 в 10:06
Апострофф Дата: Среда, 09.03.2016, 10:07 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 26 ±
Замечаний: 0% ±

Excel 2003
Откройте справку, наберите в поиске - saveas xlsx vba excel
https://msdn.microsoft.com/ru-ru/library/office/ff841185.aspx
https://msdn.microsoft.com/ru-ru/library/office/ff198017.aspx
http://www.rondebruin.nl/win/s5/win001.htm
[vba]
Код
ActiveWorkbook.SaveAs fn & ".xlsx", fileformat:=51
[/vba]
 
Ответить
СообщениеОткройте справку, наберите в поиске - saveas xlsx vba excel
https://msdn.microsoft.com/ru-ru/library/office/ff841185.aspx
https://msdn.microsoft.com/ru-ru/library/office/ff198017.aspx
http://www.rondebruin.nl/win/s5/win001.htm
[vba]
Код
ActiveWorkbook.SaveAs fn & ".xlsx", fileformat:=51
[/vba]

Автор - Апострофф
Дата добавления - 09.03.2016 в 10:07
Yar4i4 Дата: Четверг, 31.03.2016, 06:55 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 55
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Среди значений, которые идут на наименование файла попадаются знаки не пригодные в Виндовс в качестве наименования файла.
* \ / или " и макрос не срабатывает. Есть ли какой-то механизм позволяющий обойти, перескочить.
ка-то так, только более органично:
if i содержит * or\or / or "
then Delete
 
Ответить
СообщениеСреди значений, которые идут на наименование файла попадаются знаки не пригодные в Виндовс в качестве наименования файла.
* \ / или " и макрос не срабатывает. Есть ли какой-то механизм позволяющий обойти, перескочить.
ка-то так, только более органично:
if i содержит * or\or / or "
then Delete

Автор - Yar4i4
Дата добавления - 31.03.2016 в 06:55
Апострофф Дата: Четверг, 31.03.2016, 07:42 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 26 ±
Замечаний: 0% ±

Excel 2003
[vba]
Код
fn=replace(fn,"*","_")
[/vba]и т.д.
 
Ответить
Сообщение[vba]
Код
fn=replace(fn,"*","_")
[/vba]и т.д.

Автор - Апострофф
Дата добавления - 31.03.2016 в 07:42
Yar4i4 Дата: Четверг, 31.03.2016, 14:31 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 55
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Цитата Апострофф, 31.03.2016 в 07:42, в сообщении № 9
fn=replace(fn,"*","_")

Кавычки в кавычки не лезут:
[vba]
Код
fn=replace(fn,""","_")
[/vba]
Я через функцию нашёл, но хочется в макросе...
[vba]
Код
Sub Сохранить()
ActiveWorkbook.SaveAs "C:\Documents and Settings\Мои документы\" & Replace_symbols(Range("B2")) & ".xlsm"
End Sub
[/vba]
[vba]
Код
Function Replace_symbols(ByVal txt As String) As String
St$ = "~!@#$%^&*=|`'"""
For i% = 1 To Len(St$)
txt = Replace(txt, Mid(St$, i, 1), "_")
Next
Replace_symbols = txt
End Function
[/vba]


Сообщение отредактировал Yar4i4 - Четверг, 31.03.2016, 15:40
 
Ответить
Сообщение
Цитата Апострофф, 31.03.2016 в 07:42, в сообщении № 9
fn=replace(fn,"*","_")

Кавычки в кавычки не лезут:
[vba]
Код
fn=replace(fn,""","_")
[/vba]
Я через функцию нашёл, но хочется в макросе...
[vba]
Код
Sub Сохранить()
ActiveWorkbook.SaveAs "C:\Documents and Settings\Мои документы\" & Replace_symbols(Range("B2")) & ".xlsm"
End Sub
[/vba]
[vba]
Код
Function Replace_symbols(ByVal txt As String) As String
St$ = "~!@#$%^&*=|`'"""
For i% = 1 To Len(St$)
txt = Replace(txt, Mid(St$, i, 1), "_")
Next
Replace_symbols = txt
End Function
[/vba]

Автор - Yar4i4
Дата добавления - 31.03.2016 в 14:31
Апострофф Дата: Четверг, 31.03.2016, 15:24 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 26 ±
Замечаний: 0% ±

Excel 2003
Кавычки в кавычки не лезут

Влезут, если утоптать -
[vba]
Код
fn = Replace(fn, """", "_" )
[/vba]
или так -
[vba]
Код
fn = Replace(fn, Chr$(34), "_" )
[/vba]
 
Ответить
Сообщение
Кавычки в кавычки не лезут

Влезут, если утоптать -
[vba]
Код
fn = Replace(fn, """", "_" )
[/vba]
или так -
[vba]
Код
fn = Replace(fn, Chr$(34), "_" )
[/vba]

Автор - Апострофф
Дата добавления - 31.03.2016 в 15:24
Yar4i4 Дата: Четверг, 31.03.2016, 15:50 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 55
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Цитата Апострофф, 31.03.2016 в 15:24, в сообщении № 11
утоптать

[vba]
Код
fn = Replace(fn, """", "'")
[/vba]
Спасибо. Заменил кавычки на символ подходящей винде в качестве имени файла '
 
Ответить
Сообщение
Цитата Апострофф, 31.03.2016 в 15:24, в сообщении № 11
утоптать

[vba]
Код
fn = Replace(fn, """", "'")
[/vba]
Спасибо. Заменил кавычки на символ подходящей винде в качестве имени файла '

Автор - Yar4i4
Дата добавления - 31.03.2016 в 15:50
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос сохранения с присвоением имени файла из ячейки (Макросы/Sub)
Страница 1 из 11
Поиск:

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