Microsoft Office Forums

Go Back   Microsoft Office Forums > >

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #1  
Old 03-05-2022, 03:16 AM
gorkac gorkac is offline Create Table for Multiple Pictures. 1 picture, 1 table and space between tables Windows 10 Create Table for Multiple Pictures. 1 picture, 1 table and space between tables Office 2019
Banned
Create Table for Multiple Pictures. 1 picture, 1 table and space between tables
 
Join Date: Jul 2021
Location: Usa
Posts: 62
gorkac is on a distinguished road
Default Create Table for Multiple Pictures. 1 picture, 1 table and space between tables

Split from: https://www.msofficeforums.com/word-...-pictures.html
My intention is that if more than one image was selected, one table by image. Also, I have added a line what I like it, but and I would like to remove only the outer edge, is it possible?



I would like it to stay like this:



Anyway, I would like that if I choose several images, they have space between them. I don't know where I have to put the line of code to create a space between one table and the next.

Code:
Code:
Sub AddPics()
Application.ScreenUpdating = False
Dim Stl As Style, 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, RwHght As Single, ColWdth As Single
On Error GoTo ErrExit

NumCols = 1 'CLng(InputBox("Cuantas columnas por fila?"))
RwHght = CentimetersToPoints(8)  '(CSng(InputBox("¿Altura maxima de la fila?")))
On Error GoTo 0

'Selecciona e inserta fotos
With Application.FileDialog(msoFileDialogFilePicker)
  .Title = "Seleccion de imagenes y click en Abrir"
  .Filters.Add "Imagenes", "*.gif; *.jpg; *.jpeg; *.bmp; *.tif; *.png"
  .FilterIndex = 2
  If .Show = -1 Then
  
    'Crea un Estilo de parrafo con 0 espacios antes/despues y alineado al centro.
    With ActiveDocument
      On Error Resume Next
      Set Stl = .Styles("TblPic")
      If Stl Is Nothing Then Set Stl = .Styles.Add(Name:="TblPic", Type:=wdStyleTypeParagraph)
      On Error GoTo 0
      With .Styles("TblPic").ParagraphFormat
        .Alignment = wdAlignParagraphCenter
        .KeepWithNext = True
        .SpaceAfter = 0
        .SpaceBefore = 0
      End With
    End With
    
    'Agregue una tabla de 2 filas por NumCols-column para colocar las imágenes
    Set oTbl = Selection.Tables.Add(Range:=Selection.Range, NumRows:=2, NumColumns:=NumCols)
    With ActiveDocument.PageSetup
      TblWdth = .PageWidth - .LeftMargin - .RightMargin - .Gutter
      ColWdth = CentimetersToPoints(15) 'TblWdth / NumCols
    End With
    With oTbl
      .AutoFitBehavior (wdAutoFitFixed)
      .TopPadding = 0
      .BottomPadding = 0
      .LeftPadding = 0
      .RightPadding = 0
      .Spacing = 0
      .Columns.Width = ColWdth
      .Borders.Enable = True
    End With
    CaptionLabels.Add Name:="Fotografía nº"
    For i = 1 To .SelectedItems.Count Step NumCols
      r = ((i - 1) / NumCols + 1) * 2 - 1
      
      'Formato de filas
Call FormatRows(oTbl, r, RwHght)
      For c = 1 To NumCols
        j = j + 1
        ActiveDocument.Tables(1).Spacing = 9
        'Inserta la foto
        Set iShp = ActiveDocument.InlineShapes.AddPicture( _
          FileName:=.SelectedItems(j), LinkToFile:=False, _
          SaveWithDocument:=True, Range:=oTbl.Cell(r, c).Range)
        With iShp
          .LockAspectRatio = True
          If (.Width < ColWdth) And (.Height < RwHght) Then
            .Width = ColWdth
            If .Height > RwHght Then .Height = RwHght
          End If
        End With
        
        'Obtener el nombre de la imagen para el pie de foto
        StrTxt = Split(.SelectedItems(j), "\")(UBound(Split(.SelectedItems(j), "\")))
        StrTxt = ": " & Split(StrTxt, ".")(0)
        
        'Inserta el título Caption en la fila debajo de la imagen
        With oTbl.Cell(r + 1, c).Range
          .InsertBefore vbCr
          .Characters.First.InsertCaption _
          Label:="Fotografía nº", Title:=StrTxt, _
          Position:=wdCaptionPositionBelow, ExcludeLabel:=False
          .Characters.First = vbNullString
          .Characters.Last.Previous = vbNullString
        End With
        
        'Salir cuando hayamos terminado
        If j = .SelectedItems.Count Then Exit For
      Next
      
      'Agregue filas adicionales según sea necesario
      If j < .SelectedItems.Count Then
        oTbl.Rows.Add
        oTbl.Rows.Add
      End If
    Next
'    oTbl.ConvertToText
  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"
    .Cells.VerticalAlignment = wdCellAlignVerticalCenter
    
  End With
  With .Rows(x + 1)
    .Height = CentimetersToPoints(0.5)
    .HeightRule = wdRowHeightExactly
    .Range.Style = "Normal"
    
  End With
End With
End Sub

Last edited by macropod; 03-05-2022 at 07:06 PM. Reason: Split thread & delete duplicate
Reply With Quote
 

Tags
solved



Similar Threads
Thread Thread Starter Forum Replies Last Post
Stack multiple tables on top of each other in a single table Remko Excel 2 04-18-2021 04:18 AM
Create Table for Multiple Pictures. 1 picture, 1 table and space between tables Create Table for Multiple Pictures victorybadges Word VBA 4 12-25-2020 02:11 PM
How to compile text from multiple tables into a cell in a nested table jrooney7 Word VBA 2 03-11-2019 07:55 AM
Create Table for Multiple Pictures. 1 picture, 1 table and space between tables Resize multiple pictures in a Word 2010 table JBA479 Word VBA 1 01-24-2014 08:51 PM
Create Table for Multiple Pictures. 1 picture, 1 table and space between tables Copy table cell formatting across multiple cells / tables pakistanray Word Tables 2 10-31-2011 08:07 AM

Other Forums: Access Forums

All times are GMT -7. The time now is 10:47 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