Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 27.10.2014
Сообщений: 3
1

Создание макроса для Word со ссылками на элементы библиотеки переводов в Excel

28.10.2014, 10:44. Показов 1675. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!.

начал много и плотно работать с техническими документами на двух языках.
Вспомнил , что когда то давно в университете делали макросы.
Попробовал создать макрос для ворда, что бы он менял выражения.
Например:
"All information about the products and their performances herein are presented on a general level only and therefore"
меняется на "вся информация о продуктах и бла бла бла"
Сделал через find and replace. Все работает, но тут документы начали увеличиваться и я впал в ступор, поскольку не могу понять во всем этом огромном копипаст коде где и что я записал.
Эту тему я почитал , но не врубился как это должно связываться.
Как обратиться из Ворда к ячейке Эксель

Вот как этот код у меня выглядит:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub ZAMENA()
'
' ZAMENA Macro
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "PROPOSAL OF EQUIPMENT FOR"
        .Replacement.Text = "Предложение оборудования"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
и много много копипаста =)
Еще одна проблема в том, чт ослишком большие выражения не проходят через поиск и вылетает ошибка.
Сейчас я прикинул, что хочу сделать ссылку на эксель файл с библиотекой "стандартных" переводов,
и отсортировать его в алфавитно порядке, чт обы если чт оможно было добавлять новые элементы (добавляются насосы или еще какая херь).
Пожалуйста, объясните мне как связаться с файлом эксель для поиска/замены текста из ячейки в ворде.

Добавлено через 17 часов 55 минут
эх... никто не может помочь? =(
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2014, 10:44
Ответы с готовыми решениями:

Создание макроса в Word Excel
Объясните порядок действий при записи макроса, пожалуйста. Средствами Excel записать макрос с...

Создание границы в Excel при вызове макроса из Word'а
Доброго времени суток! Проблема следующая: В Word'е выполняется макрос, который в определённый...

Создание макроса для редактирование текста в Word
Создать макрос, который устанавливает двойной интервал между строками, выравнивает текст по левому...

Задача на создание макроса для Word и Exel
Добрый день, может быть кто-нибудь может помочь с такого рода задачей? Написать макрос,...

6
2785 / 717 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
28.10.2014, 11:35 2
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub ExcelDictionary()
    Dim xl As Object, wbk As Object, wsh As Object
    
    Set xl = CreateObject("Excel.Application")
    Set wbk = xl.Workboos.Open(ThisDocument.Path & "\dict.xlsx")
    Set wsh = wbk.Worksheets(1)
    
    ' Здесь можно обращаться к первому листу "словаря" dict.xlsx
    ' как к объекту с именем wsh
    
    Set wsh = Nothing
    wbk.Close False
    Set wbk = othing
    xl.Exit
    Set xl = Nothing
End Sub
1
0 / 0 / 0
Регистрация: 27.10.2014
Сообщений: 3
28.10.2014, 13:31  [ТС] 3
mc-black,

Спасибо. Я правильно понял, что теперь у меня должен быть файл DICT.XSLX в котором должна быть страница SHEET1?
ПОробовал создать этот файл, кинул его в папку, в Вашем макросе прописал путь к нему. И вместо зеленого текста вставил поиск текста replace. Но у меня ни фига не фурычит - программист из меня никакой.
Я загрузил пример ,если не сложно - посмотрите пожалуйста
Вложения
Тип файла: xlsx dict.xlsx (13.0 Кб, 8 просмотров)
Тип файла: doc Например.doc (26.0 Кб, 11 просмотров)
0
Заблокирован
28.10.2014, 14:27 4
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Sub ExcelDictionary()
    Dim xl As Object, wbk As Object, wsh As Object, rn As Object, r As Long
    
    Set xl = CreateObject("Excel.Application")
    Set wbk = xl.Workbooks.Open(ThisDocument.Path & "\dict.xlsx")
    Set wsh = wbk.Worksheets(1)
    Set rn = wsh.Cells
    For r = 2 To 65536
      If rn(r, 1) = "" Then Exit For
      With Selection.Find
          .ClearFormatting
          .Replacement.ClearFormatting
          .Text = rn(r, 1)
          .Replacement.Text = rn(r, 2)
          .Forward = True
          .Wrap = wdFindContinue
          .Format = False
          .MatchCase = False
          .MatchWholeWord = False
          .MatchWildcards = False
          .MatchSoundsLike = False
          .MatchAllWordForms = False
          .Execute Replace:=wdReplaceAll
      End With
    Next r
    Set rn = Nothing
    Set wsh = Nothing
    wbk.Close False
    Set wbk = Nothing
    xl.Quit 'exit?
    Set xl = Nothing
End Sub
2
2785 / 717 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
28.10.2014, 14:49 5
Попробуйте этот макрос вставить в стандартный модуль документа Word или в normal.dot. Макрос работает с активным документом:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Sub ExcelDictionary()
    Dim xl As Object, wbk As Object, wsh As Object
    Dim dict(), i As Long
    
    Set xl = CreateObject("Excel.Application")
    Set wbk = xl.Workbooks.Open(ThisDocument.Path & "\dict.xlsx")
    Set wsh = wbk.Worksheets(1)
    
    ' Получить содержание словаря в массив
    dict = wsh.Cells(2, 1).Resize(wsh.Cells(wsh.Rows.Count, 1).End(-4162).Row - 1, 1).Value
    
    Set wsh = Nothing
    wbk.Close False
    Set wbk = Nothing
    xl.Quit
    Set xl = Nothing
    
    ' Перебрать весь словарь, заменять все найденные пары
    With ActiveDocument.Content.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        For i = 1 To UBound(dict, 1)
            .Text = dict(i, 1)
            .Replacement.Text = dict(i, 1)
            .Execute Replace:=wdReplaceAll
        Next
    End With
End Sub
Протестировано на представленном примере.

Добавлено через 59 секунд
P.S. Меня опередили )))

Добавлено через 19 минут
У меня 32 строка должна выглядеть как:
Visual Basic
1
.Replacement.Text = dict(i, 2)
Добавлено через 30 секунд
Иначе замены не произойдет..
1
0 / 0 / 0
Регистрация: 27.10.2014
Сообщений: 3
28.10.2014, 15:05  [ТС] 6
Апострофф и mc-black,

Огромная Вам благодарность!

Лень очередной раз победила!
Шеф будет просто в шоке, от того как быстро переводятся эти большие документы))

Добавлено через 2 минуты
НА всякий случай оставлю ТЭГи для поисковиков(как я сам искал подобный маркос):

Макрос замены текста в word из библиотеки excel.
Макрос замены в word из книги excel.

Тему можно закрывать.
0
2785 / 717 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
28.10.2014, 16:52 7
Правилами форума, если не ошибаюсь, темы теперь не закрываются по просьбе пользователя.
0
28.10.2014, 16:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2014, 16:52
Помогаю со студенческими работами здесь

Создание макроса для открытия существующего шаблона Word из Exel
Добрый день! Не знаю точно к какой теме относится этот вопрос, но главная проблема у меня...

Подскажите библиотеки для чтения из файлов Word и Excel
Здравствуйте, подскажите библиотеки для чтения из файлов Word(doc, docx) и Excel и записи в них на...

Создание COM библиотеки для VBA(Excel)
Добрый день! Подскажите пожалуйста, кто сталкивался с подобным и как это решается: пытаюсь...

Запуск макроса Excel в Word
Здравствуйте, пишет с просьбой о помощи вам девушка, которая далека от программирования примерно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru