Ureader.com  
Microsoft software help and Community
   home   |   control panel login   |   archive   |  
 
Word
application.errors
conversions
docmanagement
drawing.graphics
formatting.longdocs
international
internet.assistant
mail
mailmerge.fields
menustoolbars
newusers
numbering
oleinterop
pagelayout
printingfonts
setup.networking
spelling.grammar
tables
vba.addins
vba.beginners
vba.customization
vba.general
vba.userforms
web.authoring
word6-7macros
word97vba
  
 
date: Fri, 26 Sep 2008 13:41:02 -0700,    group: microsoft.public.word.vba.general        back       


Need Macro Help to Insert Pictures into Table with a Picture per R   
Here is what I have done so far just by doing Record New Macro.

Sub InsertPix()
'
' InsertPix Macro
' Macro recorded 9/25/2008 by Alex Campbell
'
    Selection.InlineShapes.AddPicture FileName:= _
        "U:\Ax\1-HowTo\Maillist\20080826-01.gif", LinkToFile:=False, _
        SaveWithDocument:=True
    Selection.MoveRight Unit:=wdCell
    Selection.MoveRight Unit:=wdCell
    Selection.InlineShapes.AddPicture FileName:= _
        "U:\Ax\1-HowTo\Maillist\20080826-02.gif", LinkToFile:=False, _
        SaveWithDocument:=True
    Selection.MoveRight Unit:=wdCell
    Selection.MoveRight Unit:=wdCell
    Selection.InlineShapes.AddPicture FileName:= _
        "U:\Ax\1-HowTo\Maillist\20080826-03.gif", LinkToFile:=False, _
        SaveWithDocument:=True
    Selection.MoveRight Unit:=wdCell
    Selection.MoveRight Unit:=wdCell
    Selection.InlineShapes.AddPicture FileName:= _
        "U:\Ax\1-HowTo\Maillist\20080826-04.gif", LinkToFile:=False, _
        SaveWithDocument:=True
End Sub


I have NO experience writing macros.
I would like to start with a table with the first column empty and the 
images in the second column.

I want to end up with the first column empty and each image is on a 
different row in the second column.

The purpose of this to pull all the screenshots into a table where the first 
column will be used for instructions explaining the images in the second 
column.

I set the default location of Clipart Pictures with File Locations.  It 
would be very useful if the user could choose the file location as part of 
the macro.

I created a table with one row and two columns.

I put the cursor in the second column, chose Insert, Picture, From File.

I highlighted the first picture and clicked on Insert.

Then I pressed tab twice.
The first is to create a new row.
The second was to move to the second column.

I would like the macro to move through the selected  pictures in the folder.
date: Fri, 26 Sep 2008 13:41:02 -0700   author:   alex20850

Re: Need Macro Help to Insert Pictures into Table with a Picture per R   
The macro recorder is OK as far as it goes but is not going to take you much 
farther here I'm afraid. Based on the information you have provided, as long 
as the images have the same filename with the addition of "-nn" where nn is 
an incrementing number, the following macro will extract the choices from 
the user and insert the images into an existing table large enough to 
accommodate them. The defaults reflect the filenames in your example.


Sub InsertPix()
Dim oTable As Table
Dim sQuery As String
Dim sName As String
Dim sNum As Long
Dim i As Long
Dim fDialog As FileDialog
Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)

With fDialog 'Let the user select the folder containg the images
    .Title = "Select Folder containing the images" _
    & "to be inserted and click OK"
    .AllowMultiSelect = False
    .InitialView = msoFileDialogViewList
    If .Show <> -1 Then
        MsgBox "Cancelled By User"
        Exit Sub
    End If
    DocDir = fDialog.SelectedItems.Item(1)
    If Right(DocDir, 1) <> "\" Then DocDir = DocDir + "\"
End With
'Insert the common part of the filename - here 20080826
sName = InputBox("What is the common filename" _
        & vbCr & "of the images", "insert Pix" _
        , "20080826")
'If the first picture in the sequence is not 01 insert the correct start 
number
sNum = InputBox("What is the start number of the picture sequence", _
        "Insert Pix", 1)
'How many images in the sequence - they must be
'consecutively numbers for this to work.
sQuery = InputBox("Insert how many images?", "Insert Pix", 4)
Set oTable = ActiveDocument.Tables(1)
For i = sNum To sQuery
    'name the images based on the collected info
    sImage = DocDir & sName & "-" & format(i, "00") & ".gif"
    'Choose the table cell to enter the next image
    oTable.Cell(i, 2).Select
    With Selection ' and insert it
        .InlineShapes.AddPicture FileName:=sImage _
        , LinkToFile:=False, _
        SaveWithDocument:=True
    End With
