При попытке сохранить файл под именем, заданным пользователем, вы можете получить ошибку - если в имени файла (папки) присутствуют запрещённые символы.
Этого легко избежать, если в процессе формирования имени файла удалить из него недопустимые символы, заменив их символом подчёркивания:
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
Пример использования:
' формируем путь к новому файлу Путь = ThisWorkbook.Path & "\" & Replace_symbols(sh.Name) & _ "\" & Replace_symbols(cell) & "\" & Replace_symbols(cell.Next) & ".jpg"
Ещё одна функция - полезная для вывода в прогресс-бар длинного текста (имени файла):
Function ShortText(ByVal LongText$, ByVal Lenght As Long) As String ' функция урезает длинную текстовую строку LongText$, ' оставляя в ней не более Lenght символов On Error Resume Next: LongText$ = Application.Trim(LongText$) If Len(LongText$) <= Lenght Then ShortText = LongText$: Exit Function arr = Split(LongText$) While UBound(arr) > 0 LongText$ = Split(LongText$, , 2)(1) If Len(LongText$) <= Lenght - 3 Then ShortText = "..." & LongText$: Exit Function arr = Split(LongText$) Wend ' не удалось корректно обрезать текст (по пробелу ShortText = "..." & Right(LongText$, Lenght) End Function
Sub ПримерИспользования_ShortText() ПолныйАдрес$ = "Москва, ЦАО, Внутригородское муниципальное образование Басманное, ул. Большая Почтовая , д.1" УрезанныйАдрес$ = ShortText(ПолныйАдрес$, 50) ' обрезаем до 60 символов MsgBox УрезанныйАдрес$ ' выводит текст "...Басманное, ул. Большая Почтовая , д.1" End Sub
Комментарии
Я эту формулу использую для формирования id, отлично подходит, но ВНИМАНИЕ ВОПРОС! Что дописать, чтобы оставляло только одно подчеркивание. Сразу скажу, что макрос меня не интересует. Нашел штуку убирает все мульти символы в один, но это мне не подходит, мне нужно чтобы убирало только мульти подчеркивания "____" в "_". Заранее благодарен.
St$ = "\/:*?""<>|~!@#$%^&=`"
Огромное спасибо за функцию, очень помогла. Наташа.
Макросы в Excel не имеют ничего общего со скриптами в браузерах.
(совсем другой язык, код будет совершенно другой)
Обратитесь на форумы, где пишут браузерные скрипты, - вам подскажут.
а как это оформить как скрипт в firefox - хроме ?
Решил немного доработать функцию Replace_symbols. В ней замена всегда происходит на "_", мне же потребовалось производить иную замену.
Не бог весть что - но возможно кому-ни будь поможет.
Вот код:
Отправить комментарий