Microsoft Office Forums

Go Back   Microsoft Office Forums > >

Reply
 
Thread Tools Display Modes
  #16  
Old 02-14-2021, 07:00 PM
victorybadges victorybadges is offline Add Multiple Pics & Captions to a Document Windows 10 Add Multiple Pics & Captions to a Document Office 2013
Advanced Beginner
Add Multiple Pics & Captions to a Document
 
Join Date: Dec 2020
Posts: 39
victorybadges is on a distinguished road
Default

seems to work well
I have changed the padding to zero in this line
HPad = CentimetersToPoints(0.15): VPad = CentimetersToPoints(0.05) and seems to work fine


I have left this line as is though 0 x 2 may be a problem
I have tested it with 30 black images and I am getting a white line down at the end of the 3rd column going all the way down, is this a bug in word
I also need to have it so it does not allow break across pages please
Reply With Quote
  #17  
Old 02-14-2021, 07:08 PM
macropod's Avatar
macropod macropod is offline Add Multiple Pics & Captions to a Document Windows 10 Add Multiple Pics & Captions to a Document Office 2016
Administrator
 
Join Date: Dec 2010
Location: Canberra, Australia
Posts: 22,364
macropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond repute
Default

By setting VPad to 0, you may end up with pics overlapping the top/bottom cell borders. By setting HPad to 0, you'll be back to your previous issue with text occupying the full cell width.

I cannot see how you could end up with rows being split across a page break, as all you have in each cell is either a single pic or a single line of text. Plus, unless you've modified your version of the Caption Style to have the 'Keep with Next' attribute, captions and their pics would be forced to appear on the same page.

The display issue may be related to your display driver.
__________________
Cheers,
Paul Edstein
[Fmr MS MVP - Word]
Reply With Quote
  #18  
Old 02-14-2021, 07:39 PM
victorybadges victorybadges is offline Add Multiple Pics & Captions to a Document Windows 10 Add Multiple Pics & Captions to a Document Office 2013
Advanced Beginner
Add Multiple Pics & Captions to a Document
 
Join Date: Dec 2020
Posts: 39
victorybadges is on a distinguished road
Default

whatever I do I am having an issue
now the images are not being reduced to fit the box so I am back to my original script and will forget about the padding, just now need centring of the caption
I will give it a go and if I cannot succeed will let you know
Reply With Quote
  #19  
Old 02-14-2021, 08:34 PM
macropod's Avatar
macropod macropod is offline Add Multiple Pics & Captions to a Document Windows 10 Add Multiple Pics & Captions to a Document Office 2016
Administrator
 
Join Date: Dec 2010
Location: Canberra, Australia
Posts: 22,364
macropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond repute
Default

The code in post #15 does all of that.
__________________
Cheers,
Paul Edstein
[Fmr MS MVP - Word]
Reply With Quote
  #20  
Old 02-15-2021, 12:34 AM
victorybadges victorybadges is offline Add Multiple Pics & Captions to a Document Windows 10 Add Multiple Pics & Captions to a Document Office 2013
Advanced Beginner
Add Multiple Pics & Captions to a Document
 
Join Date: Dec 2020
Posts: 39
victorybadges is on a distinguished road
Default

thank you, I will work through it
Reply With Quote
  #21  
Old 02-15-2021, 02:09 AM
victorybadges victorybadges is offline Add Multiple Pics & Captions to a Document Windows 10 Add Multiple Pics & Captions to a Document Office 2013
Advanced Beginner
Add Multiple Pics & Captions to a Document
 
Join Date: Dec 2020
Posts: 39
victorybadges is on a distinguished road
Default

thank you so much for your help and persistence.
I can comfortably say the template looks great.
thank you
Reply With Quote
  #22  
Old 06-02-2025, 04:26 AM
victorybadges victorybadges is offline Add Multiple Pics & Captions to a Document Windows 10 Add Multiple Pics & Captions to a Document Office 2013
Advanced Beginner
Add Multiple Pics & Captions to a Document
 
Join Date: Dec 2020
Posts: 39
victorybadges is on a distinguished road
Default

Hi Paul
hope all is well, been using this off and on and have been making changes manually so I am hoping you can help

I need to refine it for the following please

biggest issue is that long file names are being cut off, we tried scaling the caption but this did not work well, is there a way of wrapping the caption text for images with long file names, other things I would like is to have the the table centred on page and to amend the caption font size, italics, colour bold etc

this is the macro as it stands that I am using,
thank you kindly

