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

Вход

Регистрация

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

 

= Мир MS Excel/Сохранение в виде шаблона Excel 03-07 - не подхватывает путь - Страница 2 - Мир MS Excel

  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_, DrMini  
Сохранение в виде шаблона Excel 03-07 - не подхватывает путь
Stork4ever Дата: Среда, 02.12.2015, 10:20 | Сообщение № 21
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Скорее всего это тоже не поможет. Насколько я понял это получениие информации о недавно/часто используемых файлах. В моем случае файлов много и весма вероятно использование редких и старых файлов.

Все-таки прошу рассмотреть мой файл-пример в посте №17.
 
Ответить
СообщениеСкорее всего это тоже не поможет. Насколько я понял это получениие информации о недавно/часто используемых файлах. В моем случае файлов много и весма вероятно использование редких и старых файлов.

Все-таки прошу рассмотреть мой файл-пример в посте №17.

Автор - Stork4ever
Дата добавления - 02.12.2015 в 10:20
Manyasha Дата: Среда, 02.12.2015, 11:14 | Сообщение № 22
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
Stork4ever, посмотрите такой вариант:
[vba]
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Application.EnableEvents = False
    BaseName = CreateObject("Scripting.FileSystemObject").GetBaseName(ThisWorkbook.FullName)
    newName = InputBox("Введите имя", "Сохранение файла", BaseName)
    Debug.Print ThisWorkbook.Sheets(1).[a1]
    If newName <> "" Then ThisWorkbook.SaveAs ThisWorkbook.Sheets(1).[a1] & "\" & newName & ".xlt", xlTemplate8
    Cancel = True
    Application.EnableEvents = True
