Страницы: 1
RSS
Экранирование (игнорирование?) знака "/"
 
Добрый вечер, уважаемые форумчане.
вот есть код:
Код
Sub QQQ
Dim wb As Workbook
Set wb = ActiveWorkbook
Set PZ = Sheets("Лист2")
Set L1 = Sheets("Лист1")
For a = 4 To 17
PZ.Cells(6, 1) = L1.Cells(a, 1)

 PZ.Copy                                                  '
ActiveWorkbook.SaveAs wb.Path & "\" & PZ.Cells(6, 1).Value & ".xlsx" 

Next a


End Sub
Меняет значение в ячейке PZ.Cells(6, 1) на значение из таблицы на другом листе и копирует лист в отдельный файл с названием из этой же ячейки.
Но если в этой ячейке есть текст в котором символ "/", то макрос останавливается с ошибкой (см.приложеный скрин). Ну т.е. воспринимает его как часть пути чтоли... Прошу подсказки, как сделать так, чтобы макрос при присваивании имени вновь создаваемому файлу убирал из этого имени знак "/" ?
PS И что дописать чтобы файлы которые создаются копированием листов, не оставались открытыми, а закрывались.
Спасибо
PS на приложенном скрине ошибка возникает, когда он пытается обработать значение из ячейки равное "1475/1-17"
Изменено: john22255 - 28.11.2023 16:33:08
 
Цитата
john22255 написал:
воспринимает его как часть пути чтоли...
а как еще должен воспринимать? Этот символ не допускается использовать в качестве имени файла или папки, т.к. он является разделителем папок. Вы даже руками не сможете создать файл с именем, в котором содержится этот символ :)
Цитата
john22255 написал:
убирал из этого имени знак "/"
Есть функция Replace:
Код
ActiveWorkbook.SaveAs wb.Path & "\" & Replace(PZ.Cells(6, 1).Value,"/","") & ".xlsx"

но лучше использовать доп.функцию, которая в цикле будет удалять ВСЕ "неугодные" символы. Что-то вроде:
Код
Function RepSymbols(sTxt$)
    Const sUNUSED$ = "\/:*<>|"""
    
    Dim lr&, sl$, sres$
    sres = sTxt
    For lr = 1 To Len(sUNUSED)
        sl = Mid$(sUNUSED, lr, 1)
        sres = Replace(sres, sl, "")
    Next
    RepSymbols = sres
End Function

а использовать так:
Код
ActiveWorkbook.SaveAs wb.Path & "\" & RepSymbols(PZ.Cells(6, 1).Value) & ".xlsx"
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо!  
Страницы: 1
Наверх