2013-08-29 2 views
0

У меня есть проект, который принимает несколько документов в качестве входов, выполняет некоторую обработку на них и создает несколько новых документов в конце. В настоящее время у меня возникают проблемы с вставкой содержимого из одного документа Word в другой. Следующий фрагмент кода казалось уместным:VBA Word 2010 Paste Error/No Wait Command

Set refOrigin = FindReference(OriginDoc) 
Set refDest = PasteDoc.Range(PasteDoc.Content.Start, PasteDoc.Content.End) 
refDest.Collapse wdCollapseEnd 
refOrigin.Copy 
refDest.Paste 

При выполнении этого кода, я иногда получить ошибку времени выполнения 4198, Command Failed в пасте строку кода. Однако, когда я перехожу к отладчику, я вижу, что оба refDest и refOrigin являются допустимыми диапазонами. Кроме того, когда я просматриваю код по строкам, он работает. Тем не менее, я могу сказать, что в том случае, когда он не удался, он уже вставил внедренный документ Word.

Я провел некоторое исследование по этим проблемам, и я считаю, что существует некоторая проблема с кодом, который выполняется для быстрого обмена буфером обмена, чтобы не отставать от него. Это имеет смысл для меня, потому что, когда я запускаю макрос из документа на сетевом диске, он работает без сбоев.

Я думал, что могу просто добавить команду wait с Application.Wait, но оказывается, что Word 2010 не поддерживает эту команду; это только в Excel.

У кого-нибудь есть идеи относительно корня этой проблемы, возможных решений или любого способа дать команде Word 2010 команду wait? Благодарю.

+1

проверка [это] (http://stackoverflow.com/questions/16443655/word-deleting-tabe-column-via-vba-macros-gives-an-error/16444492#16444492) подобный вопрос и ответ, который решил проблему ... –

+1

Спасибо. Не знаю, как я пропустил этот. –

ответ

1

Для полноты, следующий код имитирует метод Excel `Application.Wait 'от this вопроса.

Dim tmpStart 
tmpStart = Timer 
Do 
    DoEvents 
Loop While (tmpStart + 1) > Timer