Hi Gareth,
As I'm sure you've found, over-sized images are reduced in size. So, it's really only the under-sized images that are the problem. Regardless, the following macro will fit all inlineshapes in all cells in all tables to the 'best fit' for the cells they're in.
Code:
Sub FitPics()
Application.ScreenUpdating = False
Dim Tbl As Table, iShp As InlineShape
With ActiveDocument
For Each Tbl In .Tables
For Each iShp In Tbl.Range.InlineShapes
With iShp
.LockAspectRatio = msoTrue
.Height = .Range.Cells(1).Height
If .Width > .Range.Cells(1).Width Then
.Width = .Range.Cells(1).Width
End If
End With
Next
Next
End With
Application.ScreenUpdating = True
End Sub
Note: As coded, the macro takes no account of cell border padding or any 'before/after' spacing for the paragraph they're attached to.