|
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 11
|
|
COM Объект "Word.Application" , копирование частей документа07.05.2013, 20:39. Показов 4835. Ответов 13
Метки нет (Все метки)
у меня в коде для размножения таблиц используются методы word Copy() и Paste(). Но эти методы работают с буфером, т.е берём два паралелно выполняющихся задания на одном компе от одного пользователя и вот первое заносит в буфер строку таблицы из своего документа и успевает вставить 3 строки их 5, и тут второе копирует в буфер свою строку из своего документа, на выходе получим нормальный второй документ а в первом 4 и 5 строки будут левыми скопированные из другого документа и ясен фиг с другими параметрами.
Кто-нить сталкивался и как тогда решал такой вопрос, а кто не сталкивался посоветуйте чем заменить эти методы ворда.
0
|
|
| 07.05.2013, 20:39 | |
|
Ответы с готовыми решениями:
13
Автоматическое копирование фрагментов в документе WORD и перенос их в таблицу документа WORD Объект Word Application Запрет на копирование документа Word? |
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
|
|
| 08.05.2013, 11:50 | |
|
если там просто текст - не перебрасывайте его через буфер - вместо этого запоминайте его в своей переменной.
если нет - можно попробовать покрутить WinAPI Open/CloseClipboard Get/SetClipboardData
0
|
|
|
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 11
|
|
| 08.05.2013, 12:19 [ТС] | |
|
Да даже если и просто текст, надо чтобы сохранялось его форматирование, я за ранее не знаю что будет копироваться, то есть в ворде делаются спец отметки по которым определяется копируемый диапозон
Добавлено через 3 минуты Так то у меня мечта обойтись вообще без буфера. Я так посмотрел про WinApi Clipboard, если я его открою в коде то ворд не сможет в него скопировать при вызове метода области Copy так как буфер типа уже занят для ворда окажеться.
0
|
|
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
|
||
| 08.05.2013, 12:33 | ||
|
excel позволяет копировать напрямую из приемника в назначение. word судя по беглому просмотру документации - нет. то есть даже в пределах одного макроса вы можете попасть на чужие данные (пользователь успел что то скопировать пока программа шла от Copy до Paste). если все это осложнено неизвестностью в отношении типа содержимого буфера нужно искать способ блокировать копирование до тех пор пока не произойдет Paste (полагаю в WinAPI) либо еще раз прочесывать документацию на word
Добавлено через 2 минуты Добавлено через 2 минуты ...в любом случае даже если мы предохраним данные word мы просто убьем данные пользователя Добавлено через 7 минут мб поставить свой перехватчик и задерживать сообщения о копировании?
0
|
||
|
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 11
|
|
| 08.05.2013, 12:36 [ТС] | |
|
Пользователь у нас это юзер от которой запускается серверная служба приложения, ну типа сотрудник жмакает кнопку а выполнение происходит на сервере приложения, и ворд тама же запускается (а то вдруг у юзера ворд древний или вообще нет), получается в теории данные пользователя мы не убиваем как-бы с одной стороны, а с другой одновременные запросы нескольких сотрудников делает аналогичную ситуевину.
Добавлено через 1 минуту Чтото близкое по сути я на msdn нашёл, но походу корректно использовать для моей ситуации не получиться. http://msdn.microsoft.com/ru-r... gment.aspx http://msdn.microsoft.com/ru-r... tfile.aspx
0
|
|
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
|
||
| 08.05.2013, 12:39 | ||
|
запускать каждому пользователю свой сеанс?
Добавлено через 48 секунд
0
|
||
|
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 11
|
|
| 08.05.2013, 12:56 [ТС] | |
|
Ну смотри, есть документ ворда, в нем объявлены параметры для подстановки в виде текста заключенного в {}, для объявления множественной части я использую к примеру <Строка> (в первой колонке) и <Строка/> (в последней), а через эти методы мне какимто образом надо будет удалисть всё кроме нашего копируемого участка, сохранить это как другой документ и уже всталять его.
Чот такая затея не сильно радует, да и я уже подозреваю на сколько это увеличит время выполнения. Добавлено через 7 минут Есть у меня идея такая, перед каждой вставкой (их обычно штуки 4) принудительно повторять метод копирования участка дока в буфер, а после вставки сравнивать области при помощи метода IsEqual, и если не получилося применить метод Undo (отмена последнего действия для документа) и повторно пробывать (ну установить к примеру раз 5 или 10 максимум, или цикл на 5 сек к примеру).
0
|
|
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
|
|
| 08.05.2013, 13:30 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 11
|
|
| 08.05.2013, 13:46 [ТС] | |
|
Ну а ты бы как мне посоветовал сделать?
0
|
|
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
|
|
| 08.05.2013, 13:47 | |
|
я бы попробовал надуть систему покопав в сторону запуска нового сеанса для каждого подключенного пользователя. буфера будут разные и соответственно разные пользователи не встретятся.
0
|
|
|
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 11
|
|
| 08.05.2013, 14:05 [ТС] | |
|
Я тебе щас открою страшную тайну, мое приложение это 1С:Предприятие в клиент-серверном варианте, тут не кого не надуешь. Просто у меня вопрос конкретно по ком объекту поэтому и подумал что и сюда написать можно (вариантов больше наверно).
0
|
|
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
|
||
| 08.05.2013, 14:12 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 11
|
|
| 08.05.2013, 14:27 [ТС] | |
|
На каждое нажатие кнопки на серваке стартует свой экземпляр ворда от одного и тогоже пользователя, ну и сеанс тотже наверно.
Ток не понял что ты имел ввиду "как вариант - если коды клиентов редактируются можно попробовать приостанавливать их если сервер занят задачей другого пользователя"
0
|
|
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
|
|
| 08.05.2013, 14:29 | |
|
...надо полагать это был ап...
0
|
|
| 08.05.2013, 14:29 | |
|
Помогаю со студенческими работами здесь
14
Выборочное копирование из документа Word Получить объект документа Word из Аттача Копирование ячеек из другого документа в формулу и копирование в формата документа, в который копируем (шрифт, размер) Объект Ole показывает только одну страницу документа Word Word.Application. Взаимодействие с word. Добавить общие шаблоны *.dot в папку appdata и в word Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|