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