При попытке сохранить файл под именем, заданным пользователем, вы можете получить ошибку - если в имени файла (папки) присутствуют запрещённые символы. Этого легко избежать, если в процессе формирования имени файла удалить из него недопустимые символы, заменив их символом подчёркивания: 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
|
|||

Комментарии
Решил немного доработать функцию Replace_symbols. В ней замена всегда происходит на "_", мне же потребовалось производить иную замену. Не бог весь, что - но возможно кому ни будь поможет. Вот код:
Function Replace_path(path)
StFind = "~!@/\#$%^&*=|`"""
StRepl = "___--________''"
For i% = 1 To Len(StFind)
path = Replace(path, Mid(StFind, i, 1), Mid(StRepl, i, 1))
Next
Replace_path = path
End Function
Отправить комментарий