Страницы: 1
RSS
Связь с внешним файлом в сети
 

Здравствуйте.

Суть проблемы следующая: есть два файла, первый К1 расположен на компьютере пользователя, второй К2 где-то в сети. Один файл обращается, например, к некой ячейке во втором файле К2. Своего рода клиент-сервер.
При локальном расположении файлов это выглядит примерно так:

Код
='C:\Users\Д\Desktop\[К2.xlsx]Лист1'!$A$1
 Как такую связь организовать, если файл К2 находится во внешней сети (интернете)?
Как формулируются ссылки на такие файлы?
И где файл (возможно, в каком-то облачном хранилище) К2 может быть размещен?
 
Обратитесь к админам. Нужно ссылку прописать как жесткий диск на компьютере.
 
Доброе время суток.
Цитата
Дмитрийже написал:
(интернете)?
В принципе, можно иметь ссылку на ячейку листа книги в OneDrive. В OneDrive ПКМ на книге - открыть в Excel. Дальше ссылка создаётся как обычно.
Успехов.
Изменено: Андрей VG - 28.07.2017 09:12:44
 
vikttur, Андрей VG,спасибо за ответы.

Цитата
vikttur написал: ...ссылку прописать как жесткий диск на компьютере.
Не совсем подходит в моем случае - и администрирование в большой бюджетной организации оставляет желать лучшего, да и нейтральное облачное хранилище, доступное отовсюду - гораздо удобнее.

Цитата
Андрей VG написал: можно иметь ссылку на ячейку листа книги в OneDrive.
Вот это оно! Пробовал разные облачные хранилища, но так и не докумекал как ссылку прямую вытянуть, а до Вандрайва как-то не дошел. Пока остается открытым вопрос - сколько такая ссылка на вандрайве храниться будет.

Андрей VG, Потестил ваш метод - вообще интересно, выложу тестовые файлы OneDrive
1. Открываю Ex1, содержащий только обычные ссылки на ячейку и именованный диапазон. Данные обновляются автоматически без открытия файла Норм_РУП по ссылке, в Данные-Изменить связь проверка состояния дает ОК... Это для меня идеальная реализация - выборка только данных из дистанционного файла без скачивание оного и открытия!
2. Открываю Ex2, содержащий более сложные конструкции - ВПР, Двссыл и обращение к таблицам. И появляется предупреждение о невозможности обновить связи. Данные-Изменить связь проверка состояния выдает "Ошибка: книга не найдена". Это для меня очень нехорошо, поскольку оригинальный норм_РУП изобилует такими объектами. Приходится только открывать файл через Данные-Изменить связь, Норм-РУП открывается и всё идеально работает.

Но главное - я не могу для себя объяснить природу разницы в этих двух примерах, чтобы определить грань возникновения ошибки, и постараться свести работу к первому сценарию, и просто очень интересно почему так происходит.
 
Цитата
Дмитрийже написал:
чтобы определить грань возникновения ошибки
Вот тут ничем не могу помочь - не формулист. Я бы на вашем месте, если уж у вас нет возможности организовать VPN для удалённой работы, сделал бы это через любой облачный клиент. То есть, допустим, создаёте учётку в Яндекс диск, на все компьютеры, на которых нужна удалённая общая папка  ставите клиент и подключаетесь к облаку с этой учёткой. В результате у вас будет общая папка. Через облако все изменения, сделанные в файле папки синхронизации клиента, будут репликацированы на остальные компьютеры. Вопрос только в трафике - есть ли ограничения по его объёму. И в файлах не будет хитрых https ссылок.
 
Код
Function GetYD(lg As String, ps As String, Optional regList As Boolean)
'создать сетевой диск с учетной записи яндекс (имя,пароль,Регистация/не регистрация диска в профиле пользователя(true/false))
Dim fso As Object, netDsk As Object, dsk, dskPth As String, n As Integer
Set fso = CreateObject("Scripting.FileSystemObject")
Set netDsk = CreateObject("WScript.Network")
n = 67
For Each dsk In fso.Drives 'ищем свободную букву
  If Chr(n) = dsk.DriveLetter Then n = n + 1 Else Exit For
Next
dskPth = Chr(n) & ":"
On Error Resume Next
netDsk.MapNetworkDrive dskPth, "https://webdav.yandex.ru:443", False, lg, ps
If Err <> 0 Then Exit Function
On Error GoTo 0
GetYD = dskPth
End Function

Код
Sub RemNetDsk(dskPth, Optional stat As Boolean, Optional clrReg As Boolean)
'Удалить сетевой диск   БукваДиска,неисползуемый/даже если используется (false/true), удаление из учетной записи usera(true/false)
Dim netDsk
Set netDsk = CreateObject("WScript.Network")
On Error Resume Next
netDsk.RemoveNetworkDrive dskPth, True, True
On Error GoTo 0
End Sub

Код
Sub testDsk()
Dim dskPth As String
dskPth = GetYD("ИмяУчеткиЯндекс", "ПарольУчеткиЯндекс", False)
'здесь работаем с диском как со своим
RemNetDsk dskPth, True, True
End Sub
 
AAF, тогда уж проще подключить как сетевой диск сразу в проводнике, введя https://webdav.yandex.ru:443 как сетевой адрес, а затем логин и пароль :)
Но в любом случае, спасибо. Подзабыл, что Яндекс, пожалуй один из известных, даёт доступ к облаку через WebDav. Мелкомягкие прикрыли это дело.
 
Андрей VG, Импортозамещение :)
Не проще "сразу подключить", ибо, возможно, не хочется, чтоб кто-то хозяйничал на этом диске за просто так...
Кроме того можно еще к вложенному приконектиться, только параметр добавить надо "https://webdav.yandex.ru:443/Общ" :)
Изменено: AAF - 29.07.2017 14:32:01
 
