Страницы: 1
RSS
VBA данные из excel в word 2010
 
Добрый вечер, уважаемые форумчане.  
Столкнулся со следующей проблемой.  
В 2007 офисе мой код прекрасно работает и выполняет свои функции.  
В 2010 же почему-то не становится документ активным и соответственно макрос вызывает ошибку  
Код прикладываю в файле.  
Буду благодарен любой помощи.  
Заранее спасибо.
 
Вариант 1: не подключена библиотека Microsoft Word 14
 
Подключенные библиотеки:  
Microsoft forms 2.0  
Microsoft Word 14.0  
Microsoft Office 14.0
 
У меня была подобная проблема: делал в Word Закладки и подставлял данные из Excel. При тестировании на домашнем 2007 всё было нормально, а на чужом 2010 что-то не шло (не помню уже что). Победить проблему мне помог ZVI. Сейчас попробую найти тот файл.
 
Через Bookmark когда делал, ошибок не возникало, но сейчас условия изменились и приходится пользоваться find and replace  
Юрий, большое спасибо за помощь.
 
Попробуйте для начала этот код:  
Sub Test()  
 Dim objWord As Object  
 Set objWord = CreateObject("Word.Application")  
 objWord.Visible = True  
 objWord.Tasks("Microsoft Word").Activate  
 Set objWord = Nothing  
End Sub  
Создаётся новый экземпляр Word и активируется
 
СТранно, добавил часть кода, все равно не работает. Вроде и окно стало активным.  
Sub Test()  
Dim objWord As Object  
Set objWord = CreateObject("Word.Application")  
objWord.Visible = True  
objWord.Tasks("Microsoft Word").Activate  
objWord.Documents.Add  
   For i = 0 To 1  
               With ActiveDocument.Content.Find  
                   .Text = "1"  
                   .Forward = True  
                   .Execute  
               If .Found = True Then  
               .Replacement.Text = "2"  
               .Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue  
               End If  
                End With  
   Next i  
Set objWord = Nothing  
End Sub
 
Но главную задачу - активировать Word - решили? :-)  
А в каком документе искать? Не вижу, чтобы открывался конкретный документ.
 
Мож я чего...  
objWord.Documents.Add - мы создаем новый док. А дальше:  
For i = 0 To 1  
With ActiveDocument.Content.Find  
.Text = "1" - откуда такому тексту взяться в новом доке?
Я сам - дурнее всякого примера! ...
 
К сожалению нет, Word 2010 ругается, что "Данная команда не доступна, так как не открыт ни один документ"  
 
 
В оригинале:  
Set oDoc = oWord.Documents.Add(CurrentPath & "\" & Form) 'запускаем форму  
Для быстроты проверки создал новый файл  
objWord.Documents.Add - мы создаем новый док. А дальше:  
For i = 0 To 1  
With ActiveDocument.Content.Find  
.Text = "1" - откуда такому тексту взяться в новом доке?
 
Вы сам документ, в котором нужно искать видите? Он должен быть заранее создан.
 
Всем спасибо за помощь. Проблема решена.  
oWord.Tasks("Microsoft Word").Activate ' делает видимым окно, но не активным  
Этот кусок  
With ActiveDocument.Content.Find  
Заменил на    
With oDoc.Content.Find  
и все заработало.  
Спасибо за помощь
 
{quote}{login=Юрий М}{date=08.09.2012 07:51}{thema=}{post}Вы сам документ, в котором нужно искать видите? Он должен быть заранее создан.{/post}{/quote}  
Да вижу, просто не могу полностью рабочий код выложить, поэтому извините, что немного запутал Вас.
 
Если надумаете реализовать более сложное заполнение документов Word (или других файлов) из Excel,  
можете воспользоваться этой надстройкой:  
 
http://excelvba.ru/programmes/FillDocuments
Страницы: 1
Читают тему
Наверх