1

Тема: Как в файле Ворд одновременно изменить размеры всех картинок?

Скачал с вебстраницы текст и прилагающиеся к нему фото, и сохранил все это в файле Ворд - .doc
Но все картинки ужасно большие. Есть ли возможность уменьшить размер, предположим для первой картинки, и задать : "Применить ко всем картинкам в этом файле" А то там 150 фото, и муторно каждое подгонять по отдельности...
Пользуюсь давно 2003-им.

2

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

Когда-то давно нашел следующий макрос. В случае, если 100% рисунка меньше ширины страницы, макрос выбирает 100%, а если 100% рисунка больше ширины страницы - то ширину страницы. Надеюсь, что он еще работает. smile
Если что - подкорректируйте с учетом своей задачи.

Sub ScalePic()
Dim inshp As InlineShape
    For Each inshp In ActiveDocument.InlineShapes
        Select Case inshp.Type
            Case 3, 4, 12, 13
            If inshp.ScaleWidth <> 100 Then
                inshp.Select
                    inshp.ScaleWidth = 100
                    inshp.ScaleHeight = 100
                    If inshp.Width > ColumnWidth(inshp) Then
                        inshp.Width = ColumnWidth(inshp)
                        inshp.ScaleHeight = inshp.ScaleWidth
                    End If
            End If
        End Select
    Next inshp
End Sub

Public Function ColumnWidth(inshp As InlineShape) As Single
Dim l As Single, r As Single, p As Single
    p = inshp.Range.PageSetup.PageWidth
    l = inshp.Range.PageSetup.LeftMargin
    r = inshp.Range.PageSetup.RightMargin
        ColumnWidth = p - (l + r)
End Function
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

3

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

Я в этом деле совершенно профан. Открыл команду Макросы и куда-то влепил этот код.
И теперь все время после закрытия файла ворд открывается какой то Visual Basic - и я никак не могу от этого избавится. Что это за хрень? Как избавиться от этого?

4

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

Добрый день, fairum!
Я очень сожалею, что так получилось. Данный макрос не мог вызвать нарушений в работе программы Word. Я ее применял неоднократно, и никаких проблем мне она не создавала.
Надеюсь, описанная вами проблема возникла однократно и больше не повторялась.

Я в этом деле совершенно профан. Открыл команду Макросы и куда-то влепил этот код.

А вообще-то, если вам это интересно, изучайте макросы.
Например, посмотрите, пожалуйста, здесь:
http://wordexpert.ru/forum/viewtopic.php?id=1342
Написано для версий 2007/2010, но и вам для версии 2003 многое тоже может быть полезно.

И еще: прочитайте инструкцию по использованию макросов в 6-й главе из книги основателя нашего портала Антона Кокина "Word 2003/2007. Народные советы":
внешняя ссылка и попробуйте реализовать то, что написано в этом материале.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

5

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

К сожалению не исчез...
После каждого закрытия файла Ворд, выскакивает это: внешняя ссылка

6

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

И надо 4 раза кликать на разные окна пока закроется....
что теперь делать? снести офис и инсталлировать по новой?
неужели нет другого пути?

7

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

Странно.
Тогда попробуйте удалить все эти макросы из редактора, скриншот которого вы мне прислали, и сохраните файл.
Обязательно напишите мне, что получилось.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

8

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

Точнее, самое главное, удалите строчку:

Sub MAIN()

Я не знаю, откуда она взялась. Я вам ее не писал.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

9

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

а как удалить? я уже пытался по всякому - и не получается......

10

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

fairum пишет:

а как удалить? я уже пытался по всякому - и не получается......

Просто попробуйте стереть эти слова в редакторе VBA (скриншот которого вы мне прислали):

Sub MAIN()

и сохранить (CTRL+S).

Если не получится - будем думать еще.

Кстати, что у вас за модуль AutoExit? Какие-то действия выполнялись на выходе из программы. Он вам нужен?

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

11

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

fairum пишет:

Открыл команду Макросы и куда-то влепил этот код.

К сожалению, вы, как вы выразились, "влепили" этот код в модуль, который лучше было не трогать.
На будущее, лучше было создать новый модуль и копировать код туда.

Жду от вас сообщений о результатах исправления модуля.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

12

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

Ваш совет "стереть и сохранить (CTRL+S)" немного помог:
внешняя ссылка
Теперь после закрытия файла ворд надо делать только один лишний шелчек,
потом что выскакивает это:
внешняя ссылка
при нажатии ОК - ворд закрывается
Но это все равно лишнее

13

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

