Страницы: 1
RSS
Excel to word цикл по значению?
 
Здравствуйте!  
Подскажите есть документ ексель в столбце А идентификатор по которому можно определить брать значение этой строки или нет (галочка), есть документ ворд в который эти самые значения нужно записывать и распечатывать. Помогите такое реализовать.  
Спасибо!  
 
Файл с примером приложил.
 
Забыл, то что есть:  
Sub TestExcelToWordPrint()  
Dim objWord As Word.Application  
Dim objDocument As Word.Document  
   
Set objWord = CreateObject("Word.Application")  
If Err.Number Then  
  MsgBox "Íå íàéäåí äîêóìåíò C:\DocName.doc"  
  Exit Sub  
End If  
   
Set objDocument = objWord.Documents.Open(Filename:="C:\DocName.doc")  
   
Set myRange = objDocument.Content  
   
myRange.Find.ClearFormatting  
   
myRange.Find.Execute FindText:="!Çíà÷åíèå1", ReplaceWith:=Sheets(1).Cells(1, 1).Text, Replace:=wdReplaceAll  
myRange.Find.Execute FindText:="!Çíà÷åíèå2", ReplaceWith:=Sheets(1).Cells(2, 1).Text, Replace:=wdReplaceAll  
 
   
objWord.Visible = True  
   
Set myRange = Nothing  
Set objDocument = Nothing  
Set objWord = Nothing  
objWord.Quit  
End Sub
 
Да с Quit перепутал. Про остальное не знал. Спасибо за разъяснение.  
Может быть я не понял, но зачем для примера файл doc , тк я предпологал замену по значению, из кода видно, что !Значение1 в doc заменится на значение в ячейке А1.
 
Уточню в док файле всего 5 замен - 4 = !Значение1 и 1 = !Значение2
 
Ругается на 2 End With  
End With  
End With  
Next li
 
ошибка:  
End with without with
 
{quote}{login=The_Prist}{date=24.06.2010 11:18}{thema=}{post}Я писал в форум не проверяя, ...Ну или...{/post}{/quote} Генератор ответов сбойнул?:-)
Я сам - дурнее всякого примера! ...
 
Ну, убирал я, все равно ошибка.
 
Вышло вот так, но ругается 438 - объект не поддерживает этот метод или свойство  
и ругается на строчку    
asArr = Range("A1:C" & Cells(Rows.Count, 1).ens(xlUp).Row)  
 
 
 
Sub TestExcelToWordPrint()  
Dim objWord As Object, objDocument As Object  
Dim asArr, li As Long  
 
asArr = Range("A1:C" & Cells(Rows.Count, 1).ens(xlUp).Row)  
Set objWord = CreateObject("Word.Application")  
If Err.Number Then  
MsgBox "C:\DocName.doc"  
Exit Sub  
End If  
 
Application.ScreenUpdating = False  
Set objDocument = objWord.Documents.Open(Filename:="C:\DocName.doc")  
Set myRange = objDocument.Content  
For li = 1 To UBound(avarr, 1)  
If avarr(li, 1) = "a" Then  
With myRange.Find  
.ClearFormatting  
.Execute FindText:=avarr(li, 2), ReplaceWith:=avarr(li, 3), Replace:=wdReplaceAll  
End With  
End If  
Exit For  
Next li  
 
objWord.Quit  
Set myRange = Nothing: Set objDocument = Nothing: Set objWord = Nothing  
Application.ScreenUpdating = True  
End Sub
 
В Вашем случае тоже ругается на ту же строку.
 
Да, не сам, нашел в инете на форуме, скорее не внимательность не увидел орф ошибку, но я заменил Ваши avarr на asarr), а так, конечно, не знаю я вба))  
 
В файле видно как отрабатывает макрос)акромя строк 7,8,9 - остальное не знаю что такое вообще)  
 
Вопрос все же был связан и с печатью, т.е. например: выделили мы ячейку а2 нажали на кнопку данные из этой строки перенеслись в ворд с заменой и печать.  
 
Спасибо за помощь.
 
вот файл.
 
Да, не додумал до конца алгоритм, цикл не нужен.    
Лист ексель такой какой есть,данные для переноса в ворд в столбцах С,D,Е,F,G, далее выделяем ячейку А5 нажимаем на кнопку "печать" - данные передаются в ворд и документ распечатывается. Т.е. данные передаются из той строки в которой выделена ячейка в столбце А.
 
to: The_Prist  
 
Поможете?!
 
плохой файл?  
 
Спасибо
 
Да, действительно. посмотрел, виноват)
 
Метка - это столбец просто так назвал.  
А так как было так и остается:  
 
Данные для переноса в ворд в столбцах С,D,Е,F,G, далее выделяем, например, ячейку А5, нажимаем на кнопку "печать" - данные передаются в ворд и документ распечатывается.    
 
Т.е. данные передаются из той строки в которой выделена ячейка в столбце А.
 
На примере файла:  
В файле ворд есть метки FIO, data1, data2, data3, data4.  
 
Выделяем ячейку А2 - нажимаем кнопку "печать" - в файле ворд метки заменяются значениями в соответствующих столбцах строки 2 (потому как выделенная ячейка А2).  
 
т.е. "FIO" в ворде заменяется на "Иванов"  
 
    "data1" в ворде заменяется на "100"  
и тд.
 
А может тут вообще слиянием можно обойтись?
 
Спасибо, пробую.  
 
Про слияние читал, но думаю - не получится.
 
The_Prist  
 
переносятся в ворд только FIO, остальное так и остается data1,data2,data3,data4
 
да, действительно, спасибо)  
еще вопросик), на печати вместо Иванов - ИВАНОВ  
kind moder
 
Спасибо, попробую поискать.
Страницы: 1
Читают тему
Наверх