Доступ с помощью макроса к открытым другим пользователем файлам

Автор almaster13, 2 апреля 2025, 15:50

0 Пользователи и 1 гость просматривают эту тему.

almaster13

Цитата: sokol92 от 30 апреля 2025, 14:56Это почти то, что надо, только приложение не то.  :)

Вызовите  Меню / Справка / О программе LibreOffice, нажмите кнопку "Сведения о версии" и скопируйте в сообщение форума содержимое буфера обмена.



Прошу прощения, бы в командировке. Вот что получилось:

Version: 7.6.7.2 (X86_64) / LibreOffice Community
Build ID: 60(Build:2)
CPU threads: 12; OS: Linux 5.15; UI render: default; VCL: kf5 (cairo+xcb)
Locale: ru-RU (ru_RU.UTF-8); UI: ru-RU
Debian package version: 4:7.6.7-0ubuntu0.18.04.1~lo1+ci202406101034+astra7+b1
Calc: threaded

almaster13

Цитата: sokol92 от 30 апреля 2025, 15:31Проверил в указанной выше конфигурации - ошибок нет.

На всякий случай, выложите файл, при открытии которого происходят проблемы. Если там есть конфиденциальная информация - удалите и проверьте, что проблема осталась.

Далее, надо проверить с "чистым" профайлом.
Создайте в своем домашнем каталоге /home/ВашеИмя папку libreoffice и выполните:

libreoffice --calc -env:UserInstallation=file:///home/ВашеИмя/libreoffice

Разрешите выполнение макросов и выполните наш эксперимент.


Файл прилагаю. Провел эксперимент, по указанной команде запустился чистый документ ЛибреОфис Кальк

Кстати, как я уже, вероятно, говорил, мы файлы, открытые другим пользователем, в нашей сети не можем открыть на своем компьютере никак, ни для чтения ни для изменения.

almaster13

Цитата: mikekaganski от 30 апреля 2025, 15:58Можно ещё проверить с файлом в другом месте. Можно начать с локального файла; открыть его в другом инстансе LibreOffice (с использованием -env:UserInstallation), а потом проверить макрос.

Я сделал эксперимент. Проверил работу макроса, замечаний нет. Открыл файл недовыработки (к которому я и обращаюсь) с помощью другого приложения (Мой офис). Снова попробовал запустить макрос и сразу получил ошибку в строке "oASheet=oAdoc.sheets(0)" и получил чистый открытый файл "Недовыработка АПРЕЛЬ 2025.xlsx", открытый приложением Libre Office Writer.

kompilainenn

Мой офис не поддерживает макросы МСО или ЛибоеОфис
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

mikekaganski

Цитата: kompilainenn от 28 мая 2025, 15:22Мой офис не поддерживает макросы МСО или ЛибоеОфис
Идея не в поддержке макросов, а в блокировке документа другой программой.
С уважением,
Михаил Каганский

sokol92

Цитата: almaster13 от 28 мая 2025, 12:10Прошу прощения, бы в командировке.
Мы уже тоже всё забыли...  :)

Вы в сообщении #17 открывали локальный файл (на своем диске) или сетевой?
Владимир.

almaster13

Цитата: kompilainenn от 28 мая 2025, 15:22Мой офис не поддерживает макросы МСО или ЛибоеОфис
Я только открыл в нем файл, к которому я пытаюсь обратиться макросом из Либре кальк.

almaster13

Цитата: sokol92 от 28 мая 2025, 16:11
Цитата: almaster13 от 28 мая 2025, 12:10Прошу прощения, бы в командировке.
Мы уже тоже всё забыли...  :)

Вы в сообщении #17 открывали локальный файл (на своем диске) или сетевой?


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

А в сообщении №17 я открывал файл Недовыработка.xlsx файл, расположенный на сетевом диске. Макрос находится в файле, который также расположен на сетевом диске (причем в той же папке). Получается, что я открыл файл под своей учетной записью но другим ПО, при этом файл все равно заблокировался. Если я открываю файл в либре кальк, то макрос либре кальк не выдает ошибку и свободно берет из файла данные.

mikekaganski

Цитата: almaster13 от 29 мая 2025, 08:37
Цитата: sokol92 от 28 мая 2025, 16:11Вы в сообщении #17 открывали локальный файл (на своем диске) или сетевой?
А в сообщении №17 я открывал файл Недовыработка.xlsx файл, расположенный на сетевом диске. Макрос находится в файле, который также расположен на сетевом диске (причем в той же папке). Получается, что я открыл файл под своей учетной записью но другим ПО, при этом файл все равно заблокировался. Если я открываю файл в либре кальк, то макрос либре кальк не выдает ошибку и свободно берет из файла данные.

Вот смотрите: у нас разговор не получается. Предложение было очень конкретное:

Цитата: mikekaganski от 30 апреля 2025, 15:58Можно ещё проверить с файлом в другом месте. Можно начать с локального файла; открыть его в другом инстансе LibreOffice (с использованием -env:UserInstallation), а потом проверить макрос.

