Страницы: 1
RSS
Поиск в указанной директории папки с именем из ячейки "x"
 
Подскажите как реализовать задачу:
Необходимо в директории (предположим - C:\direct) найти папку с названием из ячейки "A1" (с учетом подпапок)
и создать гиперссылку на нее в ячейке "B1"
Изменено: magistor8 - 03.10.2018 09:31:22
 
magistor8, а может просто сделать ссылки на все папки в данной папке сразу и все?

вот здесь решено сразу даже на файлы...
https://www.planetaexcel.ru/techniques/3/45/
Изменено: a.i.mershik - 02.10.2018 14:53:40
Не бойтесь совершенства. Вам его не достичь.
 
Путь к искомой папку можно получить с помощью CMD команды dir /a:d/b/s <имяПапки> .
Если это требуется сделать не для одной ячейки, а для целого столбца, лучше получить список всех подпапок командой dir /a:d/b/s C:\direct и потом искать в массиве нужные (функция Filter). См. http://www.script-coding.com/WSH/WshShell.html#3.5.
Изменено: Казанский - 02.10.2018 14:52:18
 
Во первых в данной директории много папок и файлов, во вторых в ней постоянно происходят изменения. Боюсь данный способ рабочий, но очень энергоемкий и неэффективный
Изменено: magistor8 - 02.10.2018 14:54:58
 
Поиск по фрагменту имени файла
Код
Sub Ma()
Const ROOT = "c:\temp\"
Dim x
  x = CreateObject("wscript.shell").exec("cmd /c dir /a:d/b/s """ & ROOT & "*" & [A1] & "*""").stdout.readline
  If Len(x) = 0 Then Exit Sub
'перекодировка - нужна для русских имен файлов
  With CreateObject("ADODB.Stream")
    .Type = 2
    .Mode = 3
    .Open
    .Charset = "Windows-1251"
    .writetext x
    .Position = 0
    .Charset = "cp866"
    x = .readtext
    .Close
  End With
'конец перекодировки
  ActiveSheet.Hyperlinks.Add [B1], x
End Sub
 
Казанский,
Все понятно, спасибо.
А если каталог ROOT находится на сетевом диске, как правильно это записать?
 
magistor8, не знаю, у меня нет сети.
 
Казанский,
Я подставляю путь сетевого каталога, а вместо гиперссылки на папку
ячейка получает значение = "Microsoft Windows [Version 10.0.16299.371]"
 
Цитата
magistor8 написал:
А если каталог ROOT находится на сетевом диске,
Как обращаетесь, так и записать.  Если замаплен на литеру, то по имени литеры, если как сетевое имя то \\hostname\sharename\… ну или \\IP Address\sharename\...
Казанский, не верю попробуйте \\127.0.0.1\с$ или \\localhost\c$ :-)
По вопросам из тем форума, личку не читаю.
 
БМВ,Уважаемые эксперты, у меня них..на не получается.
Если не трудно, опишите более подробно на основе кода товарища Казанского.
Заранее благодарен
 
БМВ, c 127... то же самое. И я вполне без этого хоста обхожусь.
 
magistor8, дайте шанс помочь, покажите что там у вас за пути.
По вопросам из тем форума, личку не читаю.
 
Цитата
Казанский написал:x = CreateObject("wscript.shell").exec("cmd /c dir /a:d/b/s """ & ROOT & "*" & [A1] & "*""").stdout.readline  If Len(x) = 0 Then Exit Sub
А у меня, почему-то, х = "" и выход. 8-0  
Изменено: pitby - 06.10.2018 13:17:25
 
БМВ,

Вот так выглядит путь к сетевой папке:
F:\УМТСиЛ\ОСХ\4.Документы\1. Документы со складов
Но поиск на диске F не осуществляет
Изменено: magistor8 - 05.10.2018 15:55:36
 
pitby,
На диске "C" все работает как надо, а на локальном к сожалению нет(
 
dir /a:d/b/s <имяПапки>  не ищет папку, а выводит катаг попадающий под маску и его подкаталоги

F:\УМТСиЛ\ОСХ\4.Документы\1. Документы со складов*ляля* не позволит найти каталок в дереве где есть "ляля"

cmd /c cd/d ROOT & dir /a:d/s/b *
так скорее всего
Код
  x = CreateObject("wscript.shell").exec("cmd /c cd/d """ & ROOT & """ & dir /a:d/b/s ""*" & [A1] & "*""").stdout.readline


но не переходит на сетевой диск . надо подумать.
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх