Страницы: 1 2 След.
RSS
Путь к файлу. Переменная as String
 
Здравствуйте! Удачного дня и отличного настроения!  
Помогите с вопросиком, пожалуйста!  
 
Как завести переменную в VBA с привязкой к пути к файлу?  
например,  
 
Dim myPath As String  
myPath = "C:\Germanisher Lloyd inc\Tailor_Di\Program Data\"  
 
но таким образом, чтобы после окончания выполнения макроса она не теряла своего значения.  
В проекте приходится открывать и закрывать сумашедшее количество книг, и постоянно прописывать имена вроде  
 
Workbooks.Open Filename:= _  
"C:\Germanisher Lloyd inc\Tailor_Di\Program Data\LINKS.xlsm"  
 
становится долго, нудно и муторно.  
 
Нужно как-то сделать, чтобы эта переменная действовала с момента открытия книги и до ее закрытия с возможностью из любого макроса вызвать ее.  
Подскажите, пожалуйста, как?
 
В шапке стандартного модуля (не класса):  
 
Public Const myPath = "C:\Germanisher Lloyd inc\Tailor_Di\Program Data\"
KL
 
А еще, если путь у всех тот же, что и у открытой книги, то всегда можно его получить через ThisWorkbook.Path
KL
 
{quote}{login=KL}{date=12.09.2010 04:52}{thema=}{post}В шапке стандартного модуля (не класса):  
 
Public Const myPath = "C:\Germanisher Lloyd inc\Tailor_Di\Program Data\"{/post}{/quote}  
 
нда... озадачил  
но спасибо! :)
 
В чем причина озадаченности?
KL
 
{quote}{login=KL}{date=12.09.2010 04:52}{thema=}{post}В шапке стандартного модуля (не класса):  
 
Public Const myPath = "C:\Germanisher Lloyd inc\Tailor_Di\Program Data\"{/post}{/quote}  
 
Я только начинающий пользователь Excel... Ищу, где бы это такое можно было объявить... "Шапка стандартного модуля" к тому же еще и "не класса" :)
 
{quote}{login=Diana Tailor}{date=12.09.2010 05:16}{thema=Re: }{post}{quote}{login=KL}{date=12.09.2010 04:52}{thema=}{post}В шапке стандартного модуля (не класса):  
 
Public Const myPath = "C:\Germanisher Lloyd inc\Tailor_Di\Program Data\"{/post}{/quote}  
 
Я только начинающий пользователь Excel... Ищу, где бы это такое можно было объявить... "Шапка стандартного модуля" к тому же еще и "не класса" :){/post}{/quote}  
Стандартный модуль (не класса) - это модуль не привязанный ни к какому объекту (листу, книге и т.п.). Такие модули по умолчанию имеют имя "Модуль1", "Модуль2" и т.д.
KL
 
Diana, в Excel есть несколько типов модулей, где пишется код  
1) Модуль листа - в котором обычно пишется код, который будет работать на этом листе  
2) Модуль формы - в котором обычно пишется код для обработки нажатий кнопок, textbox'ов и других объектов, которые находятся на форме  
3) стандартный модуль - обычный модуль, где пишется какой-либо макрос, который вставляется в проект через меню через меню Insert - Module или же если вы записываете макрос через макрорекордер  
4) Модуль Класса - Специальный модуль, в котором пишется код, для обработки классов объектов и т.д. Вставляется в проект через меню Insert - Class Module  
 
Если что, другие участники меня поправят и дополнят )
 
{quote}{login=Pavel55}{date=12.09.2010 05:22}{thema=}{post}Diana, в Excel есть несколько типов модулей, где пишется код  
1) Модуль листа - в котором обычно пишется код, который будет работать на этом листе  
2) Модуль формы - в котором обычно пишется код для обработки нажатий кнопок, textbox'ов и других объектов, которые находятся на форме  
3) стандартный модуль - обычный модуль, где пишется какой-либо макрос, который вставляется в проект через меню через меню Insert - Module или же если вы записываете макрос через макрорекордер  
4) Модуль Класса - Специальный модуль, в котором пишется код, для обработки классов объектов и т.д. Вставляется в проект через меню Insert - Class Module  
 
Если что, другие участники меня поправят и дополнят ){/post}{/quote}  
Добавления:  
5) Модуль книги - в котором обычно пишется код, который будет работать в этой книге  
6) модули, указанные в пунктах 1, 2, 4 и 5 являются модулями класса
KL
 
Pavel55, KL, спасибо вам, все заработало! Ура!!! :)
 
Есть один очень оригинальный способ хранить значения в именнованных диапазонах:  
 
Const P = "C:\temp"  
Application.Names.Add "Path", RefersTo:=P  
 
Теперь можно обращаться к пути "C:\temp" с помощью    
Application.Names("Path") в любое время.
 
{quote}{login=}{date=12.09.2010 05:47}{thema=}{post}Есть один очень оригинальный способ хранить значения в именнованных диапазонах:  
 
Const P = "C:\temp"  
Application.Names.Add "Path", RefersTo:=P  
 
Теперь можно обращаться к пути "C:\temp" с помощью    
Application.Names("Path") в любое время.{/post}{/quote}  
 
Человек-невидимка, спасибо за идею, читала здесь на форуме этот пример, а эту переменную объявлять, полагаю, тоже в стандартном модуле нужно?
 
