С Новым годом! Форум программистов, компьютерный форум, киберфорум
C/C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/22: Рейтинг темы: голосов - 22, средняя оценка - 4.91
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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.05.2013, 20:39
Ответы с готовыми решениями:

Автоматическое копирование фрагментов в документе WORD и перенос их в таблицу документа WORD
Доброго времени суток, дорогие форумчане! На работе образовалась весьма тривиальная задача требующая автоматизации, дабы облегчить...

Объект Word Application
В чем может быть причина того, что объект Word.Application не запускается из asp (Server.CreateObject Failed Server execution failed ) или...

Запрет на копирование документа Word?
я ложу по сети свой документ, созданный в WORD, другому пользователю как сделать чтобы он не мог его корректировать и копировать, а...

13
Модератор
 Аватар для vxg
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
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
08.05.2013, 12:33
excel позволяет копировать напрямую из приемника в назначение. word судя по беглому просмотру документации - нет. то есть даже в пределах одного макроса вы можете попасть на чужие данные (пользователь успел что то скопировать пока программа шла от Copy до Paste). если все это осложнено неизвестностью в отношении типа содержимого буфера нужно искать способ блокировать копирование до тех пор пока не произойдет Paste (полагаю в WinAPI) либо еще раз прочесывать документацию на word

Добавлено через 2 минуты
Цитата Сообщение от alexei366 Посмотреть сообщение
если я его открою в коде
может я не понял схему. так: создаете COM word, что-то выделяете, вызываете метод копирования, делаете вставку куда-то... да, выходит word не доскребется до блокированного буфера...

Добавлено через 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
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
08.05.2013, 12:39
запускать каждому пользователю свой сеанс?

Добавлено через 48 секунд
Цитата Сообщение от alexei366 Посмотреть сообщение
Чтото близкое по сути
очень даже похоже на то что вы ищите, почему не прекручивается
0
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 11
08.05.2013, 12:56  [ТС]
Ну смотри, есть документ ворда, в нем объявлены параметры для подстановки в виде текста заключенного в {}, для объявления множественной части я использую к примеру <Строка> (в первой колонке) и <Строка/> (в последней), а через эти методы мне какимто образом надо будет удалисть всё кроме нашего копируемого участка, сохранить это как другой документ и уже всталять его.
Чот такая затея не сильно радует, да и я уже подозреваю на сколько это увеличит время выполнения.

Добавлено через 7 минут
Есть у меня идея такая, перед каждой вставкой (их обычно штуки 4) принудительно повторять метод копирования участка дока в буфер, а после вставки сравнивать области при помощи метода IsEqual, и если не получилося применить метод Undo (отмена последнего действия для документа) и повторно пробывать (ну установить к примеру раз 5 или 10 максимум, или цикл на 5 сек к примеру).
0
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
08.05.2013, 13:30
Цитата Сообщение от alexei366 Посмотреть сообщение
Ну смотри, есть документ ворда, в нем объявлены параметры для подстановки в виде текста заключенного в {}, для объявления множественной части я использую к примеру <Строка> (в первой колонке) и <Строка/> (в последней), а через эти методы мне какимто образом надо будет удалисть всё кроме нашего копируемого участка, сохранить это как другой документ и уже всталять его.
Чот такая затея не сильно радует, да и я уже подозреваю на сколько это увеличит время выполнения.
*пожимает плечами*
Цитата Сообщение от alexei366 Посмотреть сообщение
Есть у меня идея такая
на мой вкус - адова идея
0
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 11
08.05.2013, 13:46  [ТС]
Ну а ты бы как мне посоветовал сделать?
0
Модератор
 Аватар для vxg
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
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
08.05.2013, 14:12
Цитата Сообщение от alexei366 Посмотреть сообщение
тут не кого не надуешь
почему же. как я понял у вас стоит машина делающая нечто. есть клиенты подключающиеся к этой машине. на машине открывается ворд и что то там молотит в буфер. причем ком настроен так что у всех пользователей один сеанс (ну, наверное ворд стартует от имени системы или админа или пользователь на все предприятие один). ясно что буфер заполняется сразу несколькими человеками. поэтому их надо разнести. как вариант - если коды клиентов редактируются можно попробовать приостанавливать их если сервер занят задачей другого пользователя.
0
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 11
08.05.2013, 14:27  [ТС]
На каждое нажатие кнопки на серваке стартует свой экземпляр ворда от одного и тогоже пользователя, ну и сеанс тотже наверно.
Ток не понял что ты имел ввиду "как вариант - если коды клиентов редактируются можно попробовать приостанавливать их если сервер занят задачей другого пользователя"
0
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
08.05.2013, 14:29
...надо полагать это был ап...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.05.2013, 14:29
Помогаю со студенческими работами здесь

Выборочное копирование из документа Word
Всем привет, разбираюсь с POI дошёл до import org.apache.poi.xwpf.extractor.XWPFWordExtractor; в данном пакете содержаться методы для...

Получить объект документа Word из Аттача
Для получения оного, обычно использую: Set wObj = CreateObject(&quot;Word.Application&quot;) Set emo=doc.GetAttachment(&quot;Lotus.doc&quot;) ...

Копирование ячеек из другого документа в формулу и копирование в формата документа, в который копируем (шрифт, размер)
Добрый вечер. Ребят, возникла проблема при создании Макроса. Обрисовываю ситуацию. Размер и шрифт 1 и 2 документа отличаются. Какая...

Объект Ole показывает только одну страницу документа Word
Моя задача состоит в том, разработать небольшое приложение. На одной из форм я должен разместить объект оле, который будет показывать текст...

Word.Application. Взаимодействие с word. Добавить общие шаблоны *.dot в папку appdata и в word
Добрый день! Подскажите, пожалуйста, возможно ли средствами делфи активировать кнопку &quot;Добавить&quot; (ниже поясняющие скрины) и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Новый 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-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru