Страницы: 1
RSS
Как переменной присвоить значение ячейки Excel
 
Всем доброго времени суток.  
Предистория: хочу автоматизировать повторяющиеся действия.    
 
Ввожу первоначальные данные в Excel. (Прикрепленный документ Исходные данные). Нажимаю кнопку "выполнить". Данные вбиваются в 2 документа в соответствующие места, каждый сохраняется под своим именем в нужном месте, оригинал в своей папке. Так же 1 копия документа выделяется и копируется в Word, сохраняется куда нужно.  
Просидел целый день но не смог сделать что бы передать данные в Word не таблицей. Пришел к варианту код -  
 
Private Sub Ok_Click()  
With ActiveDocument.Content.Find  
.Execute FindText:="XXX1", ReplaceWith:=TextBox1  
.Execute FindText:="XXX2", ReplaceWith:=TextBox2  
......................  
.Execute FindText:="XXXn", ReplaceWith:=TextBoxN  
End With  
End Sub  
 
Тоесть теперь у меня есть уже готовый документ Word (Постановление) и мне нужно прикрепленного документ "Исходные данные" вставить в ворд в определенные места Вместо XXX1 нужные данные.    
 
Вопросы.  
1. Как переменной присвоить значение ячейки Excel.  
2. Как открыть из Excel макроса нужный документ Word.  
3. Может кто чего толковое подскажет как можно осуществить то что я пытаюсь сделать...  
 
В школе хорошо кодил на бейсике (олимпиады) сейчас занимаюсь AutoIT (скрипты). Нужен совет. Либо ссылка на подробное описание лексики VBa.  
 
Заранее спасибо!
 
Исходные данные
 
Sub Макрос1()  
'  
' Макрос1 Макрос  
'  
 
'  
   Range("A1").Select  
   Selection.Copy  
End Sub  
 
Range("A1").Select - выбрать ячейку A1  
Selection.Copy - копировать  
 
Как теперь переключиться на Word?
 
1. Не нужно Select: Range("A1").Copy Если переменной, то: Переменная=Range("A1").value <BR>2. У нас работает поиск: http://yandex.ru/sitesearch?text=%EE%F2%EA%F0%FB%F2%FC+%E4%EE%EA%F3%EC%E5%ED%F2+word&searchid=84804&web=0&lr=22
 
Так с переменной ппонял. Получилось. Ошибка была что копировал и получался пробел x = Лист 1.Cells(1, 1) в Лист1.  
 
Про поиск в курсе но задавал вопрос Excel в ворд. Прочитал много даже пример открытия чистого Word видел . Щас перечитаю ещё. )))  
 
Спасибо что отозвался )))  
Я понимаю что сложно ничего нет но не зная языка и понимаешь что нужно не знаешь какими функциями и приемами...
 
Решил задачу на примере вот этого http://www.planetaexcel.ru/forum.php?thread_id=19286  
 
Юрий М - спасибо большое ) Очень благодарен.  
 
Вот код что получился в итоге - может кому пригодиться...    
 
Sub Макрос1()  
 
Dim sOM As String, sDocNum As String  
Dim WordApp As Object  
 
   sOM = "G:\0. Шаблоны\Постановление.doc"  
   xData = Range("A1").Value  
   xFIO = Range("A2").Value  
   xS = Range("A3").Value  
   xAdr = Range("A4").Value  
   xVidIs = Range("A5").Value  
     
   'sOM = Range("B9").Value  
   'sDocNum = Range("B11").Value  
   On Error Resume Next  
   Set WordApp = GetObject(, "word.application")  
   If WordApp Is Nothing Then  
       Set WordApp = CreateObject("word.application")  
   End If  
   On Error GoTo 0  
   With WordApp  
       .Visible = True  
       .Documents.Open Filename:=sOM  
   End With  
   WordApp.ActiveDocument.Bookmarks("vData").Range.Text = xData  
   WordApp.ActiveDocument.Bookmarks("vFIO").Range.Text = xFIO  
   WordApp.ActiveDocument.Bookmarks("vS").Range.Text = xS  
   WordApp.ActiveDocument.Bookmarks("vAdr").Range.Text = xAdr  
   WordApp.ActiveDocument.Bookmarks("vVidIs").Range.Text = xVidIs  
   Set WordApp = Nothing  
 
