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

Копирование изображений Word VBA

22.05.2014, 13:40. Просмотров 3054. Ответов 12
Метки нет (Все метки)

Здравствуйте. Есть проблема при копировании картинок из одного документа word в другой. Суть задачи состоит в том чтобы в активном доке отыскать первую картинку (документ содержит таблицы и картинки), скопировать ее и вставить в другой документ с подписью" Рисунок А-1". Код написанный вылетает с ошибкой:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim pathFile As String
 
Sub Picture()
 
pathFile = ActiveDocument.FullName
Documents.Open FileName:="C:\1.docx"
 
Documents(pathFile).Activate
 ActiveDocument.InlineShapes(1).Range.Copy
 
Documents("C:\1.docx").Activate 
 ActiveDocument.Range.Paste 
 
End Sub
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2014, 13:40
Ответы с готовыми решениями:

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

Копирование содержимого word в word из Excel с макросом
Ребят, добрый вечер! Подскажите,. пожалуйста, мне надо по сути создать копию документа WORD из...

Выборка из текста (файл ms word) предложений и копирование в новый файл (ms word) с определенным форматом
Добрый день. Очень нужна помощь в создании макроса. Есть файлы в которых содержатся вопросы и...

Редактирование изображений на VBA
Появилась необходимость программно на VBA модифицировать картинку. Т.е. нужно загрузить картинку...

12
14924 / 6325 / 1721
Регистрация: 24.09.2011
Сообщений: 9,977
22.05.2014, 14:43 2
Nazhitkov, какая ошибка, в какой строке?
Может, не InlineShapes(1), а Shapes(1)?
0
0 / 0 / 0
Регистрация: 23.04.2014
Сообщений: 23
22.05.2014, 14:53  [ТС] 3
Казанский,Ошибка в этой строчке
Цитата Сообщение от Nazhitkov Посмотреть сообщение
ActiveDocument.InlineShapes(1) .Range.Copy
. Пишет Method or data member not found. Попробовал поменять на shapes(1),то же.

Добавлено через 6 минут
Казанский, извиняюсь, при исходной строчке с InlineShapes(1) пишет ошибку "Метод или свойство недоступны, поскольку выделенный текст отсутствует"
0
5331 / 1397 / 330
Регистрация: 23.12.2010
Сообщений: 2,073
Записей в блоге: 1
22.05.2014, 15:05 4
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub Picture()
 Dim pathFile As String
 With ActiveDocument
    If .InlineShapes.Count > 0 Then
        .InlineShapes(1).Select
        Selection.Copy
    ElseIf .Shapes.Count > 0 Then
        .Shapes(1).Select
        Selection.Copy
    End If
    pathFile = .FullName
 End With
 Documents.Open FileName:="C:\temp\1.docx"
 Selection.Paste
End Sub
1
0 / 0 / 0
Регистрация: 23.04.2014
Сообщений: 23
22.05.2014, 15:20  [ТС] 5
KoGG, Спасибо,копирование работает.А в чем разница Shapes от InlineShapes?
0
5331 / 1397 / 330
Регистрация: 23.12.2010
Сообщений: 2,073
Записей в блоге: 1
22.05.2014, 15:46 6
InlineShape - установлено обтекание фигуры в тексте,
Shape - установлено любое другое обтекание (даже если это один и тот же рисунок или фигура).
0
0 / 0 / 0
Регистрация: 23.04.2014
Сообщений: 23
22.05.2014, 15:55  [ТС] 7
KoGG, Спасибо!А не подскажите как сделать подпись для каждого нового вставленного рисунка в формате А1,А2,А3...и т.д.?
0
5331 / 1397 / 330
Регистрация: 23.12.2010
Сообщений: 2,073
Записей в блоге: 1
22.05.2014, 17:10 8
1 раз создать в документе название "А" (вдобавок к "Рисунок", "Таблица")
Visual Basic
1
CaptionLabels.Add Name:="А"
Можно и руками.
После каждого копирования рисунка добавить строку
Visual Basic
1
    Selection.InsertCaption Label:="А", TitleAutoText:="InsertCaption1", Title:="", Position:=wdCaptionPositionBelow, ExcludeLabel:=0
