|
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 11
|
|
COM Объект "Word.Application" , копирование частей документа07.05.2013, 20:39. Показов 4748. Ответов 13
Метки нет (Все метки)
у меня в коде для размножения таблиц используются методы word Copy() и Paste(). Но эти методы работают с буфером, т.е берём два паралелно выполняющихся задания на одном компе от одного пользователя и вот первое заносит в буфер строку таблицы из своего документа и успевает вставить 3 строки их 5, и тут второе копирует в буфер свою строку из своего документа, на выходе получим нормальный второй документ а в первом 4 и 5 строки будут левыми скопированные из другого документа и ясен фиг с другими параметрами.
Кто-нить сталкивался и как тогда решал такой вопрос, а кто не сталкивался посоветуйте чем заменить эти методы ворда.
0
|
|
| 07.05.2013, 20:39 | |
|
Ответы с готовыми решениями:
13
Автоматическое копирование фрагментов в документе WORD и перенос их в таблицу документа WORD Объект Word Application Запрет на копирование документа Word? |
|
Модератор
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
|
|
| 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
|
|
|
Модератор
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
|
||
| 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
|
|
|
Модератор
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
|
||
| 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
|
|
|
Модератор
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
|
|
| 08.05.2013, 13:30 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 11
|
|
| 08.05.2013, 13:46 [ТС] | |
|
Ну а ты бы как мне посоветовал сделать?
0
|
|
|
Модератор
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
|
|
| 08.05.2013, 13:47 | |
|
я бы попробовал надуть систему покопав в сторону запуска нового сеанса для каждого подключенного пользователя. буфера будут разные и соответственно разные пользователи не встретятся.
0
|
|
|
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 11
|
|
| 08.05.2013, 14:05 [ТС] | |
|
Я тебе щас открою страшную тайну, мое приложение это 1С:Предприятие в клиент-серверном варианте, тут не кого не надуешь. Просто у меня вопрос конкретно по ком объекту поэтому и подумал что и сюда написать можно (вариантов больше наверно).
0
|
|
|
Модератор
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
|
||
| 08.05.2013, 14:12 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 11
|
|
| 08.05.2013, 14:27 [ТС] | |
|
На каждое нажатие кнопки на серваке стартует свой экземпляр ворда от одного и тогоже пользователя, ну и сеанс тотже наверно.
Ток не понял что ты имел ввиду "как вариант - если коды клиентов редактируются можно попробовать приостанавливать их если сервер занят задачей другого пользователя"
0
|
|
|
Модератор
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
|
|
| 08.05.2013, 14:29 | |
|
...надо полагать это был ап...
0
|
|
| 08.05.2013, 14:29 | |
|
Помогаю со студенческими работами здесь
14
Выборочное копирование из документа Word Получить объект документа Word из Аттача Копирование ячеек из другого документа в формулу и копирование в формата документа, в который копируем (шрифт, размер) Объект Ole показывает только одну страницу документа Word Word.Application. Взаимодействие с word. Добавить общие шаблоны *.dot в папку appdata и в word Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|