Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
92 / 58 / 21
Регистрация: 09.05.2019
Сообщений: 182
1

run time error 521 Нельзя открыть буфер обмена

17.12.2020, 13:22. Показов 1582. Ответов 6

Author24 — интернет-сервис помощи студентам
Добрый день!

Пишу программу, которая объединяет документы Word в единый файл, предварительно их обработав.

Алгоритм программы
1) Открываем документ Word, циклом проходим по абзацам, удаляя все абзацы, которые не удовлетворяют условию.
2) Выделяем все содержимое с первого по последний абзац и копируем его.
3) Закрываем документ с сохранением изменений.
4) Открываем итоговый документ и вставляем в него скопированный текст.
5) Закрываем документ с сохранением изменений.
6) Действия с 1 по 5 выполняем для всех документов Word находящихся в папке.

Программа в Windows 7 работает нормально. При работе в Windows 10 возникает ошибка run time error 521 can't open clipboard.
При чем ошибка возникает не сразу, приложение обрабатывает определенное количество документов и после этого возникает ошибка.

Код программы
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Function proba007(PathName As String)
 
        Dim WordApp As Word.Application ' экземпляр приложения
        Dim WordApp1 As Word.Application ' экземпляр приложения
        Dim DocWord As Word.Document ' экземпляр документа
        Dim DocWord1 As Word.Document ' экземпляр документа
        
        Set WordApp = New Word.Application
        Set WordApp1 = New Word.Application
        'определяем видимость Word-a по True - видимый,
        'по False - не видимый (работает только ядро)
        WordApp1.Visible = False
        Set DocWord1 = WordApp1.Documents.Open(PathName) 'Исходный объединяемый файл
        
        DocWord1.Activate ' активируем документ
        'Копируем документ с первого по последний абзац
        DocWord1.Range(DocWord1.Paragraphs(1).Range.Start, DocWord1.Paragraphs(DocWord1.Paragraphs.Count).Range.End).Copy
                   
       DocWord1.Close True 'Закрываем документ с сохранением изменений
       WordApp1.Quit 'закрываем экземпляр приложения
        
        WordApp.Visible = False
        Set DocWord = WordApp.Documents.Open(ItogFilePathCR)  'Исходный итоговый файл
        DocWord.Activate
        
        'Проверяем, что буфер обмен не пуст, и вставляем содержимое буфера в докумен с позиции последнего абзаца документа
        If Len(Clipboard.GetText) <> 0 Then DocWord.Paragraphs(DocWord.Paragraphs.Count).Range.Paste
       Clipboard.Clear 'очищаем содержимое буфера
                    
        DocWord.Close True 'Закрываем документ сохраняя изменения
        WordApp.Quit 'Закрываем приложение Word
 
        
End Function
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2020, 13:22
Ответы с готовыми решениями:

Run-time error 521 - объект не является коллекцией
Господа помогите. Объект не является коллекцией-что за ошибка.

Run Time Error 13 (Type Mismatch) или Run Time Error 9 (Overflow
Привет! Я столкнулся с такой проблемой. Есть приложение (пользовательская форма), которое...

Ошибка 'Run-time error '-2147217842(80040e4e)' Automation error'.
На VB6.0 сделал несколько форм для вывода данных из базы Access на экран.Выложил на сервер, со...

Ошибка в VB6.0 и Access: 'Run-time error -2147217842(80040e4e) Automation error'.
На Visual Basic 6.0 сделал форму которая выводит на экран данные из таблиц Access.Сделал .EXE и...

6
66 / 59 / 14
Регистрация: 17.11.2013
Сообщений: 233
17.12.2020, 21:30 2
Возможно поможет...
https://www.vbforums.com/showt... oard-error
1
92 / 58 / 21
Регистрация: 09.05.2019
Сообщений: 182
17.12.2020, 22:05  [ТС] 3
SugarTech, спасибо за ответ, но думаю проблема не в этом, так как мы очищаем буфер после каждой вставки скопированного текста, или надо очищать буфер еще перед каждым копированием.
0
92 / 58 / 21
Регистрация: 09.05.2019
Сообщений: 182
19.12.2020, 00:23  [ТС] 4
Уважаемые форумчане, подскажите пожалуйста чем может быть вызвана ошибка run time error 521 Нельзя открыть буфер обмена. Ситуация такая, ошибка возникает не на всех компьютерах. Ошибка возникает не сразу. Программа некоторое время спокойно пользуется буфер обменом (открывая файл копируя оттуда информацию и вставляя в другой файл). После нескольких интераций кооптирования и вставки появляется данная ошибка. Перед каждым копированием и после каждой вставки содержимое буфер обмена очищается.
0
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
19.12.2020, 10:50 5
Может просто не успевает очистится?
Сделай задержку
Не удается открыть буфер обмена (ошибка 521)

Буфер обмена уже открыт другим приложением. Эта ошибка имеет следующую причину и решение:

Другое приложение использует буфер обмена и не передает его вашему приложению. Установите в своем коде ловушку ошибки для этой ситуации и предоставьте окно сообщения с кнопками « Повторить» и « Отмена», чтобы пользователь мог повторить попытку после короткой паузы.
1
92 / 58 / 21
Регистрация: 09.05.2019
Сообщений: 182
27.12.2020, 21:14  [ТС] 6
Подскажите пожалуйста, При вставке скопированного текста в документ Word возникает периодически ошибка "runtime error 5097 ошибка в ворд".

Данная ошибка возникает в этой строке кода, т.е. при вставке скопированного текста:

Visual Basic
1
DocWord.Paragraphs(DocWord.Paragraphs.Count).Range.Paste
Что характерно ошибка возникает только на Windows 10, на Windows7 код отработал правильно и без ошибок.
0
29 / 29 / 0
Регистрация: 05.11.2020
Сообщений: 101
28.12.2020, 07:30 7
В порядке бреда... предположу, что виноваты спекулятивные вычисления. Сам ловил новые версии ОС (начиная от 8-ки и старше) за этим хитрожопым занятием. А посему мое предложение - перед и после обращения к буферу обмена вставлять "DoEvents".
1
28.12.2020, 07:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2020, 07:30
Помогаю со студенческими работами здесь

Ошибка "Run-time error '-2147221020 (800401e4) Automation error invalid syntax
Доброго времени суток! Уважаемые форумчане :). Беда, просто беда. Записываю скрип и потом пытаюсь...

Ошибка: Run-time error 48 Error loading DLL
программа выдает ошибку: Run-time error 48 Error loading DLL выдает это когда вызывается...

Run time error
Помогите, при пустом input.txt выдает run time error... var a,b,c,d:integer; begin assign(input,...

run time error 9
при попытке сгенерировать ans-файл, выдает следующую ошибку...как исправить?

Run time error
Здравствуйте! Помогите разобраться. Вот такая программка. Выдается ошибка на строке...

Run time error 13
Здравствуйте! Есть такой кусок кода Function Acos(ByVal a As Double) As Double If a = 1 Then...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru