Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 137
1

Работа с Word и Exel через макрос, который запускается в Exel

14.05.2017, 13:18. Просмотров 3848. Ответов 5
Метки нет (Все метки)

Есть задача: проводятся расчеты в Эксель и из него открывается документ Ворд(эта часть работает), копируется таблица из Эксель и вставляется в Ворд вместо определенной фразы, уже в Ворде после вставки совершаются определенные действия и мы обратно возвращаемся в Эксель.
Уже осмотрела все на эту тему, и подключила библиотеки, но не работает переход для работы в Ворд. Есть подозрение, что я неправильно назначила переменные.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim Wb1 As Workbook
    Dim objWrdApp As Object
    Dim Wb2 As Document
    
    Set Wb1 = ActiveWorkbook
    On Error Resume Next
    Set objWrdApp = GetObject(, "Word.Application")
    If objWrdApp Is Nothing Then
    Set objWrdApp = CreateObject("Word.Application")
    MsgBox ("Выберите шаблон Ворд")
    Set Wb2 = objWrdApp.Documents.Open(Application.GetOpenFilename()) ' переменная для ворда
    objWrdApp.Visible = True
    End If
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Wb2.Activate ' переход в документ ворд
    
    Dim findText As String ' поиск слова
    findText = "Вставка таблицы"
 
    Application.Selection.Find.ClearFormatting
 
    If Application.Selection.Find.Execute(findText) = True Then
        Selection.Paste ' вставка на выделенную фразу таблицы из Эксель
    End If
    
    Selection.InsertBreak Type:=wdPageBreak ' разрыв сраницы и вставка нужной фразы, после которой мы опять возвращаемся в цикл Экселя
    Selection.TypeText Text:="Вставка таблицы"
Прошу о помощи, потому что сама уже не знаю где посмотреть на эту тему.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.05.2017, 13:18
Ответы с готовыми решениями:

Копирование построчно из Word в Exel через VBA
Доброго времени суток. Задача состоит в следующем - есть файл Word и файл Excel. В ворде написан...

Макрос: из PowerPoint развернуть Exel и вызвать уже в нём макрос
Собственно сабж. Работая в презентации PowerPoint нужно по клику на кнопку с прикреплённым макросом...

Написать макрос в Exel
Сам текст задания звучит так: В транспортной компании работают водители грузовых автомобилей....

Напишите макрос для Exel
Напишите макрос автозаполнения строки по диагонали для Exel

5
11013 / 3463 / 598
Регистрация: 13.02.2009
Сообщений: 10,305
15.05.2017, 10:16 2
Application, Selection без указания родителя не будут работать адекватно так как в екселе тоже имеются такие понятия
должно быть примерно так:
Visual Basic
1
 Wb2.Selection...
0
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 137
16.05.2017, 01:23  [ТС] 3
К сожалению по-прежнему не работает...
Сейчас код выглядит так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Wb2.Activate ' переход в документ ворд
    
    Dim findText As String ' поиск слова
    findText = "Вставка таблицы"
 
    Wb2.Application.Selection.Find.ClearFormatting
 
    If Wb2.Application.Selection.Find.Execute(findText) = True Then
        Wb2.Selection.Paste ' вставка на выделенную фразу таблицы из Эксель
    End If
    
    Wb2.Selection.InsertBreak Type:=wdPageBreak ' разрыв сраницы и вставка нужной фразы, после которой мы опять возвращаемся в цикл Экселя
    Wb2.Selection.TypeText Text:="Вставка таблицы"
Добавлено через 3 часа 27 минут
Через остановку макроса проверила, где именно глюк
код выглядит сейчас так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
Wb2.Tasks("Microsoft Word").Activate ' переход в документ ворд
    
    Dim findText As String ' поиск слова
    findText = "Вставка таблицы"
 
    Wb2.Application.Selection.Find.ClearFormatting
 
    If Wb2.Application.Selection.Find.Execute(findText) = True Then
        Wb2.Application.Selection.Find.Execute(findText).Paste ' вставка на выделенную фразу таблицы из Эксель
    End If
тормозит на этой строке
Visual Basic
1
Wb2.Application.Selection.Find.Execute(findText).Paste
Когда поставила вместо нее эту строку
Visual Basic
1
Wb2.Range.Paste
вставка произошла, но не вместо выделенной фразы, а сразу на весь документ(то, есть стерло все). Кто-нибудь сталкивался с этим? Как поставить таблицу на Selection?
0
137 / 115 / 27
Регистрация: 12.02.2017
Сообщений: 308
16.05.2017, 17:44 4
А так пробовали?

Visual Basic
1
If Wb2.Selection.Find.Execute(findText) Then Wb2.Selection.Paste
0
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 137
16.05.2017, 20:33  [ТС] 5
Visual Basic
1
2
If Wb2.Application.Selection.Find.Execute(findText) = True Then
Wb2.Selection.Paste
Пробовала так(тоже не работало). Разве это не одно и то же?

Добавлено через 2 часа 45 минут
Проверила и вариант, который прислали Вы - не работает.
0
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 137
20.05.2017, 22:13  [ТС] 6
Разобралась...чтобы заработало надо добавить Application
В итоге код выглядит так:
Visual Basic
1
Wb2.Application.Selection.Paste
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2017, 22:13

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Макрос для Exel функции если
Уважаемые форумчане срочно нужна Ваша помощь в написание макроса для функции если, значений для...

Макрос в Exel, преобразующий таблицу в текст
Здравствуйте! Раньше я делал так: выделял кусок таблицы в Exel вставлял в Word выделял...

из Word в Exel
Помогите пожалуйста, необходимо написать макрос, который будет брать из 500+ Word файлов таблицы и...

таблица из exel в word
Имеется: - Книга из одного листа, с предварительным форматированием. Нужно: -вывести в виде...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.