{quote}{login=KL}{date=12.09.2010 04:52}{thema=}{post}В шапке стандартного модуля (не класса):  
 
Public Const myPath = "C:\Germanisher Lloyd inc\Tailor_Di\Program Data\"{/post}{/quote}  
 
Рано радоваться начала, не тот макрос запустила :)  
ругается на Const, говорит нельзя в стандартном модуле после Public писать константу...
 
Вы ничего не путаете? ;)  
Можно посмотреть полный текст ошибки, скриншот, или файл-пример?
KL
 
Вот пример
KL
 
{quote}{login=KL}{date=12.09.2010 06:06}{thema=}{post}Вы ничего не путаете? ;)  
Можно посмотреть полный текст ошибки, скриншот, или файл-пример?{/post}{/quote}  
 
Вместо обычного модуля вставила Модуль Класса, поэтому и ругался...  
Извиняюсь, невнимательна была.  
Спасибо еще раз, теперь все заработало, пример помог :)
 
{quote}{login=The_Prist}{date=12.09.2010 06:12}{thema=Re: Re: }{post}{quote}{login=Diana Tailor}{date=12.09.2010 06:02}{thema=Re: }{post}говорит нельзя в стандартном модуле после Public писать константу...{/post}{/quote}Скорее всего Вы объявили как раз не в стандартном модуле, а в модуле класса: модуль ЭтаКнига или модуль листа или непосредственно ClassModule. Вот там нельзя объявить как Public.{/post}{/quote}  
 
а Дмитрий, как всегда, прав :)
 
Молодые люди, еще вопросик:  
После объявления переменной в стандартном модуле она будет доступна в пределах одного модуля, в котором она объявлялась или во всех?  
В случае, если только в этом же модуле, назначая одинаковые переменные в других модулях в пределах одной книги никакого конфликта VBA не будет?
 
Спасибо огромнейшее за помощь, и последний малюсенький вопросик :)  
 
UpdateLinks:=0  
 
Это значит, что ссылки обновляются? или наоборот, не обновляются?
 
Diana, в Excel 0 = False; 1 = True
 
{quote}{login=Pavel55}{date=12.09.2010 07:46}{thema=}{post}Diana, в Excel 0 = False; 1 = True{/post}{/quote}  
Немного не так. -1 = True  
С уважением, Сергей.
Я сам - дурнее всякого примера! ...
 
Хм.. выходит, вместо "False" and "True" можно написать "0" and "-1"...  
Спасиб вам всем большое! Вы такие замечательные!!! :)
 
Сергей, я имею ввиду вот это преобразование. См. файл  
 
P.S. Так же вместо ЛОЖЬ в формулах можно писать просто 0, например, так ВПР(1;A1:B5;2;0)
 
Павел, я ни на секунду не усомнился, что Вы знаете эту фичу(так же было и с The_Prist)и не мне Вас учить(сам у Вас учусь, всегда стараюсь перенять опыт коллег и поделиться своим), но это уже совсем другая история:-)  
 
33400
Я сам - дурнее всякого примера! ...
 
{quote}{login=Diana Tailor}{date=12.09.2010 08:11}{thema=}{post}Хм.. выходит, вместо "False" and "True" можно написать "0" and "-1"...  
Спасиб вам всем большое! Вы такие замечательные!!! :){/post}{/quote}  
Красивый аватар, замечательными называют... Как тут пройти мимо? :)  
На днях меня просветили - не всегда "0" - это "False", с единицей тоже самое. Переменная типа Boolean, например, не понимает цифровой записи.
 
У меня вот это работает корректно    
 
Sub test()  
Dim x As Boolean  
Dim y As Boolean  
Dim z As Boolean  
x = 0  
y = 1  
z = -1  
End Sub  
 
и даже y=True  
 
Но вообще, обычно когда говорят о взаимозаменяемости  1(-1)/True и 0/False, имеется в виду их использование как логических значений (True/False). В остальных случаях может требоваться их насильственное преобразавание. Например, если нужны как раз числа.
KL
 
Ну не дадут поумничать! :)  
В теме о календаре (http://www.planetaexcel.ru/forum.php?thread_id=18899) я задавал похожий вопрос. В коде переменная tru As Boolean не хотела понимать цифровую запись, поменял на False и True - заработало.
 
Кстати, да. Если посмотреть какие значения принимают переменные в коде Кирилла (если сделать останов на End Sub)  
 
Sub test()  
Dim x As Boolean  
Dim y As Boolean  
Dim z As Boolean  
   x = 0  
   y = 1  
   z = -1  
End Sub  
 
то будет видно, что x = False, y = True, z = True. Хотя им и присваиваем 0, 1 и -1
 
Ну и еще один наглядный:  
Private Sub Worksheet_SelectionChange(ByVal Target As Range)  
Application.EnableEvents = -1  
End Sub  
Private Sub Worksheet_Change(ByVal Target As Range)  
Application.EnableEvents = 0  
End Sub  
на обе Sub, точки останова(F9)...  
Кто понимает, поймет, как с этим разобраться.
Я сам - дурнее всякого примера! ...
 
Короче, Diana признавайтесь, это вы на вашей аватарке или нет? :)
Страницы: 1 2 След.
Читают тему
Наверх