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

Вход

Регистрация

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

 

= Мир MS Excel/Диалоговое окно для изменения адреса пути в процедуре Privat - Мир MS Excel

  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_, DrMini  
Диалоговое окно для изменения адреса пути в процедуре Privat
den45444 Дата: Четверг, 24.09.2015, 11:04 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Есть такой код: [vba]
Код
Private Const papka As String = "C:\ШАБЛОНЫ"
[/vba]
Этот код указывает постоянное местоположение папки ШАБЛОНЫ для всех процедур модуля.

Как создать макрос, чтобы можно было вызвать диалоговое окно для указания местоположения папки и при этом желательно, чтобы автоматический изменился путь в строке [vba]
Код
Private Const papka As String = "C:\ШАБЛОНЫ"
[/vba]

Это нужно, чтобы каждый пользователь мог один раз указать путь, где лежит его папка ШАБЛОНЫ.

Прошу помощи разобраться.
 
Ответить
СообщениеЕсть такой код: [vba]
Код
Private Const papka As String = "C:\ШАБЛОНЫ"
[/vba]
Этот код указывает постоянное местоположение папки ШАБЛОНЫ для всех процедур модуля.

Как создать макрос, чтобы можно было вызвать диалоговое окно для указания местоположения папки и при этом желательно, чтобы автоматический изменился путь в строке [vba]
Код
Private Const papka As String = "C:\ШАБЛОНЫ"
[/vba]

Это нужно, чтобы каждый пользователь мог один раз указать путь, где лежит его папка ШАБЛОНЫ.

Прошу помощи разобраться.

Автор - den45444
Дата добавления - 24.09.2015 в 11:04
SLAVICK Дата: Четверг, 24.09.2015, 11:46 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Как создать макрос, чтобы можно было вызвать диалоговое окно для указания местоположения папки

см здесь статья
чтобы автоматический изменился путь в строке

Если для каждого пользователя - свой путь - я бы в файле отвел для его указания одну ячейку - в которой после выбора папки пропишется этот путь например
[vba]
Код
sheets(1).[a1] = "C:\ШАБЛОНЫ"
[/vba]


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
Как создать макрос, чтобы можно было вызвать диалоговое окно для указания местоположения папки

см здесь статья
чтобы автоматический изменился путь в строке

Если для каждого пользователя - свой путь - я бы в файле отвел для его указания одну ячейку - в которой после выбора папки пропишется этот путь например
[vba]
Код
sheets(1).[a1] = "C:\ШАБЛОНЫ"
[/vba]

Автор - SLAVICK
Дата добавления - 24.09.2015 в 11:46
KSV Дата: Четверг, 24.09.2015, 11:55 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
как вариант: [vba]
Код
Public papka As String

Sub GetPath()
     If Len(papka) Then Exit Sub ' выходим, если путь к папке ШАБЛОНЫ нам уже известен (даже в реестр не лезем)
     papka = GetSetting("Проект Договоры", "Настройки", "Путь к шаблонам") ' иначе - ищем путь в реестре
     If Len(papka) Then Exit Sub ' если нашли в реестре - выходим
     ' если не нашли - просим пользователя показать эту папку
     Dim oShell  As Object, oFolder As Object
     Set oShell = CreateObject("Shell.Application")
     Set oFolder = oShell.BrowseForFolder(0, "Укажите расположение папки ШАБЛОНЫ", 0)
     If oFolder Is Nothing Then Exit Sub ' пользователь передумал показывать папку
     papka = oFolder.Self.Path ' пользователь показал нам путь к папке ШАБЛОНЫ
     SaveSetting "Проект Договоры", "Настройки", "Путь к шаблонам", papka ' сохраняем его в реестре