'repeat until all the images are inserted
Next i
End Sub

-- 
<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
Graham Mayor -  Word MVP

My web site www.gmayor.com
Word MVP web site http://word.mvps.org
<>>< ><<> ><<> <>>< ><<> <>>< <>><<>


alex20850 wrote:
> Here is what I have done so far just by doing Record New Macro.
>
> Sub InsertPix()
> '
> ' InsertPix Macro
> ' Macro recorded 9/25/2008 by Alex Campbell
> '
>    Selection.InlineShapes.AddPicture FileName:= _
>        "U:\Ax\1-HowTo\Maillist\20080826-01.gif", LinkToFile:=False, _
>        SaveWithDocument:=True
>    Selection.MoveRight Unit:=wdCell
>    Selection.MoveRight Unit:=wdCell
>    Selection.InlineShapes.AddPicture FileName:= _
>        "U:\Ax\1-HowTo\Maillist\20080826-02.gif", LinkToFile:=False, _
>        SaveWithDocument:=True
>    Selection.MoveRight Unit:=wdCell
>    Selection.MoveRight Unit:=wdCell
>    Selection.InlineShapes.AddPicture FileName:= _
>        "U:\Ax\1-HowTo\Maillist\20080826-03.gif", LinkToFile:=False, _
>        SaveWithDocument:=True
>    Selection.MoveRight Unit:=wdCell
>    Selection.MoveRight Unit:=wdCell
>    Selection.InlineShapes.AddPicture FileName:= _
>        "U:\Ax\1-HowTo\Maillist\20080826-04.gif", LinkToFile:=False, _
>        SaveWithDocument:=True
> End Sub
>
>
> I have NO experience writing macros.
> I would like to start with a table with the first column empty and the
> images in the second column.
>
> I want to end up with the first column empty and each image is on a
> different row in the second column.
>
> The purpose of this to pull all the screenshots into a table where
> the first column will be used for instructions explaining the images
> in the second column.
>
> I set the default location of Clipart Pictures with File Locations.
> It would be very useful if the user could choose the file location as
> part of the macro.
>
> I created a table with one row and two columns.
>
> I put the cursor in the second column, chose Insert, Picture, From
> File.
>
> I highlighted the first picture and clicked on Insert.
>
> Then I pressed tab twice.
> The first is to create a new row.
> The second was to move to the second column.
>
> I would like the macro to move through the selected  pictures in the
> folder.
date: Sat, 27 Sep 2008 08:52:30 +0300   author:   Graham Mayor

Re: Need Macro Help to Insert Pictures into Table with a Picture p   
Thanks for your work, but I thought I had included in my original question 
this macro I had already found and I would like to adapt to my use:

Use the FileDialog rather can the Word's Dialogs. The FileDialog collection
allows multiple selection.
From the VBA Help file's example for FileIndex Property I modified the code
to insert multiple graphics into the document.
Sub AddMuliplePictures()
    'Declare a variable as a FileDialog object.
    Dim fd As FileDialog

    'Create a FileDialog object as a File Picker dialog box.
    Set fd = Application.FileDialog(msoFileDialogFilePicker)

    'Declare a variable to contain the path
    'of each selected item. Even though the path is a String,
    'the variable must be a Variant because For Each...Next
    'routines only work with Variants and Objects.
    Dim vrtSelectedItem As Variant

    'Use a With...End With block to reference the FileDialog object.
    With fd

        'Add a filter that includes GIF and JPEG images and make it the
second item in the list.
        .Filters.Add "Images", "*.gif; *.jpg; *.jpeg"

        'Sets the initial file filter to number 2.
        .FilterIndex = 2

        'Use the Show method to display the File Picker dialog box and
return the user's action.
        'If the user presses the action button...
        If .Show = -1 Then

            'Step through each string in the FileDialogSelectedItems
collection.
            For Each vrtSelectedItem In .SelectedItems

                'vrtSelectedItem is a String that contains the path of each
selected item.

                 Selection.InlineShapes.AddPicture FileName:= _
                  vrtSelectedItem _
                , LinkToFile:=False, SaveWithDocument:=True
            Next vrtSelectedItem
        'If the user presses Cancel...
        Else
        End If
    End With

    'Set the object variable to Nothing.
    Set fd = Nothing

End Sub

-- 
Harold Kless, MCSD
Support Professional
Microsoft Technical Support for Business Applications
haro...@microsoft.com 

"Graham Mayor" wrote:

