Добрый день всем! Столкнулся с проблемой, которую не могу решить уже около недели. Поиск в интернете тоже не помог. Суть проблемы в следующем. Есть большой каталог папок (папка и в ней папки, а них еще), некая древовидная структура вида ...\001\AAA\MMM\FFF\RRR\ (тут остальные 4 папки) ...\001\AAA1\MMM1\FFF1\RRR1\ (тут остальные 4 папки) ...\001\AAA2\MMM2\FFF2\RRR2\ (тут остальные 4 папки) и т.д. Дошло все до того, что в этом большом объеме папок долго идти до конечного файла, да и название папок очень похожи... Решил сделать своего рода каталог, что бы по клику в ячейке открывалась конечная папка.. Через VBA сделал автосоздание папок и ссылки на них (были гиппер ссылки в локальной версии) Все прекрасно работало, до того момента как эту таблицу не выложил на сетевой OneDrive
И тут началось... 1. Сначала не создавались папки, так как путь на книгу определялся как http:// - решил через созданием по локальному пути... "C:\user\{имя текущего пользователя}\и т.д. [vba]
Код
iPath = ActiveWorkbook.Path & "\" & ActiveSheet.Name & "\" ' тут путь через http:// iFixPath = Replace(iPath, "https://test.sharepoint.com/sites/test/Shared Documents", "C:\Users\" & iUser & "\test\test - Документы") ' делаю замену
[/vba] 2. Второй этап, это то что гиппер ссылки не отрывались, так как путь был также через "http://", да и гиппер ссылка прописывается жестко, а у каждого сетевого пользователя свой username, решил от них отказаться... стал собирать путь "динамически" исходя из того по какой ячейки был клик... - путь собирается корректно (в дебаге все отражается хорошо) [vba]
Код
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Cells(Target.Row, Target.Column).Value <> "" And Target.Column > 4 And Target.Column < 8 Then Dim linkPath As String Dim iUser As String Dim oAS As Object Set oAS = CreateObject("Shell.Application") iUser = Environ("username") linkPath = ActiveSheet.Name & "\" & Cells(Target.Row, "B").Value & "\" & Cells(Target.Row, "C").Value & "\" & Cells(Target.Row, "D").Value & "\" & Cells(Target.Row, "E").Value & "\" & Cells(Target.Row, Target.Column).Value & "\" oAS.Explore ("C:\Users\" & iUser & "\TEST\TEST - Документы\" & linkPath) End If End Sub
[/vba]
И наконец самый косяк... 3. не могу заставить открыть папку по пути... точнее если путь прописываю руками, папка открывается... а вот если собираю "динамически" через переменную, то ничего не выходит вот кусок кода, который должен открыть папку... [vba]
Пример файла приложил, но наверное толку от него нет.. так как он под OneDrive подогнан.
Буду очень признателен за подсказку.
Добрый день всем! Столкнулся с проблемой, которую не могу решить уже около недели. Поиск в интернете тоже не помог. Суть проблемы в следующем. Есть большой каталог папок (папка и в ней папки, а них еще), некая древовидная структура вида ...\001\AAA\MMM\FFF\RRR\ (тут остальные 4 папки) ...\001\AAA1\MMM1\FFF1\RRR1\ (тут остальные 4 папки) ...\001\AAA2\MMM2\FFF2\RRR2\ (тут остальные 4 папки) и т.д. Дошло все до того, что в этом большом объеме папок долго идти до конечного файла, да и название папок очень похожи... Решил сделать своего рода каталог, что бы по клику в ячейке открывалась конечная папка.. Через VBA сделал автосоздание папок и ссылки на них (были гиппер ссылки в локальной версии) Все прекрасно работало, до того момента как эту таблицу не выложил на сетевой OneDrive
И тут началось... 1. Сначала не создавались папки, так как путь на книгу определялся как http:// - решил через созданием по локальному пути... "C:\user\{имя текущего пользователя}\и т.д. [vba]
Код
iPath = ActiveWorkbook.Path & "\" & ActiveSheet.Name & "\" ' тут путь через http:// iFixPath = Replace(iPath, "https://test.sharepoint.com/sites/test/Shared Documents", "C:\Users\" & iUser & "\test\test - Документы") ' делаю замену
[/vba] 2. Второй этап, это то что гиппер ссылки не отрывались, так как путь был также через "http://", да и гиппер ссылка прописывается жестко, а у каждого сетевого пользователя свой username, решил от них отказаться... стал собирать путь "динамически" исходя из того по какой ячейки был клик... - путь собирается корректно (в дебаге все отражается хорошо) [vba]
Код
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Cells(Target.Row, Target.Column).Value <> "" And Target.Column > 4 And Target.Column < 8 Then Dim linkPath As String Dim iUser As String Dim oAS As Object Set oAS = CreateObject("Shell.Application") iUser = Environ("username") linkPath = ActiveSheet.Name & "\" & Cells(Target.Row, "B").Value & "\" & Cells(Target.Row, "C").Value & "\" & Cells(Target.Row, "D").Value & "\" & Cells(Target.Row, "E").Value & "\" & Cells(Target.Row, Target.Column).Value & "\" oAS.Explore ("C:\Users\" & iUser & "\TEST\TEST - Документы\" & linkPath) End If End Sub
[/vba]
И наконец самый косяк... 3. не могу заставить открыть папку по пути... точнее если путь прописываю руками, папка открывается... а вот если собираю "динамически" через переменную, то ничего не выходит вот кусок кода, который должен открыть папку... [vba]
03.03.2021, 21:54 - КОМУ ТО ДЕНЬ? А у кого то утро? "TEST - Документы" ? А пробовали на инглишь и без пробелов папку сделать? Эта проблема ещё из времен ДОС тащится за файловой системой...
03.03.2021, 21:54 - КОМУ ТО ДЕНЬ? А у кого то утро? "TEST - Документы" ? А пробовали на инглишь и без пробелов папку сделать? Эта проблема ещё из времен ДОС тащится за файловой системой...Апострофф