End Sub  
 
Код берет из Excel данные ячеек и вставляет их в закладки в Word. Когда получилось оказалось всё проще чем думал.    
 
Если что то вот адрес страницы в контакте - http://vkontakte.ru/popov_sergey_vladimirovich
 
У меня ещё вопрос возник. Итогом этого макроса является открытый документ Word. Ни как не получается его сохранить и закрыть или макроса Excel/ Пишу .Close закрывается Окно Excel откуда был запущен макрос. А как мне дать команду Ворду что бы он сохранился куда нужно и закрылся ?
 
Могу такую цитату предложить - вроде всё есть:  
 
 
Private Sub start_DblClick(Cancel As Integer)  
Dim wordApp As Word.Application  
Dim wordDoc As Word.Document  
Set wordApp = GetObject(, "Word.Application")  
Set wordDoc = wordApp.Documents.Open("D:\Sasha\Test\LetterTemplate.doc")  
wordDoc.CustomDocumentProperties("Position") = "Начальник отдела"  
ActiveDocument.Fields.Update  
wordDoc.SaveAs FileName:="D:\Sasha\Test\1.doc"  
wordDoc.Close  
Set wordDoc = Nothing  
Set wordApp = Nothing  
End Sub
 
Ага спасибо ) Только что получилось, зашел как раз поделиться тоже )))  
 
Sub Макрос1()  
   Dim wd  As New Word.Application  
   Dim dc1 As Word.Document  
 
   xNp = Range("B2").Value  
   xData = Range("B3").Value  
   xFIO = Range("B4").Value  
   xS = Range("B5").Value  
   xAdr = Range("B6").Value  
   xVidIs = Range("B7").Value  
     
   sOM = "G:\0. Шаблоны\Постановление.doc"  
       ' Создать новый экземпляр приложения Word  
   Set dc1 = wd.Documents.Open("G:\0. Шаблоны\Постановление.doc")  
       ' Сделать Word видимым глазу  
   wd.Visible = True  
 
     
   xxData = xData & " № " & xNp  
   wd.ActiveDocument.Bookmarks("vData").Range.Text = xxData  
   wd.ActiveDocument.Bookmarks("vFIO").Range.Text = xFIO  
   wd.ActiveDocument.Bookmarks("vS").Range.Text = xS  
   wd.ActiveDocument.Bookmarks("vAdr").Range.Text = xAdr  
   wd.ActiveDocument.Bookmarks("vVidIs").Range.Text = xVidIs  
     
   dc1.SaveAs "G:\0. Шаблоны\Постановление1.doc"  
     
   dc1.Close  
   
   Set dc1 = Nothing  
   Set wd = Nothing  
 
End Sub  
 
Принцип понял ) И ошибку понял )))
 
В Word есть такая штука, как СЛИЯНИЕ. Может его задействовать?
 
Да Юра читал про неё даже пробовал. Но на сколько я понял - слияние больше подходит для формирование документа из списка: рассылка поздравлений и т.д. где перебирается весь список в цикле и вставляется в нужные места. У меня же это делает 1 раз и трижды пересохраняется документ.    
 
Моя ошибка была с переменными. Щас не помню, но есть сообщение на этом форуме в котором расписана структура документа ворд и эксель. Я его читал раз 6 и только к вечеру понял как то реализовано на VBA ...    
 
Вообщем, очень благодарен всем за помощь ) Форум что наде!!!
 
Как это элементарно, но давно не рабоитала в Exce, многое забыла. Что бы мы делали без инета? Спасибо
 
спасибо, большое. Инфо мне пригодилось
Страницы: 1
Читают тему
Наверх