> The macro recorder is OK as far as it goes but is not going to take you much 
> farther here I'm afraid. Based on the information you have provided, as long 
> as the images have the same filename with the addition of "-nn" where nn is 
> an incrementing number, the following macro will extract the choices from 
> the user and insert the images into an existing table large enough to 
> accommodate them. The defaults reflect the filenames in your example.
> 
> 
> Sub InsertPix()
> Dim oTable As Table
> Dim sQuery As String
> Dim sName As String
> Dim sNum As Long
> Dim i As Long
> Dim fDialog As FileDialog
> Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)
> 
> With fDialog 'Let the user select the folder containg the images
>     .Title = "Select Folder containing the images" _
>     & "to be inserted and click OK"
>     .AllowMultiSelect = False
>     .InitialView = msoFileDialogViewList
>     If .Show <> -1 Then
>         MsgBox "Cancelled By User"
>         Exit Sub
>     End If
>     DocDir = fDialog.SelectedItems.Item(1)
>     If Right(DocDir, 1) <> "\" Then DocDir = DocDir + "\"
> End With
> 'Insert the common part of the filename - here 20080826
> sName = InputBox("What is the common filename" _
>         & vbCr & "of the images", "insert Pix" _
>         , "20080826")
> 'If the first picture in the sequence is not 01 insert the correct start 
> number
> sNum = InputBox("What is the start number of the picture sequence", _
>         "Insert Pix", 1)
> 'How many images in the sequence - they must be
> 'consecutively numbers for this to work.
> sQuery = InputBox("Insert how many images?", "Insert Pix", 4)
> Set oTable = ActiveDocument.Tables(1)
> For i = sNum To sQuery
>     'name the images based on the collected info
>     sImage = DocDir & sName & "-" & format(i, "00") & ".gif"
>     'Choose the table cell to enter the next image
>     oTable.Cell(i, 2).Select
>     With Selection ' and insert it
>         .InlineShapes.AddPicture FileName:=sImage _
>         , LinkToFile:=False, _
>         SaveWithDocument:=True
>     End With
> 'repeat until all the images are inserted
> Next i
> End Sub
> 
> -- 
> <>>< ><<> ><<> <>>< ><<> <>>< <>><<>
> Graham Mayor -  Word MVP
> 
> My web site www.gmayor.com
> Word MVP web site http://word.mvps.org
> <>>< ><<> ><<> <>>< ><<> <>>< <>><<>
> 
> 
> alex20850 wrote:
> > Here is what I have done so far just by doing Record New Macro.
> >
> > Sub InsertPix()
> > '
> > ' InsertPix Macro
> > ' Macro recorded 9/25/2008 by Alex Campbell
> > '
> >    Selection.InlineShapes.AddPicture FileName:= _
> >        "U:\Ax\1-HowTo\Maillist\20080826-01.gif", LinkToFile:=False, _
> >        SaveWithDocument:=True
> >    Selection.MoveRight Unit:=wdCell
> >    Selection.MoveRight Unit:=wdCell
> >    Selection.InlineShapes.AddPicture FileName:= _
> >        "U:\Ax\1-HowTo\Maillist\20080826-02.gif", LinkToFile:=False, _
> >        SaveWithDocument:=True
> >    Selection.MoveRight Unit:=wdCell
> >    Selection.MoveRight Unit:=wdCell
> >    Selection.InlineShapes.AddPicture FileName:= _
> >        "U:\Ax\1-HowTo\Maillist\20080826-03.gif", LinkToFile:=False, _
> >        SaveWithDocument:=True
> >    Selection.MoveRight Unit:=wdCell
> >    Selection.MoveRight Unit:=wdCell
> >    Selection.InlineShapes.AddPicture FileName:= _
> >        "U:\Ax\1-HowTo\Maillist\20080826-04.gif", LinkToFile:=False, _
> >        SaveWithDocument:=True
> > End Sub
> >
> >
> > I have NO experience writing macros.
> > I would like to start with a table with the first column empty and the
> > images in the second column.
> >
> > I want to end up with the first column empty and each image is on a
> > different row in the second column.
> >
> > The purpose of this to pull all the screenshots into a table where
> > the first column will be used for instructions explaining the images
> > in the second column.
> >
> > I set the default location of Clipart Pictures with File Locations.
> > It would be very useful if the user could choose the file location as
> > part of the macro.
> >
> > I created a table with one row and two columns.
> >
> > I put the cursor in the second column, chose Insert, Picture, From
> > File.
> >
> > I highlighted the first picture and clicked on Insert.
> >
> > Then I pressed tab twice.
> > The first is to create a new row.
> > The second was to move to the second column.
> >
> > I would like the macro to move through the selected  pictures in the
> > folder. 
> 
> 
>
date: Sat, 27 Sep 2008 04:05:01 -0700   author:   alex20850

