Mi macro vba para alinear una forma o gráfico en la esquina superior derecha de la página en Word no funciona

Mi macro vba para alinear una forma o gráfico en la esquina superior derecha de la página en Word no funciona
Sub alignGraphicElementToTopRightCornerOfPage()
'
' alignGraphicElementToTopRightCornerOfPage Macro
'
'
    Selection.ShapeRange.Align msoAlignTops, True
    Selection.ShapeRange.Align msoAlignRights, True
End Sub

Vea la diferencia entre lo que sucede cuando uso la macro y lo que sucede cuando ejecuto manualmente los múltiples comandos desde la cinta. Creé la macro usando la función de grabación.

La macro hace que el elemento se salga de la página, lo cual es un comportamiento no deseado, que no es lo que sucedió cuando grabé la macro.

macro de Microsoft Word VBA alinea el gráfico o la forma con la esquina superior derecha de la página

¿Por qué no funciona? Grabé la macro correctamente. ¿Hay algún código vba que deba cambiar o agregarle?

Respuesta1

Solucioné el problema agregando nuevas líneas para la macro de VBA.

Sub alignGraphicElementToTopRightCornerOfPage()
'
' alignGraphicElementToTopRightCornerOfPage Macro
'
'
    Selection.ShapeRange.WrapFormat.Type = wdWrapFront
    ' choose the wrapping type
    ' the following values are good "3" "wdWrapFront" an "wdWrapTight"
    ' I don't know what "3" does but Microsoft Office 2007 uses it
    
    Selection.ShapeRange.RelativeHorizontalPosition = _
        wdRelativeHorizontalPositionColumn
    Selection.ShapeRange.RelativeVerticalPosition = _
        wdRelativeVerticalPositionPage
    Selection.ShapeRange.RelativeHorizontalSize = wdRelativeHorizontalSizePage
    Selection.ShapeRange.RelativeVerticalSize = wdRelativeVerticalSizePage
    ' these commands are needed if the wrapping type is "3" or "wdWrapFront"
    ' ensure the shape is aligned to the top right corner of the page
        ' This also fixes the formatting problems when the page has text on it,
        ' to prevent an extra line break or blank space appearing on the screen
        ' that the user did not intentionally create
    
    Selection.ShapeRange.WrapFormat.DistanceTop = CentimetersToPoints(0)
    Selection.ShapeRange.WrapFormat.DistanceBottom = CentimetersToPoints(0)
    ' these commands are needed if the wrapping type is "wdWrapTight"

    Selection.ShapeRange.Align msoAlignTops, True
    Selection.ShapeRange.Align msoAlignRights, True
    ' start aligning the image to the top right of the page
    
End Sub

información relacionada