![]() |
#1
|
|||
|
|||
![]()
Hi there,
I'm using the script at https://www.msofficeforums.com/drawi...ument-all.html to make a 2 columns table inserting pictures @ once. Works great. But... Instead of captions of the picture-name, I want to automatically add a pre-made listbox VB control. In the document attached, the listbox attribute is in my Word-document, and till now I copy/paste that attribute over the captions. Would be great if I could have that listbox dropped under the inserted pics right away using the auto-table script! But how? ![]() |
#2
|
||||
|
||||
![]()
Hi vanwijnen,
I've been away for 3 1/2 months, hence the delay in replying. What you're inserting isn't 'a pre-made listbox VB control' but a dropdown content control. As the original discussion only concerned images & captions, I've split this discussion off into a new thread. In the 'AddPics' sub, you'll see the code block: Code:
'Insert the Caption on the row below the picture With oTbl.Cell(r + 1, c).Range .InsertBefore vbCr .Characters.First.InsertCaption _ Label:="Picture", Title:=StrTxt, _ Position:=wdCaptionPositionBelow, ExcludeLabel:=False .Characters.First = vbNullString .Characters.Last.Previous = vbNullString End With Code:
Sub AddPics() Application.ScreenUpdating = False Dim i As Long, j As Long, c As Long, r As Long, NumCols As Long, DocSrc As Document Dim oTbl As Table, TblWdth As Single, StrTxt As String, RwHght As Single On Error GoTo ErrExit Set DocSrc = Documents.Open("C:\Users\" & Environ("Username") & "\Documents\Source.Docx", AddtoRecentFiles:=False, Visible:=False, ReadOnly:=True) NumCols = CLng(InputBox("How Many Columns per Row?")) RwHght = CSng(InputBox("What row height for the pictures, in inches (e.g. 1.5)?")) On Error GoTo 0 '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 '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 End With With oTbl .AutoFitBehavior (wdAutoFitFixed) .Columns.Width = TblWdth / NumCols 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, RwHght) For c = 1 To NumCols j = j + 1 'Insert the Picture ActiveDocument.InlineShapes.AddPicture _ FileName:=.SelectedItems(j), LinkToFile:=False, _ SaveWithDocument:=True, Range:=oTbl.Cell(r, c).Range 'Get the Image name for the Caption StrTxt = Split(.SelectedItems(j), "\")(UBound(Split(.SelectedItems(j), "\"))) StrTxt = ": " & Split(StrTxt, ".")(0) 'Insert the Caption on the row below the picture With oTbl.Cell(r + 1, c).Range .FormattedText = DocSrc.ContentControls(1).Range.Paragraphs(1).Range.FormattedText 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 DocSrc.Close ErrExit: Application.ScreenUpdating = True End Sub ' Sub FormatRows(oTbl As Table, x As Long, Hght As Single) With oTbl With .Rows(x) .Height = InchesToPoints(Hght) .HeightRule = wdRowHeightExactly End With With .Rows(x + 1) .Height = CentimetersToPoints(0.5) .HeightRule = wdRowHeightExactly End With End With End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
![]() |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
![]() |
jsoule | Word VBA | 3 | 02-25-2015 07:53 AM |
Insert image icons are showing up on images that have content controls but only on some computers. | mandylach | Word | 0 | 11-10-2014 07:44 PM |
![]() |
Ravon | Word | 3 | 10-16-2014 01:13 PM |
More than one content controls in a word document | lucky16 | Word VBA | 6 | 07-10-2014 08:34 AM |
![]() |
mqx | Word VBA | 4 | 11-13-2013 11:22 AM |