99Freddo Ответов: 1

Как вставить и изображение в положение курсора в VBA


Я пробовал следующий код, скопированный с различных сайтов, но я не программист. Я хочу, чтобы изображение загружалось в правой части экрана в Word напротив позиции курсора.
В настоящее время он загружается в верхней части документа или в центре первой страницы, если я использую
.Top = wdShapeCenter

Код выглядит следующим образом:
Sub Apic()
'
' APic Place Picture at Cursor
'
Dim openDialog As Office.FileDialog
Dim shp As Shape

Set openDialog = Application.FileDialog(msoFileDialogFilePicker)
  openDialog.Filters.Clear
  openDialog.Filters.Add "JPEG Files", "*.jpg"
  openDialog.Filters.Add "Gif Files", "*.gif"
  openDialog.Filters.Add "PNG Files", "*.png"
  openDialog.Filters.Add "All Files", "*.*"
  If openDialog.Show Then
    imageName = openDialog.SelectedItems(1)
  End If

  Set shp = ActiveDocument.Shapes.AddPicture( _
     FileName:=imageName, _
       SaveWithDocument:=True, _
      Anchor:=ActiveDocument.Paragraphs(1).Range)
    With shp
    .Name = "PictureInsert"
    .LockAspectRatio = True
    .WrapFormat.AllowOverlap = False
    .WrapFormat.Side = wdWrapTight
    .WrapFormat.Type = 1
    .RelativeHorizontalPosition = _
         wdRelativeVerticalPositionMargin
    .RelativeVerticalPosition = _
        wdRelativeVerticalPositionMargin
    .Left = wdShapeRight
'    .Top = wdShapeCenter
  End With
End Sub


Что я уже пробовал:

Поиск по этому сайту, а также много времени на поиск веб-примеров для VBA

99Freddo

Спасибо за ответ. Я попробовал это сделать, но получил ошибку компиляции-синтаксическую ошибку:
Установите shp = ActiveDocument.Формы.AddPicture( _
Имя файла:=imageName, _
SaveWithDocument:=True, _
Якорь:=Выбор.Диапазон
Как изменить исходный код, чтобы вставить изображение в правую часть страницы напротив текущей позиции курсора?
Спасибо

1 Ответов

Рейтинг:
12

Maciej Los

Заменять:

Anchor:=ActiveDocument.Paragraphs(1).Range

с
Anchor:=Selection.Range

в AddPicture метод вставки изображения в то место, где мигает курсор.

Больше: Объект Выделения (Слово)[^]


99Freddo

Спасибо Томасу, что сделал свое дело - я также изменил последний раздел, чтобы читать

С шп
.WrapFormat.Тип = wdWrapTight
. RelativeVerticalPosition = wdrelativeverticalposition margin
. RelativeHorizontalPosition = wdrelativehorizontalposition margin
.Left = wdFrameRight
Конец С

теперь работает нормально. Фред

Maciej Los

Всегда пожалуйста.
Кстати: меня зовут Мачей, а не Томас ;)