То есть: ОТКРОЙТЕ ЛОКАЛЬНЫЙ ФАЙЛ. Ладно, проигнорируем, что Вы открыли не LibreOffice (у которого мы знаем код, где происходит блокировка, и можем понять, какие параметры этой блокировки влияют), а МойОфис, где ничего не известно - так ещё и файл не локально, а на сервере (а значит, появляются вопросы по разрешениям и сетевому протоколу). То есть вместо "давайте проверим с минимальным количеством неизвестных" Вы делаете "а я считаю, что если я сделаю всё по другому, это без разницы".
С уважением,
Михаил Каганский

almaster13

Цитата: mikekaganski от 29 мая 2025, 09:02Вот смотрите: у нас разговор не получается. Предложение было очень конкретное:

Цитата: mikekaganski от 30 апреля 2025, 15:58Можно ещё проверить с файлом в другом месте. Можно начать с локального файла; открыть его в другом инстансе LibreOffice (с использованием -env:UserInstallation), а потом проверить макрос.

То есть: ОТКРОЙТЕ ЛОКАЛЬНЫЙ ФАЙЛ. Ладно, проигнорируем, что Вы открыли не LibreOffice (у которого мы знаем код, где происходит блокировка, и можем понять, какие параметры этой блокировки влияют), а МойОфис, где ничего не известно - так ещё и файл не локально, а на сервере (а значит, появляются вопросы по разрешениям и сетевому протоколу). То есть вместо "давайте проверим с минимальным количеством неизвестных" Вы делаете "а я считаю, что если я сделаю всё по другому, это без разницы".

Вероятно, я не понял потому, что я не понимаю слэнг (что такое "инстанс"? Если имеется другая версия ЛибреОфис, то мы уже проверяли, все абсолютно аналогично). Я не могу открыть файл другим пользователем на своем локальном диске, эта возможность у нас заблокирована. Поэтому я не понимаю, что я могу проверить на своем локальном диске. Если я сам открываю файл, к которому обращается макрос, то ошибки макроса не происходит.

mikekaganski

Под словом "инстанс" я подразумевал новый экземпляр процесса LibreOffice. В норме, сколько бы Вы раз не запускали LibreOffice под одним пользовательским сеансом на одной машине, работать будет один процесс. Это происходит из-за того, что каждая попытка открыть новый экземпляр процесса LibreOffice сперва проверяет, нет ли других экземпляров, которые работают с тем же профилем пользователя (именно конкретный профиль пользователя важен). Поэтому чтобы запустить два процесса LibreOffice в одном пользовательском сеансе параллельно, нужно для второго запуска указать новый профиль (а для этого есть аргумент, на который я сослался выше).

И да, если что-то непонятно, лучше переспросить. Какие бы термины не использовались, всегда найдётся кто-то, кто с ними не знаком.
С уважением,
Михаил Каганский

almaster13

Цитата: mikekaganski от 30 апреля 2025, 15:58Можно ещё проверить с файлом в другом месте. Можно начать с локального файла; открыть его в другом инстансе LibreOffice (с использованием -env:UserInstallation), а потом проверить макрос.

Тогда мне придется еще раз переспросить. Как я пытаюсь понять суть эксперимента: переношу файл-источник данных на локальный диск, запускаю его с помощью либре офис. Но каким образом я должен запустить его "с использованием -env:UserInstallation"? А дальше правлю в макросе адрес файла источника и запускаю макрос...?

mikekaganski

Вы запускаете первый экземпляр LO (LibreOffice) с помощью, например, командной строки

"C:\Program Files\LibreOffice\program\soffice" -env:UserInstallation=file:///C:/Users/MyUserName/Temp/LOTest1
и в нём открываете файл. И да, потом запускаете второй экземпляр LO как обычно, проверяете в менеджере процессов, что у Вас работают два отдельных экземпляра soffice.bin (не обращая внимание на "soffice.exe" и "soffice.com"), правите макрос и запускаете.
С уважением,
Михаил Каганский

almaster13

Цитата: mikekaganski от 29 мая 2025, 10:43Вы запускаете первый экземпляр LO (LibreOffice) с помощью, например, командной строки

"C:\Program Files\LibreOffice\program\soffice" -env:UserInstallation=file:///C:/Users/MyUserName/Temp/LOTest1
и в нём открываете файл. И да, потом запускаете второй экземпляр LO как обычно, проверяете в менеджере процессов, что у Вас работают два отдельных экземпляра soffice.bin (не обращая внимание на "soffice.exe" и "soffice.com"), правите макрос и запускаете.

Получается странная вещь. Запускаю команду:
"/lib/libreoffice/program/soffice" -env:UserInstallation=file:///home/user@domen.ru/Загрузки/Недовыработка_АПРЕЛЬ_2025.xlsx

Высвечивается заставка как при запуске офиса, но файл не открывается, в системном мониторе второго процесса softice.bin не появляется. Может команда не верная?

mikekaganski

Да, команда неверная. env:UserInstallation=file:///... указывает на папку для временного профиля, а не на файл для открытия.
С уважением,
Михаил Каганский