Статьи из блога

Статьи из блога

Как передвигать рисунок в тексте с заданной точностью

Рубрика: Вопрос-Ответ, Макросы
Метки: |
Среда, 16 июля 2008 г.
Просмотров: 11939
Подписаться на комментарии по RSS
Версия для печати

[Ссылки на статью]

Сергей спрашивает:

Как передвигать рисунок с заданной точностью (например сдвинуть влево на 2 мм или на 2 пиксела)?

Для этих целей можно воспользоваться следующим макросом:

Sub movePic()
'Перемещение рисунка влево или вправо в милимметрах
Dim Message As String
On Error Resume Next
If Selection.Type = wdSelectionIP Then
   MsgBox "Пожалуйста, выделите ваш рисунок"
Else
   Do While Message = ""
      Message = InputBox("Введите расстояние (в мм), на которое следует переместить рисунок." & _
      vbCr & "Если нужно переместить рисунок влево, то перед цифрой поставьте знак 'минус'", _
      "Перемещение рисунка", "")
      If StrPtr(Message) = 0 Then Exit Sub
   Loop
   'проверка типа объекта и, если это картинка (InlineShape), то происходит ее
   'преобразование в рисунок (Shape)
   If Selection.Type = wdSelectionInlineShape Then
      Selection.InlineShapes(1).ConvertToShape
   End If
   Selection.ShapeRange.IncrementLeft MillimetersToPoints(Message)
End If
End Sub

Если вы не знаете, как подключить к документу и применить эти макросы, изучите следующие заметки с сайта:

Создание макроса из готового кода

Автоматическая запись макроса

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Еще записи по вопросам использования Microsoft Word:

Комментариев: 8

  1. Artem
    17.07.2008 в 22:04 | #1

    А чтобы еще и вверх/вниз?

    И не только в мм, но и в пикселах, как в условии задачи?

  2. 18.07.2008 в 09:09 | #2

    Конечно можно. Для работы с пикселями достаточно заменить в макросе оператор

    Selection.ShapeRange.IncrementLeft MillimetersToPoints(Message)
    на оператор
    Selection.ShapeRange.IncrementLeft PixelsToPoints(Message)

    Что касается перемещения вверх или вниз, то это тоже можно, но логичнее тогда создать свою форму с полями и переключателями. Я об этом думал, но подумал о нецелесообразности такого макроса в принципе. Кому он может быть нужен и для каких таких часто выполняемых действиях? Поэтому и не стал мудрить с такой формой.

  3. Наташа
    25.07.2008 в 19:35 | #3

    Самый простой способ - выделенную картинку или текст-бокс передвигать по пикселам с нажатой кнопкой Alt в любом направлении при помощи стрелок на клавиатуре.

  4. 28.07.2008 в 10:11 | #4

    Наталья, вставьте рисунок из файла или картинку в документ, а потом попробуйте передвинуть их предложенными вами способами. Не получится, пока не будет сделано обтекание этих объектов.

    Во-вторых, иногда требуется передвигать рисунок с определенной точностью, и не обязательно в пикселах, сантиметрах, дюймах или других единицах. Поэтому ручной способ слишком топорен.

  5. Наташа
    01.08.2008 в 21:14 | #5

    Странно, у меня никогда не было проблем с передвиганием объектов таким образом, вопрос с обтеканием не вставал. Кстати, тыща извинений - должна использоваться кнопка Ctrl. На мой взгляд, для повседневной жизни и при работе на разных машинах этот способ очень подходит.

  6. Леонид Бродский
    04.08.2008 в 12:22 | #6

    А разве нельзя открыть свойства картинки и задать и обтекание, и её расположение в нужных единицах?

  7. 04.08.2008 в 12:54 | #7

    Можно, но насколько я помню тот вопрос в личном письме, то человека интересовал макрос.

  8. Владислав Кулаков
    09.09.2008 в 12:24 | #8

    Огромная благодарность Наталье. Пока не прочитал её комментарии, постоянно мучился с перемещением картинок на маленькое расстояние.

Оставьте комментарий!

(обязательно)

^ Наверх