Sie sind auf Seite 1von 2

Option Explicit

Sub DOSCOLUMNAS()

Application.ScreenUpdating = False
Dim i As Long, j As Long, c As Long, r As Long, NumCols As Long, a As Long, b As
Long
Dim oTbl As Table, TblWdth As Single, StrTxt As String, RwHght As Single, objWord
As Object, ColWdth As Single
On Error GoTo ErrExit

'Input box to get value from user


'a = InputBox("COLUMNAS DE LA TABLA")
a = 2
NumCols = a
'NumCols = CLng(InputBox("How Many Columns per Row?"))
RwHght = 9
'RwHght = CSng(InputBox("What max height for the pictures, in centimeters (e.g.
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:="Foto No"
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
.InsertBefore vbCr
.Characters.First.InsertCaption _
Label:="Foto No", Title:=StrTxt, _
Position:=wdCaptionPositionBelow, ExcludeLabel:=False
.Characters.First = vbNullString
If .Characters.Last.Previous.Information(wdVerticalPositionRelativeToPage) <> _
.Characters.First.Information(wdVerticalPositionRelativeToPage) Then
.FitTextWidth = ColWdth
End If
'.Characters.Last.Previous = vbNullString
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

Dim answer As VbMsgBoxResult


answer = MsgBox("Desea Insertar mas Fotos?", vbYesNo)
If answer = vbYes Then
Selection.Tables(1).Select
Selection.Collapse WdCollapseDirection.wdCollapseEnd
Selection.TypeParagraph
Selection.TypeParagraph
Call DOSCOLUMNAS
Else
' Code to stop the calculation

End If
Exit Sub
Set objWord = GetObject(, "Word.Application")
End Sub
Sub FormatRows(oTbl As Table, x As Long, Hght As Single)

With oTbl
With .Rows(x)
.Height = CentimetersToPoints(Hght) * 0.5
.HeightRule = wdRowHeightExactly
.Range.Style = "Normal"
End With
With .Rows(x + 1)
.Height = CentimetersToPoints(0.5)
.HeightRule = wdRowHeightExactly
.Range.Style = "Normal"
End With
End With

End Sub

Das könnte Ihnen auch gefallen