Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2014, 21:35   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию Путь к файлу объявить константой.

Привет спецам!!!
Подскажите у меня в модулях, листах, часто встречается путь к файлу.
Можно где нить его объявить константой?
Вот путь, на сег. день.
H:\Док_Офис\Офисный Учет\2014\Октябрь\На_ХЗ.xls
и
H:\Док_Офис\Офисный Учет\2014\4_Квартал\4_КВ.xls

Синим - меняемые значения.
Спасибо.
valerij вне форума Ответить с цитированием
Старый 08.10.2014, 21:49   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
его объявить константой
Цитата:
Синим - меняемые значения.
Валера, константа, и меняемое значение (переменная) - противоположные по сути понятия...

Неужели сложно раз в месяц залезть в код, и во всех местах поменять пути к файлам?
EducatedFool вне форума Ответить с цитированием
Старый 08.10.2014, 23:00   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Const RootPath As String = "H:\Док_Офис\Офисный Учет\"

Function MonthFileName(Optional dt As Date = 1) As String
 If dt = 1 Then dt = Date
 MonthFileName = RootPath & Format(dt, "YYYY") & "\" & Format(dt, "[$-419]MMMM") & "\На_ХЗ.xls"
End Function

Function QuarterFileName(Optional dt As Date = 1) As String
 If dt = 1 Then dt = Date
 QuarterFileName = RootPath & Format(dt, "YYYY") & "\" & Int((Month(dt) - 1) / 3) + 1 & "_Квартал\4_КВ.xls"
End Function
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 08.10.2014 в 23:05.
IgorGO вне форума Ответить с цитированием
Старый 08.10.2014, 23:49   #4
RAN.
Форумчанин
 
Аватар для RAN.
 
Регистрация: 05.07.2011
Сообщений: 208
По умолчанию

Код:
   myAddress = "ОТЧЕТЫ_" & Format(myDate, "YYYY") & "_год\" & Format(myDate, "q") & "_квартал\"
RAN. вне форума Ответить с цитированием
Старый 09.10.2014, 11:05   #5
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

я ~ понял, буду разбираться.

Спасибо.
valerij вне форума Ответить с цитированием
Старый 09.10.2014, 11:09   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Валера, не надо разбираться - пользуйся.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 09.10.2014, 13:06   #7
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Валера, не надо разбираться - пользуйся.
Неполучатся, однако!!!
Нашёл ошибку
Так всё ОК
Код:
Const RootPath As String = "='H:\Док_Офис\Офисный Учет\"

Последний раз редактировалось valerij; 09.10.2014 в 13:51.
valerij вне форума Ответить с цитированием
Старый 09.10.2014, 18:34   #8
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Как мне в цикле подставить константы?

Код:
Const RootPath As String = "='H:\Док_Офис\Офисный Учет\"
Function MonthFileName(Optional dt As Date = 1) As String
 If dt = 1 Then dt = Date
 MonthFileName = RootPath & Format(dt, "YYYY") & "\" & Format(dt, "[$-419]MMMM") & "\[На_ХЗ.xls]Sheet1'!"
End Function

Private Sub CreateList()
Application.EnableEvents = False
    Application.ScreenUpdating = False

For inext = 2 To 288
    With Cells(inext, 3)
        .FormulaR1C1 = _
            "='H:\Док_Офис\Офисный Учет\2014\Октябрь\[На_ХЗ.xls]Sheet1'!R[-1]C2"
        .Value = .Value
    End With
    With Cells(inext, 5)
        .FormulaR1C1 = _
            "='H:\Док_Офис\Офисный Учет\2014\Октябрь\[На_ХЗ.xls]Sheet1'!R[-1]C4"
        .Value = .Value
    End With
    With Cells(inext, 8)
        .FormulaR1C1 = _
            "='H:\Док_Офис\Офисный Учет\2014\Октябрь\[На_ХЗ.xls]Sheet1'!R[-1]C1"
        .Value = .Value
    End With
Next
Всё нашёл как. Всего три строки!!
Код:
Cells(inext, 3).FormulaR1C1 = MonthFileName & "R[-1]C2"
Cells(inext, 5).FormulaR1C1 = MonthFileName & "R[-1]C4"
Cells(inext, 8).FormulaR1C1 = MonthFileName & "R[-1]C1"
И ни какие массивы(Array) не нужны.
Игорь вот ругал ты меня, а я сам решил, кавычки нужны были.

Последний раз редактировалось valerij; 09.10.2014 в 18:51.
valerij вне форума Ответить с цитированием
Старый 09.10.2014, 19:38   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Молодец!

Валера, ты растеш... над собой, но медленно
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 09.10.2014, 19:49   #10
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Молодец!

Валера, ты растеш... над собой, но медленно
Дякую!!!

В моём возрасте уже под 70-к торопится нельзя!!!

Это вам молодым всё бегом!!!

Цитата:
Если б молодость знала, а старость могла!!!
valerij вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Путь к файлу masicev C# (си шарп) 10 09.12.2013 08:58
Путь к файлу. Sniperok Общие вопросы по Java, Java SE, Kotlin 2 12.08.2010 04:46
Путь к файлу Баламут Win Api 12 14.05.2008 13:27
Путь к файлу Terran Общие вопросы Delphi 3 13.04.2008 01:18
Путь к файлу Лубышев Общие вопросы Delphi 2 10.02.2008 21:13