Идея отличная, спасибо.
Цитата
Андрей VG написал:
Вопрос только в трафике - есть ли ограничения по его объёму.
занимает несколько мегабайт, для синхронизации облака мелочь.

Есть небольшой нюанс в настройке связей. При синхронизации я.диска с компьютером пользователя, каждый установит папку синхронизации по своему индивидуальному пути, т.е. путь к файлу-источнику будет разный. Соответственно, книге-клиенту потребуется обновить связь на новое место расположение файла-источника, но файл-клиент закрыт паролем и "в лоб" это сделать не получится, именно поэтому предложенный вариант с OneDrive для меня реализует идеальную логику - жесткая внешняя ссылка, не надо объяснять пользователю как настраивать и т.д., работаешь с файлом-клиентом, а он сам через инет берет нужные данные (как в с случае Ex1 - идеал, без загрузки файла, только нужные данные черпает, если бы еще и с таблицами так работало; Ex2 - приемлемо, подгружает актуальную версию файла-источника). Вопрос с временем актуальности прямой ссылки в OneDrive.
Цитата
как в с случае Ex1 - идеал, без загрузки файла, только нужные данные черпает, , если бы еще и с таблицами так работало
С высоты своего опыта не подскажите в каком ещё направлении можно "копать" чтобы реализовать такой сценарий? Может уйти от файла-источника в Excel? сделать файл-источник данных в access или в чем другом? Пробовал через настройку Данные-Получение внешних данных ODBC что-то реализовать, но там импорт, причем дискретных ячеек и таблиц, а не обращение к цельному удаленному источнику,
Изменено: Дмитрийже - 29.07.2017 14:42:01
 
Андрей VG, AAF,пока писал ответ у вас тут цельная дискуссия образовалась) сейчас буду изучать. Еще раз спасибо.
Причем  Яндекс для меня хороший вариант, поскольку есть идея подключиться к Я.Коннект.
Изменено: Дмитрийже - 29.07.2017 14:45:17
 
Цитата
Андрей VG написал:
Мелкомягкие прикрыли это дело.
Что-то я на них зря наехал. У них, когда это только появилось облако был доступ, потом исчез. Последний раз в 14 проверял. Сейчас поиском нашёл вариант - работает.
Цитата
Дмитрийже написал:
сейчас буду изучать
Вот, подключив, как сетевой диск облако (главное чтобы буква диска была у всех одна и та же) пользователи будут видеть одну и туже структуру папок и файлов в них. Всё как обычная общая сетевая папка.
Цитата
AAF написал:
ибо, возможно, не хочется, чтоб кто-то хозяйничал на этом диске за просто так...
Ну, возможно, спасибо за ответ. Только в этом случае получается и логин и пароль в общем-то слабо защищены от тех, кому мы хотим воспрепятствовать "хозяйничать".
Если же указывать подпути https://webdav.yandex.ru:443/Общ/Пользователь1, то ссылки у ТС поплывут (и так придётся добиваться, чтобы у всех была одна и та же буква сетевого диска).
Изменено: Андрей VG - 29.07.2017 14:56:10
 
Цитата
Андрей VG написал:
логин и пароль в общем-то слабо защищены
да, но выбранный метод под стать соответствующей защите.
Данный метод использую регулярно для максимально быстрого костыльного внедрения чего-либо, а потом перевожу на нормальную клиент-серверную систему...
Цитата
Андрей VG написал:
ссылки у ТС поплывут
Тогда надо просматривать регистре usera, прежде чем законектица, конечно... :)
 
Цитата
AAF написал:
а потом перевожу на нормальную клиент-серверную систему...
Не совсем понятно, а почему бы не сразу? В прочем это вопрос из любопытства. Как-то слабо вижу применение Excel в качестве online инструмента и в какой степени он клиент сервера или сервер клиента :)
 
Андрей VG,
Цитата
Андрей VG написал:
почему бы не сразу?
Существуют FlashUserы(свои файлы на флешках всегда при себе), которые мотаются по стране где ни попадя, но если появляются новые поля в основной базе(заказчик, например, поставил задачу), а в структуре базы это еще не внедрено, то накопление ведется во временную таблицу, которая потом подгрузится в базу по неким индексам, если эксперимент будет признан успешным, то это внедряется...
Цитата
Андрей VG написал:
online инструмента и в какой степени он клиент сервера
В качестве, возможно, офлайн ситуации, когда лежит на флешке и неизвестно на каком компе будет использован.
В данном случае это просто форма ввода.
Кроме того, при включенных макросах по событию beforeclose заполняются списки "проверки данных" для возможного использования в режиме отключенных макросов для последующего сведения к минимуму ошибок ввода, т.к. задачи, так называемых, FlashUserов заранее предопределены последним конектом.
После запуска данного файла где разрешены макросы происходит валидация с предложением поправок, а после этого происходит конект, если это возможно с последующим обменом.
Ну есть еще ряд мелочей, но основной принцип постарался изложить, надеюсь успешно...
 
Цитата
AAF написал:
Ну есть еще ряд мелочей, но основной принцип постарался изложить, надеюсь успешно..
Да, всё ясно в вашей ситуации. Спасибо за подробное описание. У нас такой динамики нет. Потому и не учитывал, что может быть и такой подход.
 
Такой подход еще определен исторически сложившейся зависимостью userов от вкусностей интерфейса Excelа, а в web-интерфейсе все это писать.... Поэтому большинство клиентов работает именно через файл-форму excel.  :)
Страницы: 1
Читают тему
Наверх