Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2010, 18:11   #1
Jaroslav
Форумчанин
 
Регистрация: 08.06.2009
Сообщений: 179
По умолчанию Замена текста на значения из книги ексель

Добрый день.
Как можно заменить в целом документе текст типа
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)
и т. д.
Jaroslav вне форума Ответить с цитированием
Старый 02.09.2010, 18:14   #2
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Можно вместо того текста, что у вас, поставить линки (поля LINK).

Вот рабочий пример такого поля, которое ссылается на ячейку R1C1 (row=1, column=1) файла Книга1.xls, лежащего на Рабочем столе (путь к нему, как и положено в этих полях, записан с удвоением слэшев):

{LINK Excel.Sheet.8 "C:\\Documents and Settings\\наташа\\Рабочий стол\\Книга1.xls" r1c1 \t \a}

{} вводите по Ctrl-F9, а путь и координаты ячеек — свои.

Лишние пробелы (при указании пути) всё "чудо" сводят на нет, так что аккуратненько! Я, для надёжности, копирую путь из свойств файла (щёлкнув по его ярлыку правой кнопкой мыши).

\t — ключ, преобразующий ссылку на ячейки в текст (иначе, без \t, будет её изображение);

\a — автоматически обновляет поле LINK (смысл этого мне не очень ясен: нажав F9, когда курсор на поле {или перед ним}, мы его и так обновляем).

Alt-F9 переключает в документе Word вид полей: значение/код/значение/код/...
Sasha_Smirnov вне форума Ответить с цитированием
Старый 02.09.2010, 19:11   #3
Jaroslav
Форумчанин
 
Регистрация: 08.06.2009
Сообщений: 179
По умолчанию

Спасибо, Саша
Jaroslav вне форума Ответить с цитированием
Старый 06.09.2010, 17:02   #4
Jaroslav
Форумчанин
 
Регистрация: 08.06.2009
Сообщений: 179
По умолчанию

Нашел метод замены через ексель.
Код:
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>".
Подскажите, пожалуйста где я ошибся.
Jaroslav вне форума Ответить с цитированием
Старый 07.09.2010, 15:43   #5
Jaroslav
Форумчанин
 
Регистрация: 08.06.2009
Сообщений: 179
По умолчанию

Вот решения вопроса:
Код:
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
Jaroslav вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос импорта Ексель файлов из папки в листы одной книги с последующим выполнения макросов.СПБ. as-is Microsoft Office Excel 17 17.12.2018 22:37
Замена значений в одной таблице на значения из другой 1134 Microsoft Office Excel 10 09.04.2010 12:12
Передача значения в форму другой книги. Kveldulv Microsoft Office Excel 3 02.04.2010 07:17
Замена части значения ячейки maksim_serg Microsoft Office Excel 4 26.03.2010 12:21
замена текста zetrix Microsoft Office Excel 0 31.10.2006 07:54