Re: Need Macro Help to Insert Pictures into Table with a Picture p   
You hadn't included the macro :(

The macro you propose will certainly do the job, but because of the way Word 
selects files you will find that you have little control over the order in 
which the images are inserted when using that method. If that doesn't 
present a problem, start with a one row table and the following will add as 
many rows as necessary and fill column 2 with the images.

Sub AddMultiplePictures()
Dim fd As FileDialog
Dim oTable As Table
Dim i As Long
Dim vrtSelectedItem As Variant
Set oTable = ActiveDocument.Tables(1)
oTable.AutoFitBehavior (wdAutoFitFixed)
Set fd = Application.FileDialog(msoFileDialogFilePicker)
i = 1
With fd
    .Filters.Add "Images", "*.gif; *.jpg; *.jpeg"
    .FilterIndex = 2
    If .Show = -1 Then
        For Each vrtSelectedItem In .SelectedItems
            oTable.Cell(i, 2).Select
            With Selection
                .InlineShapes.AddPicture FileName:= _
                vrtSelectedItem _
                , LinkToFile:=False, SaveWithDocument:=True
                .InsertRowsBelow 1
            End With
            i = i + 1
        Next vrtSelectedItem
    Else
    End If
End With
Selection.Rows.Delete
Set fd = Nothing
End Sub

The original macro whilst not particularly elegant will, when used as 
suggested, insert the pictures in the order in which they are selected.

I have an add-in available from my web site - boiler.dot - which uses a 
different technique that provides control over the insertion order. It was 
simple enough to modify that to insert the pictures into column 2 of a table 
and you can download the modified version from 
http://www.gmayor.com/Extras/InsertPix.dot. This is an add-in and should be 
installed in the Word startup folder. It requires a one row table of at 
least two columns to work. Sufficient rows to accommodate the pictures you 
select will be added, using the same technique shown above.

-- 
<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
Graham Mayor -  Word MVP

My web site www.gmayor.com
Word MVP web site http://word.mvps.org
<>>< ><<> ><<> <>>< ><<> <>>< <>><<>



