Microsoft Office Forums

Go Back   Microsoft Office Forums > >

Reply
 
Thread Tools Display Modes
  #1  
Old 07-27-2016, 08:36 AM
MAtkins MAtkins is offline Pages - force Word to place pics on page Windows 10 Pages - force Word to place pics on page Office 2016
Novice
Pages - force Word to place pics on page
 
Join Date: Jul 2016
Posts: 13
MAtkins is on a distinguished road
Default Pages - force Word to place pics on page

I've got a user determined (from a form) number of images to add to an existing docm file.


I need to add a page below the page the cursor is on and then add the images to that and if needed subsequent new pages.

Each page should have 3 columns (a table) with one image in each and as many rows as are needed (4 rows per page). The images are to be a specific width & height.

I've tried many different approaches and no matter what I do, Word puts the images where it feels they should go without regard to my code, often on the same page the cursor is on.
Also, it adds another blank page for no reason that I can see.

How can I make Word do what I need?

Below is my last attempt.
Code:
Public Sub insertSectionPics()
    Dim nPicsPage1 As Integer, nPicsPage As Integer, tblPics As Table, nRows As Integer, nPages As Integer, oPic As Word.InlineShape
    Dim tblCell As Cell
    Dim tblRow As Row
    Dim i As Integer, x As Integer, nIdx As Integer, nInch As Integer, nWidth As Integer, nHeight As Integer
    Dim nRects As Long
    Dim oRange As Word.Range, oRngCaption As Word.Range
    
    nWidth = 172
    nHeight = 129
    nInch = 72 'Points
    nIdx = -1
    
    If Not IsVarArrayEmpty(arSectionPics) Then
        If arSectionPics(0) <> "" And sSelPage <> "" Then
            nPicsPage1 = CInt(sSelPage)
            nPicsPage = nPicsPage1 + 1
            
            nRows = Round(((UBound(arSectionPics) + 1) / 3) + 0.4, 0)
            
            Selection.GoToNext wdGoToPage
            Selection.GoTo What:=wdGoToLine, Which:=wdGoToPrevious
            Selection.InsertNewPage
            Selection.GoTo What:=wdGoToLine, Which:=wdGoToPrevious
            Selection.Text = "Add Pics Table"
                        
            Selection.Find.Text = "Add Pics Table"
            Set oRange = ActiveDocument.Content
            oRange.Find.Execute FindText:="Add Pics Table", Forward:=True
            
            Set tblPics = ActiveDocument.Tables.Add(Range:=oRange, NumRows:=nRows, NumColumns:=3)
            tblPics.Columns.DistributeWidth
            
            For i = 1 To tblPics.Rows.Count
                Set tblRow = tblPics.Rows(i)
                tblRow.Cells.VerticalAlignment = wdCellAlignVerticalTop
                tblRow.Height = nHeight + 16
                For x = 1 To 3
                    nIdx = nIdx + 1
                    If nIdx <= UBound(arSectionPics) Then
                        Set tblCell = tblRow.Cells(x)
                        tblCell.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
                        Set oPic = tblCell.Range.InlineShapes.AddPicture(FileName:=arSectionPics(nIdx), LinkToFile:=False, SaveWithDocument:=True)
                        oPic.Height = nHeight 'Points
                        oPic.Width = nWidth 'Points
                                                
                        Set oRngCaption = ActiveDocument.Range(tblCell.Range.End - 1, tblCell.Range.End)
                        oRngCaption.ParagraphFormat.Alignment = wdAlignParagraphCenter
                        oRngCaption.Font.Bold = False
                        oRngCaption.Font.Name = "Arial"
                        oRngCaption.Font.Size = 9
                        
                        If arSectionPicCaptions(nIdx) <> "" Then
                            oRngCaption.Text = arSectionPicCaptions(nIdx) 'vbCrLf &
                        Else
                            oRngCaption.Text = " "
                        End If
                    End If
                Next
            Next
        End If
    End If
    
    bTablesLoaded = False
    fmSectionPics.Hide
    Set fmSectionPics = Nothing
End Sub
Reply With Quote
  #2  
Old 07-27-2016, 09:20 PM
gmayor's Avatar
gmayor gmayor is offline Pages - force Word to place pics on page Windows 10 Pages - force Word to place pics on page Office 2016
Expert
 
