Страницы: 1
RSS
Макрос в EXCEL 2019 сохранить как, Excel 2019
 
Доброго времени суток!
Сложилась такая проблема. Установили новую операционку Win-10 и Excel 2019. В прежней версии виды 7 и excel 2010, работал макрос (файл прикладываю) при выполнении "сохранить как" брались значения из заданных ячеек и формировалось имя файла. В excel 2019, если есть точки в "Дате", "Договор" и в других ячейках откуда берутся значения, имя файла не формируется. Прошу помочь с этой проблемой.
 
Походу никто не сталкивался с этим  :(  
 
Цитата
Wladimir_A-A написал: имя файла не формируется.
На каком этапе ошибка? Какая ошибка? Что Excel говорит?
Согласие есть продукт при полном непротивлении сторон
 
Excel не спрашивает. Просто не формируется имя файла из заданных параметров.
 
Что значит 'не формирует'? Что в переменной 's' во время работы макроса?
Я почему спрашиваю, на моем 2010м Excel  проблема не воспроизводится, а устанавливать 2019й ради одной задачи нет желания
Пройдите по коду по-шагово и посмотрите чему равна переменная s
Изменено: Sanja - 21.06.2019 14:41:40
Согласие есть продукт при полном непротивлении сторон
 
Если в ячейках нет "точек", то имя файла формируется. В первом рисунке в ячейках проставляются "точки" во втором я их убрал и имя файла сформировалось.  
 
в том и проблема, что в 2010 все работало. А после переустановки компьютера с новой виной и офисом, макрос перестал работать
 
А как Вы обнаружили что всему причина 'точки'?
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Wladimir_A-A написал:
Походу никто не сталкивался
некоторые давно в свойе библиотеке держат функцию:
Код
'******************************************************************************
' Удалить с имени файла недопустимые символы
'
Function DelBadDOSChar$(s$)
  Const bch$ = "\/|:+*?<>""=%!@."    ' %!@. - не допустимы в некоторых компонентах
  Dim i&:  i = 1
  Do While i <= Len(s)
    If InStr(bch, Mid(s, i, 1)) > 0 Then s = Left(s, i - 1) & Right(s, Len(s) - i) Else i = i + 1
  Loop
  DelBadDOSChar = s
End Function
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Sanja, физически их убрал в ячейках B3 B4 B5 B6
 
Это понятно, но как Вы пришли к такому выводу, что убрать нужно именно точки?
Согласие есть продукт при полном непротивлении сторон
 
Ігор Гончаренко, я не спец в это :) а куда это прописать? в какую часть макроса?
 
Вот так будет выглядеть весь Ваш код с функцией от Ігор Гончаренко,
Обратите внимание на 6-ю строку
Скрытый текст
Изменено: Sanja - 21.06.2019 14:58:02
Согласие есть продукт при полном непротивлении сторон
 
Sanja, Спасибо, я хотел бы оставить сохранение как было раньше с точками. Причем  если имя прописывать руками, то файл сохраняется :(
 
У меня и в 2010 ваш код не работает
Зато этот работает
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If SaveAsUI Then
        s$ = Join(Array("1ПИ-" & [B2] & "_" & Format([B3], "YYYY_MM_DD") & "_" & Replace([B4], "/", "~")), "") & "_" & Replace([B5], "/", "~") & "_" & Replace([B6], "/", "~")
        Cancel = True
        With Application.FileDialog(msoFileDialogSaveAs)
            .InitialFileName = s
            If .Show Then .Execute
        End With
    End If
End Sub
 
Такой же вариант, что в #15, но с обработкой ошибок:

Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If SaveAsUI Then
        With Application.FileDialog(msoFileDialogSaveAs)
            .InitialFileName = Join(Array("ПИ-" & [B2] & "_" & Format([B3], "YYYY_MM_DD") & "_" & Replace([B4], "/", "~")), "") & "_" & Replace([B5], "/", "~") & "_" & Replace([B6], "/", "~")
            .FilterIndex = 2  ' тип: Книга Excel c поддержкой макросов
            If .Show = -1 Then
                Application.EnableEvents = False
                On Error Resume Next
                .Execute
                On Error GoTo 0
                Application.EnableEvents = True
            End If
        End With
        Cancel = True
    End If
End Sub
Владимир
 
sokol92, RAN, и всем кто участвовал в вопросе огромное спасибо! Все заработало, Ура!!! Всем удачи! :D  
Страницы: 1
Наверх