2016-08-09 4 views
1

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

код выглядит следующим образом:

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 

EDIT - снизу

изменен код, как указано ниже, и если теперь помещает изображение на RHS, но в верхней части первого абзаца не находится под курсором. Правильно ли я думаю, что код Anchor:=ActiveDocument.Paragraphs(1).Range) является виновником?

Если да, то к чему это должно быть изменено?

Вот текущее изменение кода:

With shp 
    .WrapFormat.Type = wdWrapTight 
    .RelativeVerticalPosition = wdRelativeVerticalPositionMargin 
    .RelativeHorizontalPosition = wdRelativeHorizontalPositionMargin 
    .Left = wdFrameRight 
End With 

ответ

0

У вас есть горизонтальное положение с помощью вертикальной постоянной

Try переключения:

.RelativeHorizontalPosition = _ 
    wdRelativeVerticalPositionMargin 

To:

.RelativeHorizontalPosition = _ 
    wdRelativeHorizontalPositionMargin 

EDIT - добавить код для вставки изображения после курсора:

Чтобы добавить форму после курсора попробуйте вставить эту раз перед вашей командой Set shp = ActiveDocument.Shapes.AddPicture. Он создаст новый абзац и переместит весь текст после курсора на новый абзац, а затем переместится в начальную точку этого абзаца.

Selection.InsertParagraphAfter 
Selection.MoveDown Unit:=wdParagraph, count:=1 
+0

Да, спасибо, я заметил эту ошибку. Я также изменил код, как показано ниже, и если теперь помещает изображение в RHS, но в верхней части первого абзаца не на курсор. Правильно ли я думаю, что код «Якорь: = ActiveDocument.Paragraphs (1) .Range)» является виновником? Если да, то к чему это должно быть изменено? Вот текущее изменение кода: С SHP .WrapFormat.Type = wdWrapTight .RelativeVerticalPosition = wdRelativeVerticalPositionMargin .RelativeHorizontalPosition = wdRelativeHorizontalPositionMargin .left = wdFrameRight End With –

+0

Абзац якорной что вы указали - чтобы заставить его использовать в позиции курсора вы можете попробовать добавить новый абзац в курсор, а затем добавить свою фигуру. Я обновлю свой ответ – dbmitch

Смежные вопросы