1
0 / 0 / 0
Регистрация: 23.04.2014
Сообщений: 23
23.05.2014, 11:21  [ТС] 9
KoGG, Спасибо за ответы,а можно ли еще в подпись вставить переменную?Например "Рисунок А1 Помещение 11",где номер помещения есть переменная?

Добавлено через 15 минут
Казанский, можно ли еще в подпись вставить переменную?Например "Рисунок А1 Помещение 11",где номер помещения есть переменная? (простите за назойливость)
0
5331 / 1397 / 330
Регистрация: 23.12.2010
Сообщений: 2,073
Записей в блоге: 1
23.05.2014, 12:12 10
В подпись с автонумерацией переменную, задействованную в макросе, вставить можно, но во всех подписях будет значение переменной на момент вставки. Надо просто допечатывать текст после подписи с автонумерацией.
0
0 / 0 / 0
Регистрация: 23.04.2014
Сообщений: 23
23.05.2014, 12:23  [ТС] 11
KoGG, хорошо,но вот только у меня название заменяет картинку вставленную. Я еще так понял что нельзя присвоить значение переменной и с ним работать? Вот код что у меня вышел
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
Dim pathFile As String
Sub Picture()
 With ActiveDocument
     
     If .InlineShapes.Count > 0 Then
        .InlineShapes(1).Select
        Selection.Copy
    ElseIf .Shapes.Count > 0 Then
        .Shapes(1).Select
        Selection.Copy
    End If
    pathFile = .FullName
 End With
 Documents.Open FileName:="C:\ad.docx"
 Selection.Paste
 Selection.InsertCaption Label:="А", TitleAutoText:="", _
         Title:=" Помещение ", _
         Position:=wdCaptionPositionBelow, ExcludeLabel:=0
         
Documents(pathFile).Activate
 
ActiveDocument.Tables(1).cell(1, 1).Range.Copy ' как копировать значение ячейки, а не саму ячейку?
 
Documents("C:\ad.docx").Activate
ActiveDocument.Range.Paste
End Sub
0
5331 / 1397 / 330
Регистрация: 23.12.2010
Сообщений: 2,073
Записей в блоге: 1
23.05.2014, 14:53 12
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
Sub Picture()
 Dim Strtemp As String
 With ActiveDocument
    If .InlineShapes.Count > 0 Then
        .InlineShapes(1).Select
        Selection.Copy
    ElseIf .Shapes.Count > 0 Then
        .Shapes(1).Select
        Selection.Copy
    End If
    pathFile = .FullName
    Strtemp = " " & Replace(.Tables(1).Cell(1, 1).Range.Text, Chr(7), "")
 End With
 Documents.Open FileName:="C:\temp\1.docx"
 With Selection
    .Paste
    .Collapse Direction:=wdCollapseEnd
    .TypeParagraph
    .Collapse Direction:=wdCollapseEnd
    .InsertCaption Label:="À", TitleAutoText:="", _
            Title:=" Ïîìåùåíèå ", _
            Position:=wdCaptionPositionBelow, ExcludeLabel:=0
    .Collapse Direction:=wdCollapseEnd
    .TypeText Text:=Strtemp
 End With
End Sub
Еще никому не удавалось сносно работать с макросами Word и не заглядывать в справку по VBA для Word. Почитайте хотя бы азы.
1
0 / 0 / 0
Регистрация: 23.04.2014
Сообщений: 23
23.05.2014, 15:14  [ТС] 13
KoGG, Я научился работать с Range,но с Selection пока не очень освоился.Буду дальше изучать,может что то и выйдет.Спасибо еще раз огромное.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2014, 15:14

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

Генерация таблицы изображений Word
Доброго времени суток! Задача состоит в следующем: вставляем n-ное количество изображений в...

Копирование в EXcel VBA
На кнопочке в Excel есть данный макрос: With Worksheets("Лист1") Range(.Cells(3, 1),...

Копирование в Access VBA
Проблема вот в чём: Есть форма(пусть будет Form1) и подчинённая форма в виде таблицы (Form2)....

Копирование из Word в Outlook VBA
Всем привет, я дилетант, от слова совсем. Первый раз столкнулся с макросами в целом. На данный...


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

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

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