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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2018, 00:30   #11
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
можно
Игорь, если возможно помоги пожалуйста.
segail вне форума Ответить с цитированием
Старый 29.10.2018, 00:47   #12
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а то, что написано выше не наводит на мысли?
Код:
=ЛЕВСИМВ(ЯЧЕЙКА("имяфайла");НАЙТИ("[";ЯЧЕЙКА("имяфайла"))-1)
идите в космонавты, сталевары (в куче профессий не требуется вообще знать о существовании Excel, не то чтобы уметь им пользоваться)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 29.10.2018, 01:17   #13
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
а то, что написано выше не наводит на мысли?
Код:
=ЛЕВСИМВ(ЯЧЕЙКА("имяфайла");НАЙТИ("[";ЯЧЕЙКА("имяфайла"))-1)
идите в космонавты, сталевары (в куче профессий не требуется вообще знать о существовании Excel, не то чтобы уметь им пользоваться)
Игорь уж точно не космонавт, но проф. водитель со стажем 35, а excel нужен по необходимости для ведения небольших учетов, поэтому и обращаюсь к профессионалам в этой области.
Ваш пример на имя папки отображает весь путь, пытаюсь добавлять отрицательное значение, но сокращаю с правой стороны да и путь бывает разный, как вытянуть именно имя папки, для меня проблема...
segail вне форума Ответить с цитированием
Старый 29.10.2018, 02:25   #14
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Допустим эта формула в А1, в другой ячейке получаем папку
Код:
=ПСТР(A1;НАЙТИ("?";ПОДСТАВИТЬ(A1;"\";"?";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;"\";""))))+1;999)
На VBA было бы проще:
Код:
Function Папка()
  Папка = Mid(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\") + 1)
End Function
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 29.10.2018 в 02:32.
Казанский вне форума Ответить с цитированием
Старый 29.10.2018, 02:43   #15
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

инженер-строитель, стаж 41
папка, в которой лежит файл
Код:
=ПСТР(ЯЧЕЙКА("имяфайла");НАЙТИ(СИМВОЛ(9);ПОДСТАВИТЬ(ЯЧЕЙКА("имяфайла");"\";СИМВОЛ(9);ДЛСТР(ЯЧЕЙКА("имяфайла"))-ДЛСТР(ПОДСТАВИТЬ(ЯЧЕЙКА("имяфайла");"\";""))-1))+1;НАЙТИ("[";ЯЧЕЙКА("имяфайла"))-2-НАЙТИ(СИМВОЛ(9);ПОДСТАВИТЬ(ЯЧЕЙКА("имяфайла");"\";СИМВОЛ(9);ДЛСТР(ЯЧЕЙКА("имяфайла"))-ДЛСТР(ПОДСТАВИТЬ(ЯЧЕЙКА("имяфайла");"\";""))-1)))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 29.10.2018, 03:02   #16
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
инженер-строитель, стаж 41
папка, в которой лежит файл
Код:
=ПСТР(ЯЧЕЙКА("имяфайла");НАЙТИ(СИМВОЛ(9);ПОДСТАВИТЬ(ЯЧЕЙКА("имяфайла");"\";СИМВОЛ(9);ДЛСТР(ЯЧЕЙКА("имяфайла"))-ДЛСТР(ПОДСТАВИТЬ(ЯЧЕЙКА("имяфайла");"\";""))-1))+1;НАЙТИ("[";ЯЧЕЙКА("имяфайла"))-2-НАЙТИ(СИМВОЛ(9);ПОДСТАВИТЬ(ЯЧЕЙКА("имяфайла");"\";СИМВОЛ(9);ДЛСТР(ЯЧЕЙКА("имяфайла"))-ДЛСТР(ПОДСТАВИТЬ(ЯЧЕЙКА("имяфайла");"\";""))-1)))
Игорь это о многом говорит, в том числе и о программировании.
Работает, создавал различное количество директорий, отображает именно начальную паку, но даже общее понимание как по данной формуле отображается именно начальная папка, так и не уловил.
Благодарю за помощь!!!

Последний раз редактировалось segail; 29.10.2018 в 03:04.
segail вне форума Ответить с цитированием
Старый 29.10.2018, 03:02   #17
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
Допустим эта формула в А1, в другой ячейке получаем папку
Код:
=ПСТР(A1;НАЙТИ("?";ПОДСТАВИТЬ(A1;"\";"?";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;"\";""))))+1;999)
На VBA было бы проще:
Код:
Function Папка()
  Папка = Mid(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\") + 1)
End Function
Казанский спасибо за помощь, но каким образом использовать данную функцию, как код при открытии книги или еще как, не понятно…
segail вне форума Ответить с цитированием
Старый 29.10.2018, 09:57   #18
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Цитата:
Сообщение от segail Посмотреть сообщение
каким образом использовать данную функцию
https://www.planetaexcel.ru/techniques/3/59/ - Создание пользовательских функций на VBA
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 29.10.2018, 21:37   #19
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
https://www.planetaexcel.ru/techniques/3/59/ - Создание пользовательских функций на VBA
Казанский, я так понял используя данную функцию выполнить в ручную необходимые действия и записать их макрорекордером, затем данный код при необходимости дополнить и разместить в событии открытия книги.
Получается функция находится в модуле, а сам код в Книге при открытие Книги выполняется нужное действие.
Ничего не упустил?
Код:
Function Папка()   
    Папка = Mid(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\") + 1)
End Function
Код:
Private Sub Workbook_Open() ' Открытие книги
    Sheets("база_данных").Select        'Переход на лист
    ActiveSheet.Unprotect               'Снять защиту листа
    Range("F2").Select                  'Ячейка для вставки
    ActiveCell.FormulaR1C1 = "=Папка()" 'Вставка функции
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 'Установить защиту листа
End Sub

Последний раз редактировалось segail; 29.10.2018 в 21:59.
segail вне форума Ответить с цитированием
Старый 29.10.2018, 22:39   #20
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Эмм... можно и так, конечно. Но почему бы просто не вписать в нужную ячейку =Папка() , как другие формулы?
Если Вы хотите сказать, что так функция не обновляется при открытии файла, т.е. если переместить его в другую папку, функция сохраняет старое значение, то это лечится добавлением одной строки
Код:
Function Папка()
  Application.Volatile
  Папка = Mid(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\") + 1)
End Function
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание листа с одновременным созданием формулы на ячейку нового листа ShamanK Microsoft Office Excel 4 02.05.2010 22:00
Формула, возвращающая название листа в ячейку _Nina_ Microsoft Office Excel 6 24.08.2009 18:22
как по макросу скопировать название имени фала в ячейку?? kievlyanin Microsoft Office Excel 8 16.04.2009 21:16
Картинку в ячейку листа GWolf Microsoft Office Excel 3 16.04.2009 17:51
Как записать в ячейку название киги oks27 Microsoft Office Excel 2 24.02.2009 13:37