Code:
Sub Add_PicsinTable_with_Captions()
Application.ScreenUpdating = False
Dim i As Long, j As Long, c As Long, r As Long, NumCols As Long, iShp As InlineShape
Dim oTbl As Table, TblWdth As Single, StrTxt As String, RowHght As Single, ColWdth As Single
Dim HPad As Single, VPad As Single, PicHght As Single, PicWdth As Single
HPad = CentimetersToPoints(0#):     VPad = CentimetersToPoints(0#)
On Error GoTo ErrExit
NumCols = CLng(InputBox("How Many Columns per Row?"))
RowHght = CentimetersToPoints(CSng(InputBox("What max row height for the pictures, in Centimeters (e.g. 5)?")))
ColWdth = CentimetersToPoints(CSng(InputBox("What max column width for the pictures, in Centimeters (e.g. 5)?")))
On Error GoTo 0
PicHght = RowHght - VPad * 2: PicWdth = ColWdth - HPad * 2
'MsgBox "PicWdth: " & PointsToCentimeters(PicWdth) & vbTab & "ColWdth: " & PointsToCentimeters(ColWdth)
'MsgBox "PicHght: " & PointsToCentimeters(PicHght) & vbTab & "RowHght: " & PointsToCentimeters(RowHght)
'Select and insert the Pics
With Application.FileDialog(msoFileDialogFilePicker)
  .Title = "Select image files and click OK"
  .Filters.Add "Images", "*.gif; *.jpg; *.jpeg; *.bmp; *.tif; *.png"
  .FilterIndex = 2
  If .Show = -1 Then
    'Create a paragraph Style with 0 space before/after & centre-aligned
    On Error Resume Next
    With ActiveDocument
      .Styles.Add Name:="TblPic", Type:=wdStyleTypeParagraph
      On Error GoTo 0
      With .Styles("TblPic").ParagraphFormat
        .Alignment = wdAlignParagraphCenter
        .KeepWithNext = True
        .SpaceAfter = 0
        .SpaceBefore = 0
      End With
      .Styles("Caption").ParagraphFormat.Alignment = wdAlignParagraphCenter
    End With
    'Add a 2-row by NumCols-column table to take the images
    Set oTbl = Selection.Tables.Add(Range:=Selection.Range, NumRows:=2, NumColumns:=NumCols)
    With ActiveDocument.PageSetup
      TblWdth = .PageWidth - .LeftMargin - .RightMargin - .Gutter
      If TblWdth / NumCols < ColWdth Then ColWdth = TblWdth / NumCols
    End With
    With oTbl
      .AutoFitBehavior (wdAutoFitFixed)
      .TopPadding = VPad
      .BottomPadding = VPad
      .LeftPadding = HPad
      .RightPadding = HPad
      .Spacing = 0
      .Columns.Width = ColWdth
      .Borders.Enable = True
      .Range.Cells.VerticalAlignment = wdCellAlignVerticalBottom
    End With
    CaptionLabels.Add Name:="Picture"
    For i = 1 To .SelectedItems.Count Step NumCols
      r = ((i - 1) / NumCols + 1) * 2 - 1
      'Format the rows
      Call FormatRows(oTbl, r, RowHght)
      For c = 1 To NumCols
        j = j + 1
        'Insert the Picture
        Set iShp = ActiveDocument.InlineShapes.AddPicture( _
          FileName:=.SelectedItems(j), LinkToFile:=False, _
          SaveWithDocument:=True, Range:=oTbl.Cell(r, c).Range)
        With iShp
          .LockAspectRatio = True
          If .Width < PicWdth Then .Width = PicWdth
          If .Height > PicHght Then .Height = PicHght
        End With
        'Get the Image name for the Caption
        StrTxt = Split(.SelectedItems(j), "\")(UBound(Split(.SelectedItems(j), "\")))
        StrTxt = Split(Split(StrTxt, "")(UBound(Split(StrTxt, ""))), ".")(0)
        'Insert the Caption on the row below the picture
        With oTbl.Cell(r + 1, c)
          With .Range
            .Text = StrTxt
                 End With
        End With
        'Exit when we're done
        If j = .SelectedItems.Count Then Exit For
      Next
      'Add extra rows as needed
      If j < .SelectedItems.Count Then
        oTbl.Rows.Add
        oTbl.Rows.Add
      End If
    Next
  Else
  End If
End With
ErrExit:
Application.ScreenUpdating = True
End Sub

Sub FormatRows(oTbl As Table, x As Long, Hght As Single)
With oTbl
  With .Rows(x)
    .Height = Hght
    .HeightRule = wdRowHeightExactly
    .Range.Style = "TblPic"
  End With
  With .Rows(x + 1)
    .Height = CentimetersToPoints(0#)
    .HeightRule = wdRowHeightExactly
    .Range.Style = "Caption"
  End With
End With
End Sub

Last edited by macropod; 06-02-2025 at 05:10 AM. Reason: Added code tags for code formatting
Reply With Quote
  #23  
Old 06-02-2025, 05:19 AM
macropod's Avatar
macropod macropod is offline Add Multiple Pics &amp; Captions to a Document Windows 10 Add Multiple Pics &amp; Captions to a Document Office 2016
Administrator
 
Join Date: Dec 2010
Location: Canberra, Australia
Posts: 22,364
macropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond repute
Default

For the caption font size, italics, colour bold etc., you should modify the Caption Style to suit.

To accommodate long file names, change:
Code:
  With .Rows(x + 1)
    .Height = CentimetersToPoints(0#)
    .HeightRule = wdRowHeightExactly
    .Range.Style = "Caption"
  End With
to:
Code:
  With .Rows(x + 1)
    .Height = CentimetersToPoints(0#)
    .HeightRule = wdRowHeightAtLeast
    .Range.Style = "Caption"
  End With
to centre the table on the page, insert:
Code:
      .Rows.Alignment = wdAlignRowCenter
after the first:
Code:
    With oTbl
__________________
Cheers,
Paul Edstein
[Fmr MS MVP - Word]
Reply With Quote
  #24  
Old 06-02-2025, 04:00 PM
victorybadges victorybadges is offline Add Multiple Pics &amp; Captions to a Document Windows 10 Add Multiple Pics &amp; Captions to a Document Office 2013
Advanced Beginner
Add Multiple Pics &amp; Captions to a Document
 
Join Date: Dec 2020
Posts: 39
victorybadges is on a distinguished road
Default

thank you for this

the table centring did not work, where do I put in the new code
also I know realise my captions replacing spaces for "." dots and oddly where I have a dot in the file the caption is being truncated from the dot onwards
eg file name 001 A 1917 P small closed AG.5.272.jpg
produces a caption as 001 A 1917 P small closed AG

appreciate your advise please

as the file name is large that is why I was asking is there is a way of wrapping the text onto another line ?
Reply With Quote
  #25  
Old 06-02-2025, 04:21 PM
macropod's Avatar
macropod macropod is offline Add Multiple Pics &amp; Captions to a Document Windows 10 Add Multiple Pics &amp; Captions to a Document Office 2016
Administrator
 
Join Date: Dec 2010
Location: Canberra, Australia
Posts: 22,364
macropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond repute
Default

You insert:
Code:
      .Rows.Alignment = wdAlignRowCenter
after the first:
Code:
    With oTbl
The caption truncation is cause by your use of extra periods in the filename (not a good practice). This can be overcome by replacing:
Code:
        StrTxt = Split(.SelectedItems(j), "")(UBound(Split(.SelectedItems(j), "")))
        StrTxt = Split(Split(StrTxt, "")(UBound(Split(StrTxt, ""))), ".")(0)
(which is wrong anyway) with:
Code:
        StrTxt = Split(.SelectedItems(j), "\")(UBound(Split(.SelectedItems(j), "\")))
        StrTxt = ": " & Left(StrTxt, InStrRev(StrTxt, "."))
The other code changes I suggested will already allow for the line wrapping.
__________________
Cheers,
Paul Edstein
[Fmr MS MVP - Word]
Reply With Quote
  #26  
Old 06-02-2025, 11:22 PM
victorybadges victorybadges is offline Add Multiple Pics &amp; Captions to a Document Windows 10 Add Multiple Pics &amp; Captions to a Document Office 2013
Advanced Beginner
Add Multiple Pics &amp; Captions to a Document
 
Join Date: Dec 2020
Posts: 39
victorybadges is on a distinguished road
Default

thank you for the latest instructions
the result was a colon prefix and dots instead of spaces which I have been able to remove by replacing this
StrTxt = Split(.SelectedItems(j), "")(UBound(Split(.SelectedItems(j), "")))
StrTxt = ": " & Left(StrTxt, InStrRev(StrTxt, "."))

with this

StrTxt = Split(.SelectedItems(j), "")(UBound(Split(.SelectedItems(j), "")))
StrTxt = Left(StrTxt, InStrRev(StrTxt, "."))

but its still producing a dot as a suffix at the end of the caption
also the caption is showing bottom row while it should be position on the top
I cannot attach an image
Reply With Quote
  #27  
Old 06-02-2025, 11:43 PM
victorybadges victorybadges is offline Add Multiple Pics &amp; Captions to a Document Windows 10 Add Multiple Pics &amp; Captions to a Document Office 2013
Advanced Beginner
Add Multiple Pics &amp; Captions to a Document
 
Join Date: Dec 2020
Posts: 39
victorybadges is on a distinguished road
Default

I changed this to Top but its moving both the image and the caption
.Range.Cells.VerticalAlignment = wdCellAlignVerticalTop

I want the image to be Bottom and the Caption to be Top of their respective rows please
Reply With Quote
  #28  
Old 06-02-2025, 11:47 PM
macropod's Avatar
macropod macropod is offline Add Multiple Pics &amp; Captions to a Document Windows 10 Add Multiple Pics &amp; Captions to a Document Office 2016
Administrator
 
Join Date: Dec 2010
Location: Canberra, Australia
Posts: 22,364
macropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond repute
Default

Quote:
Originally Posted by victorybadges View Post
thank you for the latest instructions
the result was a colon prefix and dots instead of spaces which I have been able to remove by replacing this
StrTxt = Split(.SelectedItems(j), "")(UBound(Split(.SelectedItems(j), "")))
StrTxt = ": " & Left(StrTxt, InStrRev(StrTxt, "."))

with this

StrTxt = Split(.SelectedItems(j), "")(UBound(Split(.SelectedItems(j), "")))
StrTxt = Left(StrTxt, InStrRev(StrTxt, "."))
Your code makes no sense at all. There is no point in having a line like:
StrTxt = Split(.SelectedItems(j), "")(UBound(Split(.SelectedItems(j), "")))
It does nothing.

And "the result was a colon prefix and dots instead of spaces" is bizzarre - the code doesn't replace your periods or spaces!
__________________
Cheers,
Paul Edstein
[Fmr MS MVP - Word]
Reply With Quote
  #29  
Old 06-02-2025, 11:51 PM
victorybadges victorybadges is offline Add Multiple Pics &amp; Captions to a Document Windows 10 Add Multiple Pics &amp; Captions to a Document Office 2013
Advanced Beginner
Add Multiple Pics &amp; Captions to a Document
 
Join Date: Dec 2020
Posts: 39
victorybadges is on a distinguished road
Default

sorry,
meant to post this
StrTxt = Split(.SelectedItems(j), "")(UBound(Split(.SelectedItems(j), "")))
StrTxt = Left(StrTxt, InStrRev(StrTxt, "."))
Reply With Quote
  #30  
Old 06-02-2025, 11:52 PM
macropod's Avatar
macropod macropod is offline Add Multiple Pics &amp; Captions to a Document Windows 10 Add Multiple Pics &amp; Captions to a Document Office 2016
Administrator
 
Join Date: Dec 2010
Location: Canberra, Australia
Posts: 22,364
macropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond repute
Default

Same as before. Kindly use the CODE tags when posting code.
__________________
Cheers,
Paul Edstein
[Fmr MS MVP - Word]
Reply With Quote
Reply



Similar Threads
Thread Thread Starter Forum Replies Last Post
Add Multiple Pics &amp; Captions to a Document Macro for Inserting Multiple Photos from Excel List into Word henhelm Word VBA 15 02-07-2023 05:35 PM
Add Multiple Pics &amp; Captions to a Document Macro for Inserting Multiple Photos into Word but retrieving Captions from Excel Sheet macaronipasta Word VBA 2 06-27-2021 06:28 PM
Add Multiple Pics &amp; Captions to a Document I need a macro to automatically insert 4 pics per page in a word document with "Photograph No 1, 2," NewbieLearning Word VBA 15 11-14-2017 05:03 AM
Add Multiple Pics &amp; Captions to a Document Captions: Changing captions in Appendix update all captions carnestw Word 3 10-27-2015 12:34 PM
How do I type on multiple pics? TimHudson Drawing and Graphics 0 07-28-2011 10:28 AM

Other Forums: Access Forums

All times are GMT -7. The time now is 11:33 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.
Search Engine Optimisation provided by DragonByte SEO (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
MSOfficeForums.com is not affiliated with Microsoft