Страница 1 из 1

Замена текста в документе Word на значения из книги ексель

Добавлено: 02 сен 2010, 10:25
jaroslav
Добрый день.
Как можно заменить в целом документе Word текст типа
Workbooks("Книга1").Sheets("Лист1").Cells(2, 3)
Workbooks("Книга1").Sheets("Лист2").Cells(5, 7)
Workbooks("Книга1").Sheets("Лист3").Cells(1, 2)
и т. д.
на значения из книги ексель:
Workbooks("Книга1").Sheets("Лист1").Cells(2, 3) (например, 10,2)
Workbooks("Книга1").Sheets("Лист2").Cells(5, 7) (например, -5680,0)
Workbooks("Книга1").Sheets("Лист3").Cells(1, 2) (например, 0,0)
и т. д.

Re: Замена текста в документе Word на значения из книги ексель

Добавлено: 02 сен 2010, 22:20
Busine2009
jaroslav
привет, в др. форуме ты спрашивал:
Как заменить жирний текст "тис. грн." на обычний текст "тис. грн."
Надо добавить в код:

Код: Выделить всё

.Find.Replacement.Text = ""
Иначе может быть ситуация, что текст "тис. грн." будет меняться на др. текст.

Если нужна замена по всему документу (основная часть - maindocument), то используй этот код:

Код: Выделить всё

Sub m_1()
With ActiveDocument.Range.Find
  .Text = "тис. грн."
  .Replacement.Font.Bold = False
  .Format = True
  .MatchCase = False
  .MatchWholeWord = False
  .MatchWildcards = False
  .MatchSoundsLike = False
  .MatchAllWordForms = False
  .Execute Replace:=wdReplaceAll
End With
End Sub
Просто меня забанили в том форуме за плохое поведение.

Re: Замена текста в документе Word на значения из книги ексель

Добавлено: 02 сен 2010, 22:22
Busine2009
По поводу этой темы нужны конкретные примеры, т.к. тяжело понять, что надо сделать.
Т.е. в документе Word есть текст:
Workbooks("Книга1").Sheets("Лист1").Cells(2, 3)
Его надо заменить на значение из Excel, находящего в Excel: Workbooks("Книга1").Sheets("Лист1").Cells(2, 3)?
Завтра гляну на работе.

Re: Замена текста в документе Word на значения из книги ексель

Добавлено: 03 сен 2010, 10:34
jaroslav
Busine2009! Спасибо за ответ в теме "Как заменить жирний текст "тис. грн." на обычний текст "тис. грн."
По поводу темы "Замена текста в документе Word на значения из книги ексель" ты меня правильно понял: в документе Word есть текст:
Workbooks("Книга1").Sheets("Лист1").Cells(2, 3)
Его надо заменить на значение из Excel, находящего в Excel: Workbooks("Книга1").Sheets("Лист1").Cells(2, 3)

Re: Замена текста в документе Word на значения из книги ексель

Добавлено: 03 сен 2010, 20:52
Busine2009
jaroslav
забыл пример взять на работу. Завтра гляну - в выходные.

Re: Замена текста в документе Word на значения из книги ексель

Добавлено: 05 сен 2010, 12:00
Busine2009
jaroslav
нет, не знаю как делать. Вот есть код, может быть его можно как-то переделать:

Код: Выделить всё

Sub m_1()
Dim oExcel As Object
Dim oWorkbook As Object
Dim vАдресЯчейки As String
vАдресЯчейки = Selection.Text
Set oExcel = CreateObject("Excel.Application")
oExcel.Workbooks.Open "E:\_Рабочий стол\Книга1.xls"
Selection.Text = oExcel.Workbooks("Книга1.xls").Sheets("Лист1").Cells(2, 3).Value
oExcel.Workbooks("Книга1.xls").Close
End Sub
Вот эту часть:

Код: Выделить всё

Workbooks("Книга1.xls").Sheets("Лист1").Cells(2, 3)
надо скопировать и вставить из Word. Как это сделать, я не знаю.

Re: Замена текста в документе Word на значения из книги ексель

Добавлено: 05 сен 2010, 12:38
jaroslav
Busine2009, спасибо

Re: Замена текста в документе Word на значения из книги ексель

Добавлено: 06 сен 2010, 17:09
jaroslav
Нашел метод замены через ексель.

Код: Выделить всё

With Word.application
With .Selection.Find
    .ClearFormatting
    .Text = "<9_9*9_9>" ' между 9_9 стоит, например, Лист1!C39
    .Replacement.Text = ""
    .MatchWildcards = True
    .Forward = True
    .Wrap = wdFindContinue
End With
While .Selection.Find.Execute
    kk = Replace(.Selection.Text, "9_9", "")
    Sheets("Лист1").Range("A1").Formula = "=" & kk
    .Selection.Find.Replacement.Text = Workbooks(s3).Sheets(1).Range("A1") ' где s3 - имя активной книги ексель
    .Selection.Find.Execute Replace:=1
Wend
End With
Только есть одна проблема: текст: "Лист1!C39" заменяется на значения из книги ексель только 1 раз. Потом ворд в поле Найти ищет это значения, а не .Text = "<9_9*9_9>".
Подскажите, пожалуйста где я ошибся.

Re: Замена текста в документе Word на значения из книги ексель

Добавлено: 06 сен 2010, 20:59
Busine2009
jaroslav
выложи полностью код, а то ты что-то умное придумал, тяжело сообразить.

Re: Замена текста в документе Word на значения из книги ексель

Добавлено: 07 сен 2010, 15:37
jaroslav
Вот решение вопроса:

Код: Выделить всё

With Word.application
With .Selection.Find
    .ClearFormatting
    .Text = "<9_9*9_9>" ' между 9_9 стоит, например, Лист1!C39
    .Replacement.Text = ""
    .MatchWildcards = True
    .Forward = True
    .Wrap = wdFindContinue
While .Execute
    .Parent.Text = Replace(.Parent.Text, "9_9", "")
    Sheets("Лист1").Range("A1").Formula = "=" & .Parent.Text
    .Parent.Text =  Replace(.Parent.Text, .Parent.Text, Workbooks(s3).Sheets(1).Range("A1"))  ' где s3 - имя активной книги ексель
Wend
End With
End With