End Sub
[/vba] обратите внимание на третью строчку снизу - это "узкое" место. Что нужно делать в случае, если пользователь отказался показывать папку?
К сообщению приложен файл: GetPath.xlsm (12.5 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщениекак вариант: [vba]
Код
Public papka As String

Sub GetPath()
     If Len(papka) Then Exit Sub ' выходим, если путь к папке ШАБЛОНЫ нам уже известен (даже в реестр не лезем)
     papka = GetSetting("Проект Договоры", "Настройки", "Путь к шаблонам") ' иначе - ищем путь в реестре
     If Len(papka) Then Exit Sub ' если нашли в реестре - выходим
     ' если не нашли - просим пользователя показать эту папку
     Dim oShell  As Object, oFolder As Object
     Set oShell = CreateObject("Shell.Application")
     Set oFolder = oShell.BrowseForFolder(0, "Укажите расположение папки ШАБЛОНЫ", 0)
     If oFolder Is Nothing Then Exit Sub ' пользователь передумал показывать папку
     papka = oFolder.Self.Path ' пользователь показал нам путь к папке ШАБЛОНЫ
     SaveSetting "Проект Договоры", "Настройки", "Путь к шаблонам", papka ' сохраняем его в реестре
End Sub
[/vba] обратите внимание на третью строчку снизу - это "узкое" место. Что нужно делать в случае, если пользователь отказался показывать папку?

Автор - KSV
Дата добавления - 24.09.2015 в 11:55
den45444 Дата: Четверг, 24.09.2015, 12:26 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
KSV, Благодарю за помощь.

Что нужно делать в случае, если пользователь отказался показывать папку?

Если пользователь отказался, то прервать процедуру и выйти из нее без ошибок.

Получается в каждой макросе нужно указывать такой код, на случай если нет такой папки [vba]
Код
If Dir(papka, 16) = "" Then MsgBox "Укажите местоположение папки ШАБЛОНЫ", vbCritical, "Ошибка": Exit Sub
[/vba]
 
Ответить
СообщениеKSV, Благодарю за помощь.

Что нужно делать в случае, если пользователь отказался показывать папку?

Если пользователь отказался, то прервать процедуру и выйти из нее без ошибок.

Получается в каждой макросе нужно указывать такой код, на случай если нет такой папки [vba]
Код
If Dir(papka, 16) = "" Then MsgBox "Укажите местоположение папки ШАБЛОНЫ", vbCritical, "Ошибка": Exit Sub
[/vba]

Автор - den45444
Дата добавления - 24.09.2015 в 12:26
KSV Дата: Четверг, 24.09.2015, 12:53 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Получается в каждой макросе нужно указывать такой код
Нет. Я предлагал вам совершенно другую логику. Вместо того, чтобы проверять наличие папки при вызове каждой процедуры, я предлагал ОДИН раз (при открытии книги) проверить путь (и можно дописать еще проверку наличия этой папки), а потом, везде где нужно, просто использовать этот путь из глобальной переменной papka
[p.s.]Или вы хотите "застраховаться" от того, что пока пользователь вводит данные клиента, кто-то может переместить папку с шаблонами в другое место? (я полагал, что эта папка не перемещается никогда, просто у каждого пользователя она находится в своем (удобном для него) месте.
[/p.s.]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
Получается в каждой макросе нужно указывать такой код
Нет. Я предлагал вам совершенно другую логику. Вместо того, чтобы проверять наличие папки при вызове каждой процедуры, я предлагал ОДИН раз (при открытии книги) проверить путь (и можно дописать еще проверку наличия этой папки), а потом, везде где нужно, просто использовать этот путь из глобальной переменной papka
[p.s.]Или вы хотите "застраховаться" от того, что пока пользователь вводит данные клиента, кто-то может переместить папку с шаблонами в другое место? (я полагал, что эта папка не перемещается никогда, просто у каждого пользователя она находится в своем (удобном для него) месте.
[/p.s.]

Автор - KSV
Дата добавления - 24.09.2015 в 12:53
SLAVICK Дата: Четверг, 24.09.2015, 12:55 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Получается в каждой макросе нужно указывать такой код, на случай если нет такой папки

Да и следует учесть, что при глобальная переменная не запоминается если файл закрыть - а потом открыть. Т.е. если один файл пользователь открывает по несколько раз в день - ему придется каждый раз указывать это местоположение.
Тоже произойдет если макрос будет завершен с ошибкой.
Поэтому я предложил использовать ячейку - значение в которой, если один раз прописать - останется. ;)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
Получается в каждой макросе нужно указывать такой код, на случай если нет такой папки

Да и следует учесть, что при глобальная переменная не запоминается если файл закрыть - а потом открыть. Т.е. если один файл пользователь открывает по несколько раз в день - ему придется каждый раз указывать это местоположение.
Тоже произойдет если макрос будет завершен с ошибкой.
Поэтому я предложил использовать ячейку - значение в которой, если один раз прописать - останется. ;)

Автор - SLAVICK
Дата добавления - 24.09.2015 в 12:55
den45444 Дата: Четверг, 24.09.2015, 12:57 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Вместо того, чтобы проверять наличие папки при вызове каждой процедуры, я предлагал ОДИН раз (при открытии книги) проверить путь (и можно дописать еще проверку наличия этой папки), а потом, везде где нужно, просто использовать этот путь из глобальной переменной papka

Да, именно так и нужно.
И как же это правильно указать?
 
Ответить
Сообщение
Вместо того, чтобы проверять наличие папки при вызове каждой процедуры, я предлагал ОДИН раз (при открытии книги) проверить путь (и можно дописать еще проверку наличия этой папки), а потом, везде где нужно, просто использовать этот путь из глобальной переменной papka

Да, именно так и нужно.
И как же это правильно указать?

Автор - den45444
Дата добавления - 24.09.2015 в 12:57
den45444 Дата: Четверг, 24.09.2015, 13:02 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Да и следует учесть, что при глобальная переменная не запоминается если файл закрыть - а потом открыть. Т.е. если один файл пользователь открывает по несколько раз в день - ему придется каждый раз указывать это местоположение.
Тоже произойдет если макрос будет завершен с ошибкой.


Проверил - запоминается. Открыл - указал папку - сохранил - вышел - Открыл снова - проверил - работает.
 
Ответить
Сообщение
Да и следует учесть, что при глобальная переменная не запоминается если файл закрыть - а потом открыть. Т.е. если один файл пользователь открывает по несколько раз в день - ему придется каждый раз указывать это местоположение.
Тоже произойдет если макрос будет завершен с ошибкой.


Проверил - запоминается. Открыл - указал папку - сохранил - вышел - Открыл снова - проверил - работает.

Автор - den45444
Дата добавления - 24.09.2015 в 13:02
SLAVICK Дата: Четверг, 24.09.2015, 13:33 | Сообщение № 9
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Проверил - запоминается

Сама переменная не запоминается - KSV добавил процедуру считывания и записи в реестр и перезапись этой переменной при открытии книги thumb
Интересный прием - но суть та же.
См вложенный файл.
Я убрал процедуру перезаписи при открытии книги - и добавил макрос с ошибкой.
И макрос Тест - для проверки переменной.
Попробуйте сами.
Метод KSV хорош hands , но нужно уметь им пользоваться - и запись в реестр наверное не всегда нужна. Тут на любителя. ^_^
См. реестр:
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Проект Договоры\Настройки
К сообщению приложен файл: 1590476.xlsm (18.7 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Четверг, 24.09.2015, 13:44
 
Ответить
Сообщение
Проверил - запоминается

Сама переменная не запоминается - KSV добавил процедуру считывания и записи в реестр и перезапись этой переменной при открытии книги thumb
Интересный прием - но суть та же.
См вложенный файл.
Я убрал процедуру перезаписи при открытии книги - и добавил макрос с ошибкой.
И макрос Тест - для проверки переменной.
Попробуйте сами.
Метод KSV хорош hands , но нужно уметь им пользоваться - и запись в реестр наверное не всегда нужна. Тут на любителя. ^_^
См. реестр:
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Проект Договоры\Настройки

Автор - SLAVICK
Дата добавления - 24.09.2015 в 13:33
den45444 Дата: Четверг, 24.09.2015, 13:43 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
SLAVICK, ваш смысл не понял. что конкретно вы поменяли и как его применить тоже не понял.
 
Ответить
СообщениеSLAVICK, ваш смысл не понял. что конкретно вы поменяли и как его применить тоже не понял.

Автор - den45444
Дата добавления - 24.09.2015 в 13:43
KSV Дата: Четверг, 24.09.2015, 14:09 | Сообщение № 11
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
И как же это правильно указать?
например, так: [vba]
Код
Function IsPathNotExists() As Boolean
     Dim n&, oShell As Object, oFolder As Object
     Set oShell = CreateObject("Shell.Application")
     papka = GetSetting("Проект Договоры", "Настройки", "Путь к шаблонам") ' ищем путь в реестре
     Do
         n = Len(papka)
         If n Then n = Len(Dir$(papka, vbDirectory)) ' проверяем существование папки (здесь же можно проверять и наличие файлов шаблонов на случай, если пользователь указал какую-то другую папку)
         If n Then Exit Function ' выходим, если папка существует
         Set oFolder = oShell.BrowseForFolder(0, "Укажите расположение папки ШАБЛОНЫ", 0) ' если путь не указан или указанный ранее путь не существует (папка была перемещена), просим пользователя показать папку с шаблонами
         If oFolder Is Nothing Then ' если пользователь передумал показывать
             If MsgBox("Вы не указали папку с шаблонами." & vbCr & vbCr & "Завершить работу с файлом?", vbExclamation Or vbYesNo, "Не указан путь к шаблонам") = vbYes Then IsPathNotExists = True: Exit Function
         Else
             papka = oFolder.Self.Path ' пользователь показал путь к папке ШАБЛОНЫ
             SaveSetting "Проект Договоры", "Настройки", "Путь к шаблонам", papka ' сохраняем путь к папке ШАБЛОНЫ в реестре
             Exit Function
         End If
     Loop
End Function
[/vba] (правда, не оптимизировал)
и [vba]
Код
Private Sub Workbook_Open()
     If IsPathNotExists Then Me.Close False
End Sub
[/vba]
К сообщению приложен файл: 5439554.xlsm (24.8 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
И как же это правильно указать?
например, так: [vba]
Код
Function IsPathNotExists() As Boolean
     Dim n&, oShell As Object, oFolder As Object
     Set oShell = CreateObject("Shell.Application")
     papka = GetSetting("Проект Договоры", "Настройки", "Путь к шаблонам") ' ищем путь в реестре
     Do
         n = Len(papka)
         If n Then n = Len(Dir$(papka, vbDirectory)) ' проверяем существование папки (здесь же можно проверять и наличие файлов шаблонов на случай, если пользователь указал какую-то другую папку)
         If n Then Exit Function ' выходим, если папка существует
         Set oFolder = oShell.BrowseForFolder(0, "Укажите расположение папки ШАБЛОНЫ", 0) ' если путь не указан или указанный ранее путь не существует (папка была перемещена), просим пользователя показать папку с шаблонами
         If oFolder Is Nothing Then ' если пользователь передумал показывать
             If MsgBox("Вы не указали папку с шаблонами." & vbCr & vbCr & "Завершить работу с файлом?", vbExclamation Or vbYesNo, "Не указан путь к шаблонам") = vbYes Then IsPathNotExists = True: Exit Function
         Else
             papka = oFolder.Self.Path ' пользователь показал путь к папке ШАБЛОНЫ
             SaveSetting "Проект Договоры", "Настройки", "Путь к шаблонам", papka ' сохраняем путь к папке ШАБЛОНЫ в реестре
             Exit Function
         End If
     Loop
End Function
[/vba] (правда, не оптимизировал)
и [vba]
Код
Private Sub Workbook_Open()
     If IsPathNotExists Then Me.Close False
End Sub
[/vba]

Автор - KSV
Дата добавления - 24.09.2015 в 14:09
KSV Дата: Четверг, 24.09.2015, 14:19 | Сообщение № 12
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

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


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
и запись в реестр наверное не всегда нужна
согласен, но в данном случае, путь "привязан" к компу, а не к книге (например, книгу могут кинуть на другой комп), поэтому посчитал, что путь нужно хранить на компе. (к тому же, в этой папке можно хранить и другие шаблоны/файлы, и использовать этот ключ реестра в других макросах (в других книгах)

Автор - KSV
Дата добавления - 24.09.2015 в 14:19
SLAVICK Дата: Четверг, 24.09.2015, 14:20 | Сообщение № 13
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Я ничего не менял в процедуре выбора папки - я просто показал, что сама по себе переменная не запоминается.
KSV добавил процедуру считывания и записи в реестр и перезапись этой переменной при открытии книги

Т.е. если в Ваш файл Вы не добавите такую проверку при открытии книги, то сама переменная будет пустой, пока Вы не считаете это значения с реестра:
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Проект Договоры\Настройки

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

я предлагал считывать данные из ячейки напрямую
См вложение добавил процедуру записи папки
К сообщению приложен файл: 1590476-1-.xlsm (20.6 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеЯ ничего не менял в процедуре выбора папки - я просто показал, что сама по себе переменная не запоминается.
KSV добавил процедуру считывания и записи в реестр и перезапись этой переменной при открытии книги

Т.е. если в Ваш файл Вы не добавите такую проверку при открытии книги, то сама переменная будет пустой, пока Вы не считаете это значения с реестра:
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Проект Договоры\Настройки

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

я предлагал считывать данные из ячейки напрямую
См вложение добавил процедуру записи папки

Автор - SLAVICK
Дата добавления - 24.09.2015 в 14:20
SLAVICK Дата: Четверг, 24.09.2015, 14:29 | Сообщение № 14
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
путь "привязан" к компу, а не к книге (например, книгу могут кинуть на другой комп),

Согласен. Тут все зависит от того для чего этот файл используют и как долго, и кто бросает эту книгу всем. Выбирать ТС :D
Просто я не сторонник забрасывать в реестр всякую инфу. Тут и на ограничения админов можно нарваться. %)
В своей практике у меня менеджерам скидывают всегда обнуленную книгу. Т.е. без выбора пути. :)
Правда по умолчанию я всегда прописываю проверку в подпапке рядом с активной книгой - 99% именно туда ложат вспомогательные файлы yes


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Четверг, 24.09.2015, 14:35
 
Ответить
Сообщение
путь "привязан" к компу, а не к книге (например, книгу могут кинуть на другой комп),

Согласен. Тут все зависит от того для чего этот файл используют и как долго, и кто бросает эту книгу всем. Выбирать ТС :D
Просто я не сторонник забрасывать в реестр всякую инфу. Тут и на ограничения админов можно нарваться. %)
В своей практике у меня менеджерам скидывают всегда обнуленную книгу. Т.е. без выбора пути. :)
Правда по умолчанию я всегда прописываю проверку в подпапке рядом с активной книгой - 99% именно туда ложат вспомогательные файлы yes

Автор - SLAVICK
Дата добавления - 24.09.2015 в 14:29
den45444 Дата: Четверг, 24.09.2015, 14:34 | Сообщение № 15
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
согласен, но в данном случае, путь "привязан" к компу, а не к книге (например, книгу могут кинуть на другой комп), поэтому посчитал, что путь нужно хранить на компе. (к тому же, в этой папке можно хранить и другие шаблоны/файлы, и использовать этот ключ реестра в других макросах (в других книгах)


Да - именно для разных компов нужно.
А можно ли чтобы это было именно в модуле, а не в книге?
Я делаю это все для надстройки и получается при открытии любого файла у меня срабатывает данная процедура.
 
Ответить
Сообщение
согласен, но в данном случае, путь "привязан" к компу, а не к книге (например, книгу могут кинуть на другой комп), поэтому посчитал, что путь нужно хранить на компе. (к тому же, в этой папке можно хранить и другие шаблоны/файлы, и использовать этот ключ реестра в других макросах (в других книгах)


Да - именно для разных компов нужно.
А можно ли чтобы это было именно в модуле, а не в книге?
Я делаю это все для надстройки и получается при открытии любого файла у меня срабатывает данная процедура.

Автор - den45444
Дата добавления - 24.09.2015 в 14:34
SLAVICK Дата: Четверг, 24.09.2015, 14:41 | Сообщение № 16
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
А как часто Вы обновляете эту надстройку? Т.е. как часто скидываете новые версии?


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеА как часто Вы обновляете эту надстройку? Т.е. как часто скидываете новые версии?

Автор - SLAVICK
Дата добавления - 24.09.2015 в 14:41
den45444 Дата: Четверг, 24.09.2015, 14:41 | Сообщение № 17
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
В своей практике у меня менеджерам скидывают всегда обнуленную книгу. Т.е. без выбора пути.


А как можно так устроить?
У нас смысл такой. Есть папка ШАБЛОНЫ и в ней находятся файлы для формирования документов.
Всем скидываем файл для надстройки и папку ШАБЛОНЫ.
Пользователи устанавливают надстройки и должны указать папку ШАБЛОНЫ, чтобы данные надстройки работали верно.

Есть еще какие-либо упрощенные варианты действий?
 
Ответить
Сообщение
В своей практике у меня менеджерам скидывают всегда обнуленную книгу. Т.е. без выбора пути.


А как можно так устроить?
У нас смысл такой. Есть папка ШАБЛОНЫ и в ней находятся файлы для формирования документов.
Всем скидываем файл для надстройки и папку ШАБЛОНЫ.
Пользователи устанавливают надстройки и должны указать папку ШАБЛОНЫ, чтобы данные надстройки работали верно.

Есть еще какие-либо упрощенные варианты действий?

Автор - den45444
Дата добавления - 24.09.2015 в 14:41
den45444 Дата: Четверг, 24.09.2015, 14:44 | Сообщение № 18
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
А как часто Вы обновляете эту надстройку? Т.е. как часто скидываете новые версии?


Только тогда, когда появляются новые документы или какие-либо изменения в документах.
В целом - это происходит не часто.
 
Ответить
Сообщение
А как часто Вы обновляете эту надстройку? Т.е. как часто скидываете новые версии?


Только тогда, когда появляются новые документы или какие-либо изменения в документах.
В целом - это происходит не часто.

Автор - den45444
Дата добавления - 24.09.2015 в 14:44
SLAVICK Дата: Четверг, 24.09.2015, 14:54 | Сообщение № 19
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
А как можно так устроить?

Перед тем как отправить пользователям надстройку - очистите ячейки в которых прописаны пути. Менеджер получит надстройку - запустит - данные заполнятся.
А в процедурах обращайтесь к этой ячейке и считывайте с нее данные. ;)
Есть еще какие-либо упрощенные варианты действий?

Сделать по коду KSV, но если не заполнять переменную при загрузке надстройки - тогда нужно вставлять процедуру обновления папки из реестра в каждой процедуре.
Если вдруг возникнут ошибки при выполнении макроса - переменная слетит - ячейка останется.
Выбирать Вам :)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Четверг, 24.09.2015, 14:55
 
Ответить
Сообщение
А как можно так устроить?

Перед тем как отправить пользователям надстройку - очистите ячейки в которых прописаны пути. Менеджер получит надстройку - запустит - данные заполнятся.
А в процедурах обращайтесь к этой ячейке и считывайте с нее данные. ;)
Есть еще какие-либо упрощенные варианты действий?