alex20850 wrote:
> Thanks for your work, but I thought I had included in my original
> question this macro I had already found and I would like to adapt to
> my use:
>
> Use the FileDialog rather can the Word's Dialogs. The FileDialog
> collection allows multiple selection.
> From the VBA Help file's example for FileIndex Property I modified
> the code to insert multiple graphics into the document.
> Sub AddMuliplePictures()
>    'Declare a variable as a FileDialog object.
>    Dim fd As FileDialog
>
>    'Create a FileDialog object as a File Picker dialog box.
>    Set fd = Application.FileDialog(msoFileDialogFilePicker)
>
>    'Declare a variable to contain the path
>    'of each selected item. Even though the path is a String,
>    'the variable must be a Variant because For Each...Next
>    'routines only work with Variants and Objects.
>    Dim vrtSelectedItem As Variant
>
>    'Use a With...End With block to reference the FileDialog object.
>    With fd
>
>        'Add a filter that includes GIF and JPEG images and make it the
> second item in the list.
>        .Filters.Add "Images", "*.gif; *.jpg; *.jpeg"
>
>        'Sets the initial file filter to number 2.
>        .FilterIndex = 2
>
>        'Use the Show method to display the File Picker dialog box and
> return the user's action.
>        'If the user presses the action button...
>        If .Show = -1 Then
>
>            'Step through each string in the FileDialogSelectedItems
> collection.
>            For Each vrtSelectedItem In .SelectedItems
>
>                'vrtSelectedItem is a String that contains the path of
> each selected item.
>
>                 Selection.InlineShapes.AddPicture FileName:= _
>                  vrtSelectedItem _
>                , LinkToFile:=False, SaveWithDocument:=True
>            Next vrtSelectedItem
>        'If the user presses Cancel...
>        Else
>        End If
>    End With
>
>    'Set the object variable to Nothing.
>    Set fd = Nothing
>
> End Sub
>
>
>> The macro recorder is OK as far as it goes but is not going to take
>> you much farther here I'm afraid. Based on the information you have
>> provided, as long as the images have the same filename with the
>> addition of "-nn" where nn is an incrementing number, the following
>> macro will extract the choices from the user and insert the images
>> into an existing table large enough to accommodate them. The
>> defaults reflect the filenames in your example.
>>
>>
>> Sub InsertPix()
>> Dim oTable As Table
>> Dim sQuery As String
>> Dim sName As String
>> Dim sNum As Long
>> Dim i As Long
>> Dim fDialog As FileDialog
>> Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)
>>
>> With fDialog 'Let the user select the folder containg the images
>>     .Title = "Select Folder containing the images" _
>>     & "to be inserted and click OK"
>>     .AllowMultiSelect = False
>>     .InitialView = msoFileDialogViewList
>>     If .Show <> -1 Then
>>         MsgBox "Cancelled By User"
>>         Exit Sub
>>     End If
>>     DocDir = fDialog.SelectedItems.Item(1)
>>     If Right(DocDir, 1) <> "\" Then DocDir = DocDir + "\"
>> End With
>> 'Insert the common part of the filename - here 20080826
>> sName = InputBox("What is the common filename" _
>>         & vbCr & "of the images", "insert Pix" _
>>         , "20080826")
>> 'If the first picture in the sequence is not 01 insert the correct
>> start number
>> sNum = InputBox("What is the start number of the picture sequence", _
>>         "Insert Pix", 1)
>> 'How many images in the sequence - they must be
>> 'consecutively numbers for this to work.
>> sQuery = InputBox("Insert how many images?", "Insert Pix", 4)
>> Set oTable = ActiveDocument.Tables(1)
>> For i = sNum To sQuery
>>     'name the images based on the collected info
>>     sImage = DocDir & sName & "-" & format(i, "00") & ".gif"
>>     'Choose the table cell to enter the next image
>>     oTable.Cell(i, 2).Select
>>     With Selection ' and insert it
>>         .InlineShapes.AddPicture FileName:=sImage _
>>         , LinkToFile:=False, _
>>         SaveWithDocument:=True
>>     End With
>> 'repeat until all the images are inserted
>> Next i
>> End Sub
>>
>> --
>> <>>< ><<> ><<> <>>< ><<> <>>< <>><<>
>> Graham Mayor -  Word MVP
>>
>> My web site www.gmayor.com
>> Word MVP web site http://word.mvps.org
>> <>>< ><<> ><<> <>>< ><<> <>>< <>><<>
>>
>>
>> alex20850 wrote:
>>> Here is what I have done so far just by doing Record New Macro.
>>>
>>> Sub InsertPix()
>>> '
>>> ' InsertPix Macro
>>> ' Macro recorded 9/25/2008 by Alex Campbell
>>> '
>>>    Selection.InlineShapes.AddPicture FileName:= _
>>>        "U:\Ax\1-HowTo\Maillist\20080826-01.gif", LinkToFile:=False,
>>>        _ SaveWithDocument:=True
>>>    Selection.MoveRight Unit:=wdCell
>>>    Selection.MoveRight Unit:=wdCell
>>>    Selection.InlineShapes.AddPicture FileName:= _
>>>        "U:\Ax\1-HowTo\Maillist\20080826-02.gif", LinkToFile:=False,
>>>        _ SaveWithDocument:=True
>>>    Selection.MoveRight Unit:=wdCell
>>>    Selection.MoveRight Unit:=wdCell
>>>    Selection.InlineShapes.AddPicture FileName:= _
>>>        "U:\Ax\1-HowTo\Maillist\20080826-03.gif", LinkToFile:=False,
>>>        _ SaveWithDocument:=True
>>>    Selection.MoveRight Unit:=wdCell
>>>    Selection.MoveRight Unit:=wdCell
>>>    Selection.InlineShapes.AddPicture FileName:= _
>>>        "U:\Ax\1-HowTo\Maillist\20080826-04.gif", LinkToFile:=False,
>>>        _ SaveWithDocument:=True
>>> End Sub
>>>
>>>
>>> I have NO experience writing macros.
>>> I would like to start with a table with the first column empty and
>>> the images in the second column.
>>>
>>> I want to end up with the first column empty and each image is on a
>>> different row in the second column.
>>>
>>> The purpose of this to pull all the screenshots into a table where
>>> the first column will be used for instructions explaining the images
>>> in the second column.
>>>
>>> I set the default location of Clipart Pictures with File Locations.
>>> It would be very useful if the user could choose the file location
>>> as part of the macro.
>>>
>>> I created a table with one row and two columns.
>>>
>>> I put the cursor in the second column, chose Insert, Picture, From
>>> File.
>>>
>>> I highlighted the first picture and clicked on Insert.
>>>
>>> Then I pressed tab twice.
>>> The first is to create a new row.
>>> The second was to move to the second column.
>>>
>>> I would like the macro to move through the selected  pictures in the
>>> folder.
date: Sat, 27 Sep 2008 15:58:47 +0300   author:   Graham Mayor

Google
 
Web ureader.com


    COPYRIGHT 2007, YARDI TECHNOLOGY LIMITED, ALL RIGHT RESERVE  |   contact us