Tuesday, December 24, 2024

VBA Word - Delete pages of document between a range

The following VBA code deletes pages of Word document between a range.
Sub DeletePagesXtoY()
    Dim startRange As Range
    Dim endRange As Range
    Dim iStart As Integer
    Dim iEnd As Integer
    iStart = 249
    iEnd = 257
    
    Set startRange = ActiveDocument.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=iStart)
    ' Set the start of page 291
    Set endRange = ActiveDocument.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=iEnd)

    ' Select the range between page 230 and 290
    startRange.SetRange Start:=startRange.Start, End:=endRange.Start

    ' Delete the selected range
    startRange.Delete
End Sub

VBA Word - Adjust all images in Word document

The following VBA code adjusts images in Word document:
Sub AdjustImageSize()
    Dim doc As Document
    Dim img As InlineShape
    Dim shape As shape
    Dim docWidth As Single

    Set doc = ActiveDocument
    docWidth = doc.PageSetup.PageWidth - doc.PageSetup.LeftMargin - doc.PageSetup.RightMargin

    ' Loop through all inline shapes (embedded images)
    For Each img In doc.InlineShapes
        If img.Width > docWidth Then
            img.LockAspectRatio = msoTrue
            img.Width = docWidth
        End If
    Next img

    ' Loop through all floating shapes (floating images)
    For Each shape In doc.Shapes
        If shape.Type = msoPicture Or shape.Type = msoLinkedPicture Then
            If shape.Width > docWidth Then
                shape.LockAspectRatio = msoTrue
                shape.Width = docWidth
            End If
        End If
    Next shape
End Sub

Hot Topics