А теперь попробуйте весь модуль AutoExit удалить. Там все равно уже ничего существенного нет.
Установите на него курсор, нажмите правую кнопку мыши и выберите Remove...
Откажитесь от сохранения модуля перед удалением.
Потом сохраните результат (CTRL+S).
Word закройте и откройте файл снова.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

14

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

А как я теперь его открою? Раньше то он сам выскакивал при закрытии Ворда

15

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

Дошло - в Сервис - Макросы - Visual Basic
Спасибо - все получилось
Теперь нормально

16

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

Ну, вот, хорошо. Теперь, исправляя возникшую проблему, вы приобрели некоторый опыт работы с макросами. smile

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

17

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

Однако выдвинутую задачу в моем первом посте, это не решило......
ОДНОВРЕМЕННОЕ изменение размеров всех картинок в фале Ворд

18

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

Один Мудрец (так он себя величает), дал такой совет:

1.Сохранить страницу целиком в html.
2. Перейти в папку с этой страницей.
3. Там должна быть папка с именем, одинаковым с наименованием страницы + дополнение - "files".
4. Там сохраняются все картинки.
5. Любым просмотрщиком, например ACDSee, путем пакетного преобразования уменьшил бы размеры всех нужных файлов.
6. Открыл бы заново страницу с диска и потом уже копировал бы в Ворд.

Не знаю как на практике сработает, но это первое, что попробовал бы сделать.

Такое "выделить все картинки и уменьшить размер" есть не Ворде, а в Excel. В Водде такое не получается сделать, не работает.

19

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

Попробовал я сделать, как предложил Мудрец.
Однако при "Копировать" и "Вставить" - в Ворд не вставляются картинки.
По видимому при их замене после конвертации, что-то не так.
В файле html они видны уменьшенными, но в Ворде нет. Только постое место.

20

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

Как вы сохраняли?
Я (правда в Word 2010) сохранил как Веб-страница, уменьшил картинку и снова открыл в Ворде.
У меня картинка открылась того же размера, но худшего качества (растянутая). То же и в браузере.
Если посмотреть HTML-файл, то там у меня задается исходный размер картинки и путь:

 <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
 <o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="Рисунок_x0020_1" o:spid="_x0000_i1027" type="#_x0000_t75"
 style='width:468pt;height:382.5pt;visibility:visible;mso-wrap-style:square'>
 <v:imagedata src="Коллекции%20на%20вкладке.files/image001.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=624 height=510
src="Коллекции%20на%20вкладке.files/image002.jpg" v:shapes="Рисунок_x0020_1"><![endif]></span></p>

А как у вас?

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

21

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

Тема старая, но как сделать, чтобы этот макрос работал только на выделенной области? Пробовал вместо:
For Each inshp In ActiveDocument.InlineShapes
подставлять:
For Each inshp In Selection.InlineShapes
но в этом случае изменяется размер картинки только первой выделенной, а остальные остаются не тронутыми.

22

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

Route пишет:

Тема старая, но как сделать, чтобы этот макрос работал только на выделенной области? Пробовал вместо:
For Each inshp In ActiveDocument.InlineShapes
подставлять:
For Each inshp In Selection.InlineShapes
но в этом случае изменяется размер картинки только первой выделенной, а остальные остаются не тронутыми.

Проблема была в том, что оператор

inshp.Select

"портит" выделение.
Удалось исправить ситуацию с помощью определения диапазона, содержащего выделение:

Sub ScalePic()
Dim inshp As InlineShape
Dim rngSel As Range
Set rngSel = Selection.Range
    For Each inshp In rngSel.InlineShapes
        inshp.Select
        Select Case inshp.Type
            Case 3, 4, 12, 13
            If inshp.ScaleWidth <> 100 Then
                inshp.Select
                    inshp.ScaleWidth = 100
                    inshp.ScaleHeight = 100
                    If inshp.Width > ColumnWidth(inshp) Then
                        inshp.Width = ColumnWidth(inshp)
                        inshp.ScaleHeight = inshp.ScaleWidth
                    End If
            End If
        End Select
    Next inshp
End Sub

Public Function ColumnWidth(inshp As InlineShape) As Single
Dim l As Single, r As Single, p As Single
    p = inshp.Range.PageSetup.PageWidth
    l = inshp.Range.PageSetup.LeftMargin
    r = inshp.Range.PageSetup.RightMargin
        ColumnWidth = p - (l + r)
End Function
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

23

Re: Как в файле Ворд одновременно изменить размеры всех картинок?

Спасибо большое  smile