Страницы: 1
RSS
Как в VBA указывать или менять путь к папкам
 
Добрый день. Подскажите, пожалуйста, есть ли возможность изменить значение глобальной константы, не открывая модуль макросов. Есть несколько глобальных констант, например, Public Const SourceFolderPath As String = "C:\Склад\". Чтобы выбрать другую папку - приходится изменять путь в модуле макросов, что хочется избежать, с целью защиты макросов от случайного изменения. Я объявил константы на отдельном модуле, чтобы уменьшить вероятность случайного изменения макросов, но хотелось бы полностью убрать этот риск.

У меня есть некоторые мысли:
1. запоролить все модули, кроме модуля с константами - это возможно? Если да, подскажите, пож, как это сделать.
2. присваивать значения глобальных констант через User Forms - это возможно? С User Forms опыта нет, поэтому этот вариант порождает вопросы: каждый раз придется заполнять с нуля все глобальные константы в User Forms? Констант сейчас под 15 шт., будет больше и с нуля заполнять их - время и ошибки возможные. Или в User Forms возможно запоминать последние значения?

Но возможно это бред и есть лучше способы.
 
Погуглите, что значит слово "константа" :)
Почему у Вас не переменные?

Цитата
Ливиан написал: возможно это бред
Чтобы понять это, нужно видеть небольшую демонстрацию в файле и описание - зачем такие окружные пути?
 
Доброе время суток.
А зачем вообще задавать константу пути? Не лучше ли вызывать
Код
Application.FileDialog(msoFileDialogFolderPicker)
чтобы пользователь сам указывал папку?
 
Андрей VG, подобное я одним из вариантов  рассматриваю (вопрос про пользовательские формы). почему пользовательские формы больше бы подошли чем это - потому что есть несколько папок (источников и сохранения обработки) и еще другие константы (расширение файла...). их 15 шт - будет неудобно поочередно их заполнять

Цитата
vikttur написал: Почему у Вас не переменные?
я пробовал глобальные переменные. но столкнулся с ситуацией, когда вышла ошибка и я ее долго искал, не мог понять откуда она берется. Оказалось что один из макросов менял значение, но ошибка возникала в другом макросе. Погуглив, нашел что даже опытным программистам не нужно увлекаться глобальными переменными, начинающим программистам советуют вообще их не использовать, ну а про таких как я лучше помолчать. Поэтому со страха все переделал на глобальные константы.  
Почему глобальные а не обычные, потому что когда в ячейках все размещал (путь к папкам...), код макросов был раздут и трудно читаем. Сейчас с глобальными константами все легче понимается. Одна константа употребляется в нескольких макросах.
 
Цитата
Чтобы выбрать другую папку - приходится изменять путь в модуле макросов
Код
    If pFolderPictures = "" Then pFolderPictures = wsList.Range("I10").Value 
    
    If pFolderPictures = "" Or Dir(pFolderPictures, vbDirectory) = "" Then
        MsgBox "Выберите папку с рисунками", 64, "ПОИСК ПАПКИ"
        Call ChoiceFolder ' к выбору папки
        pFolderPictures = wsList.Range("I10").Value
    End If

ChoiceFolder - вызов системного окна выбора папки и запись нового пути в ячейку.
pFolderPictures - глобальная переменная
wsList.Range("I10").Value - место хранения пути (можно не на листе - в имени хранить). wsList  - служебный лист со списками, настройками, скрыт, никому не мешает.
 
О-о-о...
Отпадает всякая охота Вам помогать. Создаете темы, Вам помогают, а Вы тихонечко уходите. Не цените чужое время.
[spoiler]https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=120337&TITLE_SEO=120337-kak-prervat-rabotu-makrosa-iz-drugogo-makrosa&MID=996727#message996727
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=116703&TITLE_SEO=116703-perekhod-po-giperssylke-v-vba&MID=967562#message967562
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=5&TID=116090&TITLE_SEO=116090-kakuyu-bazu-dannykh-seychas-perspektivnee-izuchat-novichku&MID=962748#message962748
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=5&TID=115885&TITLE_SEO=115885-office-365-i-office-2019-v-chem-preimushchestva-i-razlichiya&MID=961348#message961348
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=82988&TITLE_SEO=82988-vba-kak-v-tsikle-pereyti-k-sleduyushchey-iteratsii-esli-tekushchaya-it&MID=692944#message692944
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=80519&TITLE_SEO=80519-vba-kak-udalit-v-yacheykakh&MID=673294#message673294
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=76522&TITLE_SEO=76522-vbaobyavlenie-slovarya-oshibka&MID=640948#message640948[/SPOILER]Более поздние темы не смотрел, там еще две страницы. Сами как-нибудь пройдитесь.
 
Вынужден был отойти от компьютера. Прошу прощения.
Посмотрю все. И попробую предложенные варианты. Всем спасибо большое
 
Цитата
Ливиан написал:
Вынужден был отойти от компьютера
Надолго отходили. Нет - это система...
 
Ливиан, я зря Вам ссылки показывал?
Цитата
Посмотрю все.
Обязательно просмотреть свои темы и дать ответ помогющим. Иаче помощи больше не дождетесь при таком отношении.
 
Обязательно отпишусь. Я очень благодарен резидентам форума. Всегда выручаете бесценными советами
Никого не хотел обидеть.
Страницы: 1
Наверх