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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2014, 15:44   #1
roborrr
Математик
Форумчанин
 
Регистрация: 27.02.2011
Сообщений: 123
По умолчанию работа в дропбоксе (Dropbox)

Здравствуйте!
Экселевский файл (book1) лежит в папке dropbox.

Можно ли кодом vba запретить работу другого пользователя, когда над файлом уже работает один пользователь.
roborrr вне форума Ответить с цитированием
Старый 22.06.2014, 00:13   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

как вариант:
При открытии файла, макросом пересохранять его в локальной папке, удаляя исходный файл в дропбоксе
При закрытии файла, создавать копию локального файла в дропбоксе, под исходным именем

Все остальные варианты чреваты проблемами (если файл не удалять временно, открыть его все равно смогут, а потом пересохранить, и заменить исходный файл)
EducatedFool вне форума Ответить с цитированием
Старый 22.06.2014, 09:36   #3
roborrr
Математик
Форумчанин
 
Регистрация: 27.02.2011
Сообщений: 123
По умолчанию

спасибо большое. хороший вариант. есть еще один вопрос: Как быть, если пользователь захочет закрыть книгу без сохранения?
roborrr вне форума Ответить с цитированием
Старый 22.06.2014, 13:53   #4
roborrr
Математик
Форумчанин
 
Регистрация: 27.02.2011
Сообщений: 123
По умолчанию

этот вопрос для нас очень важный потому что, пользователь может внести такие изменения, которых не захочет запомнить.
roborrr вне форума Ответить с цитированием
Старый 22.06.2014, 20:23   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

а неважно, закрытие с сохранением или без
в момент закрытия файла, просто копируем файл обратно, - независимо от того, изменялся файл или нет
EducatedFool вне форума Ответить с цитированием
Старый 22.06.2014, 21:12   #6
roborrr
Математик
Форумчанин
 
Регистрация: 27.02.2011
Сообщений: 123
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
а неважно, закрытие с сохранением или без
в момент закрытия файла, просто копируем файл обратно, - независимо от того, изменялся файл или нет
действительно. спасибо большое
roborrr вне форума Ответить с цитированием
Старый 24.06.2014, 16:46   #7
roborrr
Математик
Форумчанин
 
Регистрация: 27.02.2011
Сообщений: 123
По умолчанию

Уважаемые форумчане!

опять обращаю ваше внимание на работе в dropbox (постановку задачи см по теме )
следуя добрыми подсказками от EducatedFool, написал следующий код (в thisworkbook (эта книга)):
Код:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.SaveAs Filename:="C:\Dropbox\public\book1.xlsm"
Kill "d:\book1.xlsm"
End Sub


Private Sub Workbook_Open()
ThisWorkbook.SaveAs Filename:="d:\book1.xlsm"
Kill "c:\dropbox\public\book1.xlsm"
End Sub
для корректной работы этого кода, на компьютерах всех пользователей пути к файлу book1, должны быть одинаковыми. в нашем случае:

в локальном диске- d:\book1.xlsm
к папке dropbox- c:\dropbox\public\book1.xlsm

получилась импровизированная бесплатная компьютерная "сеть", где в одном файле разрабатывается Бухгалтерия нескольких магазинов одним складом, заработала прекрасно.

но есть одно затруднение:

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

1. сохранить свою версию под именем c:\dropbox\public\book1.xlsm (в этом случае теряется изменения предыдущего пользователя)
2. сохранить свою версию под именем c:\dropbox\public\book1[имя компьютера этого пользователя].xlsm (в этом случае сохраняется вариант книги предыдущего пользователя и добавляется конфликтующая версия второго)
3. синхронизировать обе варианта книги(то есть учитывается изменения, внесенные обоими пользователями) и сохраняется под именем c:\dropbox\public\book1.xlsm

в упрощенном прикрепленном варианте книги, имеется три листа, в которой может произвести изменения любой пользователь "сети".
Вложения
Тип файла: rar book1.rar (80.8 Кб, 11 просмотров)
roborrr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с псевдослучайными последовательностями (ПСП). Работа с цветом.(Pascal) Shick Помощь студентам 7 11.12.2013 19:25
Скачивание расшаренного файла из dropbox или яндекс.диска Fainder Работа с сетью в Delphi 0 19.09.2013 22:47
Работа с webbrowser - Фреймы, работа с конкретным феймом в фрейме NewDelphi Фриланс 2 08.10.2009 11:00