Сделать по коду KSV, но если не заполнять переменную при загрузке надстройки - тогда нужно вставлять процедуру обновления папки из реестра в каждой процедуре.
Если вдруг возникнут ошибки при выполнении макроса - переменная слетит - ячейка останется.
Выбирать Вам :)

Автор - SLAVICK
Дата добавления - 24.09.2015 в 14:54
den45444 Дата: Четверг, 24.09.2015, 18:00 | Сообщение № 20
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
SLAVICK, Спасибо за ответы.
Наверное лучше будет оставить также как было:[vba]
Код
Private Const papka As String = "C:\ШАБЛОНЫ"
[/vba]

В каждой процедуре указывать подсказку на путь [vba]
Код
If Dir(papka, 16) = "" Then MsgBox "Разместите папку ШАБЛОНЫ в локальный диск С <Компьютер - Локальный диск(с)>", vbCritical, "Ошибка": Exit Sub
[/vba]
 
Ответить
СообщениеSLAVICK, Спасибо за ответы.
Наверное лучше будет оставить также как было:[vba]
Код
Private Const papka As String = "C:\ШАБЛОНЫ"
[/vba]

В каждой процедуре указывать подсказку на путь [vba]
Код
If Dir(papka, 16) = "" Then MsgBox "Разместите папку ШАБЛОНЫ в локальный диск С <Компьютер - Локальный диск(с)>", vbCritical, "Ошибка": Exit Sub
[/vba]

Автор - den45444
Дата добавления - 24.09.2015 в 18:00
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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