Join Date: Aug 2014
Posts: 4,101
gmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud of
Default

Without knowing what's in your array (which is not defined in your macro) you probably need something like
Code:
Public Sub insertSectionPics(arSectionPics As Variant)
Dim oTable As Table
Dim oRng As Range, oCell As Range
Dim i As Long, j As Long
    Set oRng = ActiveDocument.Bookmarks("\page").Range
    oRng.Collapse 0
    oRng.InsertBreak wdSectionBreakNextPage
    oRng.start = oRng.start - 1
    oRng.Collapse 1
    Set oTable = ActiveDocument.Tables.Add(oRng, 1, 3)
    oTable.AutoFitBehavior (wdAutoFitFixed)
    j = 1
    For i = LBound(arSectionPics) To UBound(arSectionPics)
        If i > 0 And i Mod 3 = 0 Then
            oTable.Rows.Add
            j = j + 1
        End If
        Set oCell = oTable.Cell(j, i Mod 3 + 1).Range
        oCell.End = oCell.End - 1
        ActiveDocument.InlineShapes.AddPicture _
                FileName:=arSectionPics(i), _
                LinkToFile:=False, _
                Range:=oCell
    Next i
End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019)
Visit my web site for more programming tips and ready made processes www.gmayor.com
Reply With Quote
  #3  
Old 07-29-2016, 05:31 AM
MAtkins MAtkins is offline Pages - force Word to place pics on page Windows 10 Pages - force Word to place pics on page Office 2016
Novice
Pages - force Word to place pics on page
 
Join Date: Jul 2016
Posts: 13
MAtkins is on a distinguished road
Default

Thanks gmayor: that helped.

The array is global and it has the file paths as you suspected.

I didn't mention that there is a potential caption below each pic.
If you look at my code you can see where I add space for it below each pic and if the caption exists to print it within that space.
I need to make sure all the pics are aligned, with or without a caption.

Also, there is no padding between the pics.
Can that be added?
The caption should take care of it vertically but I still need padding horizontally.
Reply With Quote
  #4  
Old 07-29-2016, 06:00 AM
gmayor's Avatar
gmayor gmayor is offline Pages - force Word to place pics on page Windows 10 Pages - force Word to place pics on page Office 2016
Expert
 
Join Date: Aug 2014
Posts: 4,101
gmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud of
Default

I think I would be inclined to add the captions in a second row underneath the row containing the images. That would ensure the images are aligned, and if you want horizontal padding, you can increase the cell margins to give you the extra space.

It just means that you start the table with two rows rather than one and add two rows for each three images and adjust the calculations accordingly to ensure images and captions go in the appropriate rows.
__________________
Graham Mayor - MS MVP (Word) (2002-2019)
Visit my web site for more programming tips and ready made processes www.gmayor.com
Reply With Quote
  #5  
Old 07-29-2016, 07:26 AM
MAtkins MAtkins is offline Pages - force Word to place pics on page Windows 10 Pages - force Word to place pics on page Office 2016
Novice
Pages - force Word to place pics on page
 
Join Date: Jul 2016
Posts: 13
MAtkins is on a distinguished road
Default

Looks like this will work.

Thanks gmayor. Your code is concise and I have no idea how you learned how to do this.
I never realized there are built in 'Bookmarks' or that Break was a permanent element in the document.

Thanks again for your help.
Reply With Quote
Reply

Thread Tools
Display Modes


Similar Threads
Thread Thread Starter Forum Replies Last Post
Using mail merge to make place cards. One record with data over two pages drew.last Mail Merge 2 03-05-2015 04:37 PM
Pages - force Word to place pics on page how force Word to scroll to full page view browns87 Word 2 08-05-2012 03:25 PM
Printing a Selection in Word and keeping it in the same place on the page punkrae Word 0 03-29-2012 10:49 AM
Force a page break Emaleth9999 Mail Merge 1 02-09-2012 02:36 AM
Pages - force Word to place pics on page Place pages in alpha order. Wskip49 Word 5 08-28-2011 07:54 PM

Other Forums: Access Forums

All times are GMT -7. The time now is 04:30 AM.


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