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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2014, 02:11   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию Значение переменной - имя папки

Это возможно реализовать?
Вот мой путь к .xls файлу:
H:\Док_Офис\2014\3_Квартал

Сейчас я в ручную правлю каждый год один раз
Sheets(ii).Range("a3").Formula = am & "/1/2014"

Хочу автоматом определять год, системой - не подходит в 2014 г. взглянуть, что было в 2012...

А вот если переменная отвечающая за год в файле, будет = имени папки(2012, 2013,2014...) то вопрос решен.

Как так сделать?

Спасибо.

Последний раз редактировалось valerij; 16.09.2014 в 02:14.
valerij вне форума Ответить с цитированием
Старый 16.09.2014, 09:20   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

valerij, очень много параметров не универсальных, которые только Вы можете знать.

Но, может быть, Вас так устроит?
Код:
Sub ShowYearFromFolder()
 Dim sFName As String, sFullName As String, sYear As String, P%
 Dim Arr() As String
 sFName = ActiveWorkbook.Name
 sFullName = ActiveWorkbook.FullName
 sYear = ""
 If InStr(sFullName, sFName) > 1 Then
   P = InStr(sFullName, sFName)
   Arr = Split(Trim(Mid(sFullName, 1, P - 2)), "\")
   sYear = Trim(Arr(UBound(Arr)))    ' считаем, что год - это последний параметр в имени папки
   MsgBox "sYear = " & sYear
 Else
   MsgBox "не удалось выделить год из полного пути к файлу"
 End If
 
End Sub

разумеется, всё можно записать короче и без такого количество переменных.
я специально пошагам разложил, чтобы наглядней/понятней было, где, что и как получается...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.09.2014, 10:06   #3
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Код:
Sheets(ii).Range("a3").Formula = am & "/1/" & переменная
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 16.09.2014, 10:58   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
очень много параметров не универсальных
Сергей, это отличительная черта стиля программирования Валерия: чтобы прицельно попасть в нужный месяц, квартал, год (иногда - в нужную ячейку) - он просто переписывает незначительные части кода, а так, все остальное - РАБОТАЕТ КАК ЧАСИКИ!!!
первого числа только пробежаться по макросам, поднастроить все и... целый месяц куришь
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.09.2014, 14:30   #5
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
valerij, очень много параметров не универсальных, которые только Вы можете знать.
Это какие, пример дайте, бо я так не пойму, вроде же VBA.

Цитата:
Но, может быть, Вас так устроит?
Попробую разобраться, но только у вас нет ещё одной промежуточной папки в которой находится файл.
У вас такой путь подразумевается
H:\Док_Офис\2014\
а у меня то такой и менять его не могу
H:\Док_Офис\2014\Х_Квартал
(Х_Квартал - 1,2,3,4)

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Код:
Sheets(ii).Range("a3").Formula = am & "/1/" & переменная
А значение переменная??

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Сергей, это отличительная черта стиля программирования Валерия:
не неси псаки!!!
valerij вне форума Ответить с цитированием
Старый 16.09.2014, 14:45   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
А значение переменная??
значение переменная - переменное, с каждым годом все больше и больше

Код:
переменная = Year(Now)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.09.2014, 14:55   #7
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
значение переменная - переменное, с каждым годом все больше и больше

Код:
переменная = Year(Now)
Игорь, чему будет равна переменная в 2015 году, если я открою файл за 2014 год?
Serge_Bliznykov - всё правильно понял.
valerij вне форума Ответить с цитированием
Старый 16.09.2014, 15:36   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
а у меня то такой и менять его не могу
H:\Док_Офис\2014\Х_Квартал
просто исправьте в моём примере, укажите,
что вам нужен не последний элемент папки, а предпоследний:
Код:
sYear = Trim(Arr(UBound(Arr) -1 ))    ' считаем, что год - это ПРЕДпоследний параметр в имени папки
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.09.2014, 15:39   #9
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Насчёт переменной - я вот совершенно не понял откуда собираетесь её брать, что это будет за папка/каталог... Может будете её в inputbox забивать, а почему бы и нет?
Поэтому просто переменная.
Но если что - как выковырять её из полного пути уже рассказали до меня.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 16.09.2014, 15:52   #10
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
просто исправьте в моём примере,
Теперь именно так, а расшифруйте мне это выражение?
P = InStr(sFullName, sFName): MsgBox P
и почему Р = 20?
и
почему : MsgBox Arr - ОШИБКА?

Спасибо.

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Насчёт переменной - я вот совершенно не понял откуда собираетесь её брать, что это будет за папка/каталог... Может будете её в inputbox забивать, а почему бы и нет?
Поэтому просто переменная.
.
Из пути, это как бы всегда константа не зависит от системной даты.
Забить в inputbox - значит при открытии файла каждый раз будет запрашивать значение?
valerij вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переменной t присвоить значение true, если дата d1, m1 предшествует (в рамках года) дате d2, m2, и значение false иначе Andrew5674 Паскаль, Turbo Pascal, PascalABC.NET 4 11.12.2013 21:37
Узнать имя папки terpyohok Общие вопросы Delphi 6 06.11.2012 13:10
Найти значение переменной y в зависимости от значения переменной х Rishi Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 11.05.2011 20:25
Взять имя переменной из файла и присвоить ей значение ZaRDaK Помощь студентам 1 11.11.2009 00:33
Имя переменной как переменная. Как получить доступ к такой переменной? Denni Microsoft Office Access 8 02.04.2009 10:06