End Sub
[/vba]
К сообщению приложен файл: 123.xlt (33.0 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеStork4ever, посмотрите такой вариант:
[vba]
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Application.EnableEvents = False
    BaseName = CreateObject("Scripting.FileSystemObject").GetBaseName(ThisWorkbook.FullName)
    newName = InputBox("Введите имя", "Сохранение файла", BaseName)
    Debug.Print ThisWorkbook.Sheets(1).[a1]
    If newName <> "" Then ThisWorkbook.SaveAs ThisWorkbook.Sheets(1).[a1] & "\" & newName & ".xlt", xlTemplate8
    Cancel = True
    Application.EnableEvents = True
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 02.12.2015 в 11:14
Stork4ever Дата: Среда, 02.12.2015, 11:33 | Сообщение № 23
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо, за предложенный вариант.

С чем сталкнулся:
1. Первое сохранение - и сразу ошибка END/DEBUG связанная с отстутствующей папкой по пути прописанному в Excel. Путь поправил. Ошибка исчезла. Вероятность повторения мала, но пользователя это может напугать.
2. Данное решение позволяет ввести имя файла взяв за основу текущее название файла +1, но не дает возможность сохранить файл в любую другую папку, поскольку принудительно сохраняет именно в текущую!

Неужели при нажатии на "Сохранить как" нельзя открыть прописанную в ячейке папку в качестве предлагаемого по умолчанию места для сохранения? Можно ли для открытого файла назначить пользовательстую папку для сохранения из ячейки и дать возможность изменить название файла, как при обычном "Сохранить как"?

Типа:
Код
ThisWorkbook.Path = Sheets("Лист1").Cells(1, 1)


Или что-нибудь подобное...

Да вот еще что... Может отказаться от сохранения в xlt? Может сохранять в файл xls, но который будет защищен от изменения (например ReadOnly) тогда при редактировании Excel будет подхватывать изначально ThisWorkbook.Path и при попытке сохранения предлагать сохраниться в ту же папку но с другим именем? Мне нужно, что бы пока файл открыть его можно было сохранять сколь угодно раз, но как только его закрыл он был защищен от изменений. Для изменений он берется за основу, правиться и сохраняется, как новый исправленный файл, который также должен быть защищен от повторных изменений.


Сообщение отредактировал Stork4ever - Среда, 02.12.2015, 11:44
 
Ответить
СообщениеСпасибо, за предложенный вариант.

С чем сталкнулся:
1. Первое сохранение - и сразу ошибка END/DEBUG связанная с отстутствующей папкой по пути прописанному в Excel. Путь поправил. Ошибка исчезла. Вероятность повторения мала, но пользователя это может напугать.
2. Данное решение позволяет ввести имя файла взяв за основу текущее название файла +1, но не дает возможность сохранить файл в любую другую папку, поскольку принудительно сохраняет именно в текущую!

Неужели при нажатии на "Сохранить как" нельзя открыть прописанную в ячейке папку в качестве предлагаемого по умолчанию места для сохранения? Можно ли для открытого файла назначить пользовательстую папку для сохранения из ячейки и дать возможность изменить название файла, как при обычном "Сохранить как"?

Типа:
Код
ThisWorkbook.Path = Sheets("Лист1").Cells(1, 1)


Или что-нибудь подобное...

Да вот еще что... Может отказаться от сохранения в xlt? Может сохранять в файл xls, но который будет защищен от изменения (например ReadOnly) тогда при редактировании Excel будет подхватывать изначально ThisWorkbook.Path и при попытке сохранения предлагать сохраниться в ту же папку но с другим именем? Мне нужно, что бы пока файл открыть его можно было сохранять сколь угодно раз, но как только его закрыл он был защищен от изменений. Для изменений он берется за основу, правиться и сохраняется, как новый исправленный файл, который также должен быть защищен от повторных изменений.

Автор - Stork4ever
Дата добавления - 02.12.2015 в 11:33
Manyasha Дата: Среда, 02.12.2015, 12:19 | Сообщение № 24
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
а так?
[vba]
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Application.EnableEvents = False: Application.DisplayAlerts = False
    Dim NewName
    Dim oFSO As Object
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    path_ = ThisWorkbook.Sheets(1).Cells(1, 1)
    If oFSO.FolderExists(path_) = False Then path_ = ThisWorkbook.Path
    NewName = Application.GetSaveAsFilename(path_, "Excel file,*.xlt")
    If NewName = "False" Then Exit Sub
    ThisWorkbook.SaveAs NewName, xlTemplate8
    Cancel = True
    Application.EnableEvents = True: Application.DisplayAlerts = True
End Sub
[/vba]
[vba]
Код
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
    ThisWorkbook.Sheets(1).Cells(1, 1) = ThisWorkbook.Path
    Application.EnableEvents = False: Application.DisplayAlerts = False
    ThisWorkbook.Save
    Application.EnableEvents = True: Application.DisplayAlerts = True
End Sub
[/vba]
К сообщению приложен файл: 9499242.xlt (35.0 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеа так?
[vba]
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Application.EnableEvents = False: Application.DisplayAlerts = False
    Dim NewName
    Dim oFSO As Object
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    path_ = ThisWorkbook.Sheets(1).Cells(1, 1)
    If oFSO.FolderExists(path_) = False Then path_ = ThisWorkbook.Path
    NewName = Application.GetSaveAsFilename(path_, "Excel file,*.xlt")
    If NewName = "False" Then Exit Sub
    ThisWorkbook.SaveAs NewName, xlTemplate8
    Cancel = True
    Application.EnableEvents = True: Application.DisplayAlerts = True
End Sub
[/vba]
[vba]
Код
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
    ThisWorkbook.Sheets(1).Cells(1, 1) = ThisWorkbook.Path
    Application.EnableEvents = False: Application.DisplayAlerts = False
    ThisWorkbook.Save
    Application.EnableEvents = True: Application.DisplayAlerts = True
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 02.12.2015 в 12:19
Gustav Дата: Среда, 02.12.2015, 12:25 | Сообщение № 25
Группа: Админы
Ранг: Участник клуба
Сообщений: 2877
Репутация: 1217 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Неужели при нажатии на "Сохранить как" нельзя открыть прописанную в ячейке папку в качестве предлагаемого по умолчанию места для сохранения?

А если так попробовать:
[vba]
Код
Application.DefaultFilePath = прописанная в ячейке папка
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Неужели при нажатии на "Сохранить как" нельзя открыть прописанную в ячейке папку в качестве предлагаемого по умолчанию места для сохранения?

А если так попробовать:
[vba]
Код
Application.DefaultFilePath = прописанная в ячейке папка
[/vba]

Автор - Gustav
Дата добавления - 02.12.2015 в 12:25
Stork4ever Дата: Среда, 02.12.2015, 13:04 | Сообщение № 26
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
а так?


Теплее. Но...

1. Кажде сохранение предлагает "Сохранить как", т.е. не возможно сделать промежуточное сохранение файла в процессе работы.
2. Не подставляется имя файла.
3. При сохранении выскакивает ошибка Microsoft Excel "Будьте внимательны! В документе могут быть персональные данные, которые невозможно удалить с помощью инспектора документов.
4. При сохранении в другую папку значение ячейки A1 не изменяется на значение папки в которое происходит сохранение.
 
Ответить
Сообщение
а так?


Теплее. Но...

1. Кажде сохранение предлагает "Сохранить как", т.е. не возможно сделать промежуточное сохранение файла в процессе работы.
2. Не подставляется имя файла.
3. При сохранении выскакивает ошибка Microsoft Excel "Будьте внимательны! В документе могут быть персональные данные, которые невозможно удалить с помощью инспектора документов.
4. При сохранении в другую папку значение ячейки A1 не изменяется на значение папки в которое происходит сохранение.

Автор - Stork4ever
Дата добавления - 02.12.2015 в 13:04
Stork4ever Дата: Среда, 02.12.2015, 13:23 | Сообщение № 27
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Application.DefaultFilePath = прописанная в ячейке папка


Если прописать Application.DefaultFilePath =Sheets("Лист1").Cells(1, 1) , то он становиться равным значению ячейки, но путь сохранения по умолчанию и ThisWorkbook.Path ="" :(
 
Ответить
Сообщение
Application.DefaultFilePath = прописанная в ячейке папка


Если прописать Application.DefaultFilePath =Sheets("Лист1").Cells(1, 1) , то он становиться равным значению ячейки, но путь сохранения по умолчанию и ThisWorkbook.Path ="" :(

Автор - Stork4ever
Дата добавления - 02.12.2015 в 13:23
Gustav Дата: Среда, 02.12.2015, 13:28 | Сообщение № 28
Группа: Админы
Ранг: Участник клуба
Сообщений: 2877
Репутация: 1217 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Если прописать Application.DefaultFilePath =Sheets("Лист1").Cells(1, 1) , то он становиться равным значению ячейки

Ну, так если после этого выполнить "Сохранить как", то и откроется эта папка. Разве не это надо?


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Если прописать Application.DefaultFilePath =Sheets("Лист1").Cells(1, 1) , то он становиться равным значению ячейки

Ну, так если после этого выполнить "Сохранить как", то и откроется эта папка. Разве не это надо?

Автор - Gustav
Дата добавления - 02.12.2015 в 13:28
Stork4ever Дата: Среда, 02.12.2015, 13:46 | Сообщение № 29
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Gustav - Гениально!!!

Сейчас буду пробовать... уже столько вариантов и тестов, что не понятно куда подставлять...
 
Ответить
СообщениеGustav - Гениально!!!

Сейчас буду пробовать... уже столько вариантов и тестов, что не понятно куда подставлять...

Автор - Stork4ever
Дата добавления - 02.12.2015 в 13:46
Stork4ever Дата: Среда, 02.12.2015, 14:31 | Сообщение № 30
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Все замечательно работает, только вот надо теперь разобраться, как восстанавливать исходное значение Application.DefaultFilePath после закрытия файла, иначе этот параметр остается в настройках Excel, что не актуально для работы с другими файлами.
 
Ответить
СообщениеВсе замечательно работает, только вот надо теперь разобраться, как восстанавливать исходное значение Application.DefaultFilePath после закрытия файла, иначе этот параметр остается в настройках Excel, что не актуально для работы с другими файлами.

Автор - Stork4ever
Дата добавления - 02.12.2015 в 14:31
Stork4ever Дата: Среда, 02.12.2015, 17:48 | Сообщение № 31
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Пожалуйста посмотрите еще раз файлик. Что опять не так? Вроде бы в какой-то момент начал выводить правильно путь, а теперь опять не выводит :(
К сообщению приложен файл: Test.xlt (41.0 Kb)
 
Ответить
СообщениеПожалуйста посмотрите еще раз файлик. Что опять не так? Вроде бы в какой-то момент начал выводить правильно путь, а теперь опять не выводит :(

Автор - Stork4ever
Дата добавления - 02.12.2015 в 17:48
RAN Дата: Среда, 02.12.2015, 18:43 | Сообщение № 32
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim sPath$, fName$
    sPath = shPath.Cells(1, 1) & ThisWorkbook.Name
    If Len(Dir(sPath)) And SaveAsUI = False Then
        Application.EnableEvents = False
        Me.Save
        Application.EnableEvents = True
    Else
        fName = Application.GetSaveAsFilename(sPath, "Excel file,*.xlt")
        If fName <> "False" Then
            shPath.Cells(1, 1) = Left$(fName, InStrRev(fName, ThisWorkbook.Name) - 1)
            Cancel = True
            Application.EnableEvents = False
            Application.DisplayAlerts = False
            Me.SaveAs fName, xlTemplate8
            Application.DisplayAlerts = True
            Application.EnableEvents = True
        Else
            Cancel = True
        End If
    End If
End Sub
[/vba]
При первом сохранении - путь по умолчанию.
К сообщению приложен файл: 111111.xlt (27.5 Kb)


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Среда, 02.12.2015, 18:47
 
Ответить
Сообщение[vba]
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim sPath$, fName$
    sPath = shPath.Cells(1, 1) & ThisWorkbook.Name
    If Len(Dir(sPath)) And SaveAsUI = False Then
        Application.EnableEvents = False
        Me.Save
        Application.EnableEvents = True
    Else
        fName = Application.GetSaveAsFilename(sPath, "Excel file,*.xlt")
        If fName <> "False" Then
            shPath.Cells(1, 1) = Left$(fName, InStrRev(fName, ThisWorkbook.Name) - 1)
            Cancel = True
            Application.EnableEvents = False
            Application.DisplayAlerts = False
            Me.SaveAs fName, xlTemplate8
            Application.DisplayAlerts = True
            Application.EnableEvents = True
        Else
            Cancel = True
        End If
    End If
End Sub
[/vba]
При первом сохранении - путь по умолчанию.

Автор - RAN
Дата добавления - 02.12.2015 в 18:43
Stork4ever Дата: Среда, 02.12.2015, 19:32 | Сообщение № 33
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
RAN - огромное СПАСИБО!!!

Перенес скрипт к себе в файл... Один вопрос. Если я открываю созданный шаблон, редактирую и хочу сохраниться, то мне предлагают, как и положенно сохраниться в новый файл. Тут все четко!. Но если не закрывая файл я продалжаю редактирование и хочу сделать промежуточное сохранение выскакивает предупреждение Microsoft Excel:

Книга содержит внешние данные. Следует ли приложению Microsoft Excel очистить данные перед сохранением, а затем обновить их при открытии шаблона?

Да /Нет /Отмена

Можно этого как-нибудь избежать?


Сообщение отредактировал Stork4ever - Среда, 02.12.2015, 19:36
 
Ответить
СообщениеRAN - огромное СПАСИБО!!!

Перенес скрипт к себе в файл... Один вопрос. Если я открываю созданный шаблон, редактирую и хочу сохраниться, то мне предлагают, как и положенно сохраниться в новый файл. Тут все четко!. Но если не закрывая файл я продалжаю редактирование и хочу сделать промежуточное сохранение выскакивает предупреждение Microsoft Excel:

Книга содержит внешние данные. Следует ли приложению Microsoft Excel очистить данные перед сохранением, а затем обновить их при открытии шаблона?

Да /Нет /Отмена

Можно этого как-нибудь избежать?

Автор - Stork4ever
Дата добавления - 02.12.2015 в 19:32
RAN Дата: Среда, 02.12.2015, 19:40 | Сообщение № 34
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Впихните
[vba]
Код
Application.DisplayAlerts
[/vba]
в первый блок.
Вдруг?


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВпихните
[vba]
Код
Application.DisplayAlerts
[/vba]
в первый блок.
Вдруг?

Автор - RAN
Дата добавления - 02.12.2015 в 19:40
Stork4ever Дата: Среда, 02.12.2015, 19:48 | Сообщение № 35
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Не помогло.
 
Ответить
СообщениеНе помогло.

Автор - Stork4ever
Дата добавления - 02.12.2015 в 19:48
RAN Дата: Среда, 02.12.2015, 20:23 | Сообщение № 36
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Не насилуйте шаблон.
А если насилуете, то не удивляйтесь воплям.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНе насилуйте шаблон.
А если насилуете, то не удивляйтесь воплям.

Автор - RAN
Дата добавления - 02.12.2015 в 20:23
Stork4ever Дата: Четверг, 03.12.2015, 11:09 | Сообщение № 37
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Тем не менее, хотелось бы разобраться что вызывает такой вопрос и можно ли по умолчанию на него утвечать утвердительно не напрягая пользователей лишними вопросами.

А Вам, Андрей, еще один "+" в копилку за хороший и рабочий вариант ;) Спасибо!
 
Ответить
СообщениеТем не менее, хотелось бы разобраться что вызывает такой вопрос и можно ли по умолчанию на него утвечать утвердительно не напрягая пользователей лишними вопросами.

А Вам, Андрей, еще один "+" в копилку за хороший и рабочий вариант ;) Спасибо!

Автор - Stork4ever
Дата добавления - 03.12.2015 в 11:09
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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