Страницы: 1
RSS
Как из макроса Excel назначить активным один из нескольких документов Word
 
Добрый день (утро, вечер...)  
Есть такая задача: с листа Excel скопировать несколько таблиц в Word (каждую в отдельный документ) и для каждого документа запустить макрос Word. Копирование проблем не вызывает, а вот при запуске макросов в Word запускаются все макросы только для самого первого документа. Что тут не так, как можно решить данную проблему?    
 
Пишу следующее:  
 
   Set wa1 = CreateObject("Word.Application")  
   wa1.Visible = True: Set wd1 = wa1.Documents.Add  
 
  Range("A:G").Copy  
   wa1.Selection.PasteExcelTable False, False, False    
  Application.CutCopyMode = False  
 
Dim wbApp1 As Object  
Set wbApp1 = GetObject(, "Word.Application")  
wbApp1.Run "Макрос1"  
 
  Set wa2 = CreateObject("Word.Application")  
   wa2.Visible = True: Set wd2 = wa2.Documents.Add  
 
  Range("I:O").Copy  
   wa2.Selection.PasteExcelTable False, False, False  
  Application.CutCopyMode = False  
 
Dim wbApp2 As Object  
Set wbApp2 = GetObject(, "Word.Application")  
wbApp2.Run "Макрос2"  
 
Заранее спасибо
 
Одного понять не могу - зачем в коде эти строки:  
 
Dim wbApp1 As Object  
Set wbApp1 = GetObject(, "Word.Application")  
 
Set wa2 = CreateObject("Word.Application")  
 
Dim wbApp2 As Object  
Set wbApp2 = GetObject(, "Word.Application")  
 
 
Вы один раз создали объект Word - вот и пользуйтесь им:  
Set wa1 = CreateObject("Word.Application")  
и в этом экземпляре Word и создавайте все нужные документы.  
 
Только макрос в Word в этом случае надо будет подправить  
 
------------  
 
Чтобы ваш код заработал без излишних правок, попробуйте так:  
 
Set wa1 = CreateObject("Word.Application")  
wa1.Visible = True: Set wd1 = wa1.Documents.Add  
 
Range("A:G").Copy  
wa1.Selection.PasteExcelTable False, False, False    
Application.CutCopyMode = False  
 
wa1.Run "Макрос1"  
 
 
Set wa2 = CreateObject("Word.Application")  
wa2.Visible = True: Set wd2 = wa2.Documents.Add  
 
Range("I:O").Copy  
wa2.Selection.PasteExcelTable False, False, False  
Application.CutCopyMode = False  
 
wa2.Run "Макрос2"
 
Большое спасибо за помощь! Все прекрасно работает
Страницы: 1
Читают тему
Наверх