ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Insert Pictures using Macros (https://www.excelbanter.com/excel-programming/412612-insert-pictures-using-macros.html)

[email protected]

Insert Pictures using Macros
 
Hi I have a Marco that inserts pictures in excel, I need to make a few
changes but I am having difficulty.
This macro is looking into a cell that has the picture file location
and it is inserting the picture right below that cell. But what I need
to change is, I need to be able to insert the picture to different
cell (example: the cell that has the location on the file is "B4" and
I want to insert the picture in cell "B9")

Below is the macro that I use. I would greatly appreciate for your
help, Thank You.






Sub add_pictures()


Const PictureHeight = 120

Application.ScreenUpdating = False

'delete pictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
On Error GoTo NoPict 'new line
Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
If cell.Offset(1, 0).Value < "Picture not Available" Then
'new line
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
pict.Top = cell.Offset(1, 0).Top
pict.Left = cell.Offset(1, 0).Left
End If
End If 'new line
Next cell
Exit Sub 'new line


NoPict: cell.Offset(1, 0).Value = "Picture not Available" 'new line
Resume Next 'new line


End Sub


joel

Insert Pictures using Macros
 
From
pict.Top = cell.Offset(1, 0).Top
pict.Left = cell.Offset(1, 0).Left
to
pict.Top = Range("B9").Top
pict.Left = Range("B9").Left


" wrote:

Hi I have a Marco that inserts pictures in excel, I need to make a few
changes but I am having difficulty.
This macro is looking into a cell that has the picture file location
and it is inserting the picture right below that cell. But what I need
to change is, I need to be able to insert the picture to different
cell (example: the cell that has the location on the file is "B4" and
I want to insert the picture in cell "B9")

Below is the macro that I use. I would greatly appreciate for your
help, Thank You.






Sub add_pictures()


Const PictureHeight = 120

Application.ScreenUpdating = False

'delete pictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
On Error GoTo NoPict 'new line
Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
If cell.Offset(1, 0).Value < "Picture not Available" Then
'new line
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
pict.Top = cell.Offset(1, 0).Top
pict.Left = cell.Offset(1, 0).Left
End If
End If 'new line
Next cell
Exit Sub 'new line


NoPict: cell.Offset(1, 0).Value = "Picture not Available" 'new line
Resume Next 'new line


End Sub



[email protected]

Insert Pictures using Macros
 
On Jun 14, 7:28*pm, Joel wrote:
From
* * * pict.Top = cell.Offset(1, 0).Top
* * * pict.Left = cell.Offset(1, 0).Left
to
* * * pict.Top = Range("B9").Top
* * * pict.Left = Range("B9").Left



" wrote:
Hi I have a Marco that inserts pictures in excel, I need to make a few
changes but I am having difficulty.
This macro is looking into a cell that has the picture file location
and it is inserting the picture right below that cell. But what I need
to change is, I need to be able to insert the picture to different
cell (example: the cell that has the location on the file is "B4" and
I want to insert the picture in cell "B9")


Below is the macro that I use. *I would greatly appreciate for your
help, Thank You.


Sub add_pictures()


Const PictureHeight = 120


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
* *If cell < "" Then
* *cell.Offset(1, 0).ClearContents
* *On Error GoTo NoPict 'new line
* * * Set pict = ActiveSheet.Pictures. _
* * * * *Insert(cell.Value)
* * * * *If cell.Offset(1, 0).Value < "Picture not Available" Then
'new line
* * * pict.ShapeRange.LockAspectRatio = msoTrue
* * * pict.ShapeRange.Height = PictureHeight
* * * pict.Top = cell.Offset(1, 0).Top
* * * pict.Left = cell.Offset(1, 0).Left
* *End If
* * * * End If 'new line
Next cell
Exit Sub 'new line


NoPict: cell.Offset(1, 0).Value = "Picture not Available" 'new line
Resume Next 'new line


End Sub- Hide quoted text -


- Show quoted text -


Thanks, but I am still having some difficulty, I used you line and yes
the picture was inserted in the right Cell but it is not only one
picture, the picture address starts from "B4: AA4" and the pictures
should be inserted from "B9:AA9" and if a picture is not available it
should insert the text "Picture not Available" with the addition of
you text it insets all the pictures in cell "B9" one on top of each
other. and the text "Picture not Available" gets inserted in cell
"B5"
I thank you in advance I hope you can help.

joel

Insert Pictures using Macros
 
Pictures are not part of the worksheet cell structure but instead a picture
is an object tjat sits ontop of the worksheet. You can put a picture ontop
of a cell by using the Top and Left properties. Top and Left are pixel
locations on the screen and changes when you change the height of a row or
Width of a column. the pciture will not move when the Row height is changed
or the column width is changed so the picture will look like it moved when
height/width are adjusted.

Use DIR to find if a picture exists before you inset the picture on the
worksheet. The code below will work as long as the formaty (ie jpg) of the
picture is recognized on your PC. You have to adjust the width of the
Columns on the worksheet to the right size before you add the picture.
Another choise is to add the picture and use the width porperty of the cell
and the width porperty of the picture to get the picture to appear like they
are the same width as the column. You can either make the all the columns
the same width and scale the picture to fit the column width, or scale the
Columns width to fit the picture width.

Sub add_pictures()


Const PictureHeight = 120

Application.ScreenUpdating = False

'delete pictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = dir(cell.Value)
if PictureFound < "" then

Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
pict.Top = cells(9,cell.column).Top
pict.Left = cells(9,cell.column).Left
else
cell(1,0) = "Picture not Available"
End If
End If 'new line
Next cell
Exit Sub 'new line

End Sub


" wrote:

On Jun 14, 7:28 pm, Joel wrote:
From
pict.Top = cell.Offset(1, 0).Top
pict.Left = cell.Offset(1, 0).Left
to
pict.Top = Range("B9").Top
pict.Left = Range("B9").Left



" wrote:
Hi I have a Marco that inserts pictures in excel, I need to make a few
changes but I am having difficulty.
This macro is looking into a cell that has the picture file location
and it is inserting the picture right below that cell. But what I need
to change is, I need to be able to insert the picture to different
cell (example: the cell that has the location on the file is "B4" and
I want to insert the picture in cell "B9")


Below is the macro that I use. I would greatly appreciate for your
help, Thank You.


Sub add_pictures()


Const PictureHeight = 120


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
On Error GoTo NoPict 'new line
Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
If cell.Offset(1, 0).Value < "Picture not Available" Then
'new line
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
pict.Top = cell.Offset(1, 0).Top
pict.Left = cell.Offset(1, 0).Left
End If
End If 'new line
Next cell
Exit Sub 'new line


NoPict: cell.Offset(1, 0).Value = "Picture not Available" 'new line
Resume Next 'new line


End Sub- Hide quoted text -


- Show quoted text -


Thanks, but I am still having some difficulty, I used you line and yes
the picture was inserted in the right Cell but it is not only one
picture, the picture address starts from "B4: AA4" and the pictures
should be inserted from "B9:AA9" and if a picture is not available it
should insert the text "Picture not Available" with the addition of
you text it insets all the pictures in cell "B9" one on top of each
other. and the text "Picture not Available" gets inserted in cell
"B5"
I thank you in advance I hope you can help.


[email protected]

Insert Pictures using Macros
 
On Jun 15, 4:25*am, Joel wrote:
Picturesare not part of the worksheet cell structure but instead a picture
is an object tjat sits ontop of the worksheet. *You can put a picture ontop
of a cell by using the Top and Left properties. *Top and Left are pixel
locations on the screen *and changes when you change the height of a row or
Width of a column. *the pciture will *not move when the Row height is changed
or the column width is changed so the picture will look like it moved when
height/width are adjusted.

Use DIR to find if a picture exists before you *inset the picture on the
worksheet. *The code below will work as long as the formaty (ie jpg) of the
picture is recognized on your PC. * You have to adjust the width of the
Columns on the worksheet to the right size before you add the picture. *
Another choise is to add the picture and use the width porperty of the cell
and the width porperty of the picture to get the picture to appear like they
are the same width as the column. *You can either make the all the columns
the same width and scale the picture to fit the column width, or scale the
Columns width to fit the picture width.

Sub add_pictures()

Const PictureHeight = 120

Application.ScreenUpdating = False

'deletepictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp

LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight

For Each cell In Range("B4:IV4")
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = dir(cell.Value)
* * * if PictureFound < "" then

* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(cell.Value)
* * * * *pict.ShapeRange.LockAspectRatio = msoTrue
* * * * *pict.ShapeRange.Height = PictureHeight
* * * * *pict.Top = cells(9,cell.column).Top
* * * * *pict.Left = cells(9,cell.column).Left
* * * else
* * * * *cell(1,0) = "Picture not Available"
* * * End If
* *End If 'new line
Next cell
Exit Sub 'new line

End Sub



" wrote:
On Jun 14, 7:28 pm, Joel wrote:
From
* * * pict.Top = cell.Offset(1, 0).Top
* * * pict.Left = cell.Offset(1, 0).Left
to
* * * pict.Top = Range("B9").Top
* * * pict.Left = Range("B9").Left


" wrote:
Hi I have a Marco that insertspicturesin excel, I need to make a few
changes but I am having difficulty.
This macro is looking into a cell that has the picture file location
and it is inserting the picture right below that cell. But what I need
to change is, I need to be able toinsertthe picture to different
cell (example: the cell that has the location on the file is "B4" and
I want toinsertthe picture in cell "B9")


Below is the macro that I use. *I would greatly appreciate for your
help, Thank You.


Sub add_pictures()


Const PictureHeight = 120


Application.ScreenUpdating = False


'deletepictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
* *If cell < "" Then
* *cell.Offset(1, 0).ClearContents
* *On Error GoTo NoPict 'new line
* * * Set pict = ActiveSheet.Pictures. _
* * * * *Insert(cell.Value)
* * * * *If cell.Offset(1, 0).Value < "Picture not Available" Then
'new line
* * * pict.ShapeRange.LockAspectRatio = msoTrue
* * * pict.ShapeRange.Height = PictureHeight
* * * pict.Top = cell.Offset(1, 0).Top
* * * pict.Left = cell.Offset(1, 0).Left
* *End If
* * * * End If 'new line
Next cell
Exit Sub 'new line


NoPict: cell.Offset(1, 0).Value = "Picture not Available" 'new line
Resume Next 'new line


End Sub- Hide quoted text -


- Show quoted text -


Thanks, but I am still having some difficulty, I used you line and yes
the picture was inserted in the right Cell but it is not only one
picture, the picture address starts from "B4: AA4" and thepictures
should be inserted from "B9:AA9" and if a picture is not available it
shouldinsertthe text "Picture not Available" with the addition of
you text it insets all thepicturesin cell "B9" one on top of each
other. and the text "Picture not Available" gets inserted in cell
"B5"
I thank you in advance I hope you can help.- Hide quoted text -


- Show quoted text -




Hi,
Thanks It works but I had to change the [cell(1,0) = "Picture not
Available"] to [cell(7,1) = "Picture not Available"] in order for the
"Picture not Available" text be in the same ROW as the pictures,
questions is, IS THIS CORRECT?
also is it possible that if it can not find the picture instead of
inserting the text "Picture not Available" can it insert a default
Picture file example ["C:\My Pictures\Picture_not_Available.jpg"]
Thank you very much!




joel

Insert Pictures using Macros
 
It should of been
cells(9,cell.column) = "Picture not Available"


You can replace this line with a insert of a standard picture like yoiu did
in the other part of the code.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"

Application.ScreenUpdating = False

'delete pictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = Dir(cell.Value)
If PictureFound < "" Then

Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
Else
Set pict = ActiveSheet.Pictures. _
Insert(DefaultPicture)
End If
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
pict.Top = Cells(9, cell.Column).Top
pict.Left = Cells(9, cell.Column).Left
End If 'new line
Next cell
Exit Sub 'new line

End Sub

" wrote:

On Jun 15, 4:25 am, Joel wrote:
Picturesare not part of the worksheet cell structure but instead a picture
is an object tjat sits ontop of the worksheet. You can put a picture ontop
of a cell by using the Top and Left properties. Top and Left are pixel
locations on the screen and changes when you change the height of a row or
Width of a column. the pciture will not move when the Row height is changed
or the column width is changed so the picture will look like it moved when
height/width are adjusted.

Use DIR to find if a picture exists before you inset the picture on the
worksheet. The code below will work as long as the formaty (ie jpg) of the
picture is recognized on your PC. You have to adjust the width of the
Columns on the worksheet to the right size before you add the picture.
Another choise is to add the picture and use the width porperty of the cell
and the width porperty of the picture to get the picture to appear like they
are the same width as the column. You can either make the all the columns
the same width and scale the picture to fit the column width, or scale the
Columns width to fit the picture width.

Sub add_pictures()

Const PictureHeight = 120

Application.ScreenUpdating = False

'deletepictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp

LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight

For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = dir(cell.Value)
if PictureFound < "" then

Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
pict.Top = cells(9,cell.column).Top
pict.Left = cells(9,cell.column).Left
else
cell(1,0) = "Picture not Available"
End If
End If 'new line
Next cell
Exit Sub 'new line

End Sub



" wrote:
On Jun 14, 7:28 pm, Joel wrote:
From
pict.Top = cell.Offset(1, 0).Top
pict.Left = cell.Offset(1, 0).Left
to
pict.Top = Range("B9").Top
pict.Left = Range("B9").Left


" wrote:
Hi I have a Marco that insertspicturesin excel, I need to make a few
changes but I am having difficulty.
This macro is looking into a cell that has the picture file location
and it is inserting the picture right below that cell. But what I need
to change is, I need to be able toinsertthe picture to different
cell (example: the cell that has the location on the file is "B4" and
I want toinsertthe picture in cell "B9")


Below is the macro that I use. I would greatly appreciate for your
help, Thank You.


Sub add_pictures()


Const PictureHeight = 120


Application.ScreenUpdating = False


'deletepictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
On Error GoTo NoPict 'new line
Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
If cell.Offset(1, 0).Value < "Picture not Available" Then
'new line
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
pict.Top = cell.Offset(1, 0).Top
pict.Left = cell.Offset(1, 0).Left
End If
End If 'new line
Next cell
Exit Sub 'new line


NoPict: cell.Offset(1, 0).Value = "Picture not Available" 'new line
Resume Next 'new line


End Sub- Hide quoted text -


- Show quoted text -


Thanks, but I am still having some difficulty, I used you line and yes
the picture was inserted in the right Cell but it is not only one
picture, the picture address starts from "B4: AA4" and thepictures
should be inserted from "B9:AA9" and if a picture is not available it
shouldinsertthe text "Picture not Available" with the addition of
you text it insets all thepicturesin cell "B9" one on top of each
other. and the text "Picture not Available" gets inserted in cell
"B5"
I thank you in advance I hope you can help.- Hide quoted text -


- Show quoted text -




Hi,
Thanks It works but I had to change the [cell(1,0) = "Picture not
Available"] to [cell(7,1) = "Picture not Available"] in order for the
"Picture not Available" text be in the same ROW as the pictures,
questions is, IS THIS CORRECT?
also is it possible that if it can not find the picture instead of
inserting the text "Picture not Available" can it insert a default
Picture file example ["C:\My Pictures\Picture_not_Available.jpg"]
Thank you very much!





[email protected]

Insert Pictures using Macros
 
On Jun 15, 5:23*pm, Joel wrote:
It should of been
cells(9,cell.column) = "Picture not Available"

You can replace this line with a insert of a standard picture like yoiu did
in the other part of the code.

Sub add_pictures()

Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"

Application.ScreenUpdating = False

'delete pictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp

LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight

For Each cell In Range("B4:IV4")
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = Dir(cell.Value)
* * * If PictureFound < "" Then

* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * * Insert(cell.Value)
* * * Else
* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * * Insert(DefaultPicture)
* * * End If
* * * pict.ShapeRange.LockAspectRatio = msoTrue
* * * pict.ShapeRange.Height = PictureHeight
* * * pict.Top = Cells(9, cell.Column).Top
* * * pict.Left = Cells(9, cell.Column).Left
* *End If 'new line
Next cell
Exit Sub 'new line

End Sub



" wrote:
On Jun 15, 4:25 am, Joel wrote:
Picturesare not part of the worksheet cell structure but instead a picture
is an object tjat sits ontop of the worksheet. *You can put a picture ontop
of a cell by using the Top and Left properties. *Top and Left are pixel
locations on the screen *and changes when you change the height of a row or
Width of a column. *the pciture will *not move when the Row height is changed
or the column width is changed so the picture will look like it moved when
height/width are adjusted.


Use DIR to find if a picture exists before you *inset the picture on the
worksheet. *The code below will work as long as the formaty (ie jpg) of the
picture is recognized on your PC. * You have to adjust the width of the
Columns on the worksheet to the right size before you add the picture. *
Another choise is to add the picture and use the width porperty of the cell
and the width porperty of the picture to get the picture to appear like they
are the same width as the column. *You can either make the all the columns
the same width and scale the picture to fit the column width, or scale the
Columns width to fit the picture width.


Sub add_pictures()


Const PictureHeight = 120


Application.ScreenUpdating = False


'deletepictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = dir(cell.Value)
* * * if PictureFound < "" then


* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(cell.Value)
* * * * *pict.ShapeRange.LockAspectRatio = msoTrue
* * * * *pict.ShapeRange.Height = PictureHeight
* * * * *pict.Top = cells(9,cell.column).Top
* * * * *pict.Left = cells(9,cell.column).Left
* * * else
* * * * *cell(1,0) = "Picture not Available"
* * * End If
* *End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 14, 7:28 pm, Joel wrote:
From
* * * pict.Top = cell.Offset(1, 0).Top
* * * pict.Left = cell.Offset(1, 0).Left
to
* * * pict.Top = Range("B9").Top
* * * pict.Left = Range("B9").Left


" wrote:
Hi I have a Marco that insertspicturesin excel, I need to make a few
changes but I am having difficulty.
This macro is looking into a cell that has the picture file location
and it is inserting the picture right below that cell. But what I need
to change is, I need to be able toinsertthe picture to different
cell (example: the cell that has the location on the file is "B4" and
I want toinsertthe picture in cell "B9")


Below is the macro that I use. *I would greatly appreciate for your
help, Thank You.


Sub add_pictures()


Const PictureHeight = 120


Application.ScreenUpdating = False


'deletepictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
* *If cell < "" Then
* *cell.Offset(1, 0).ClearContents
* *On Error GoTo NoPict 'new line
* * * Set pict = ActiveSheet.Pictures. _
* * * * *Insert(cell.Value)
* * * * *If cell.Offset(1, 0).Value < "Picture not Available" Then
'new line
* * * pict.ShapeRange.LockAspectRatio = msoTrue
* * * pict.ShapeRange.Height = PictureHeight
* * * pict.Top = cell.Offset(1, 0).Top
* * * pict.Left = cell.Offset(1, 0).Left
* *End If
* * * * End If 'new line
Next cell
Exit Sub 'new line


NoPict: cell.Offset(1, 0).Value = "Picture not Available" 'new line
Resume Next 'new line


End Sub- Hide quoted text -


- Show quoted text -


Thanks, but I am still having some difficulty, I used you line and yes
the picture was inserted in the right Cell but it is not only one
picture, the picture address starts from "B4: AA4" and thepictures
should be inserted from "B9:AA9" and if a picture is not available it
shouldinsertthe text "Picture not Available" with the addition of
you text it insets all thepicturesin cell "B9" one on top of each
other. and the text "Picture not Available" gets inserted in cell
"B5"
I thank you in advance I hope you can help.- Hide quoted text -


- Show quoted text -


Hi,
Thanks It works but I had to change the *[cell(1,0) = "Picture not
Available"] to [cell(7,1) = "Picture not Available"] in order for the
"Picture not Available" text be in the same ROW as the pictures,
questions is, IS THIS CORRECT?
also is it possible that if it can not find the picture instead of
inserting the text "Picture not Available" can it insert a default
Picture file example ["C:\My Pictures\Picture_not_Available.jpg"]
Thank you very much!- Hide quoted text -


- Show quoted text -


Hi,
Thank you very much.
Just one more question I forgot to ask, how can I center the picture,
right now it places the picture in the TOP LEFT corner, how can I
place it at Horizontal:Center, Vertical:Center.
Thanks.

joel

Insert Pictures using Macros
 
You have to subtract the size of the picture from the size of the cell and
shift the picture by 1/2 the difference. You dod this using the height and
width properties as shown below.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"

Application.ScreenUpdating = False

'delete pictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = Dir(cell.Value)
If PictureFound < "" Then

Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
Else
Set pict = ActiveSheet.Pictures. _
Insert(DefaultPicture)
End If
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
PictWidth = pict.Width
CellWidth = Cells(9, cell.Column).Width
WidthBorder = CellWidth - PictWidth
pict.Left = Cells(9, cell.Column).Left + (WidthBorder / 2)

PictHeight = pict.Height
CellHeight = Cells(9, cell.Column).Height
HeightBorder = CellHeight - PictHeight
pict.Top = Cells(9, cell.Column).Top + (HeightBorder / 2)
End If 'new line
Next cell
Exit Sub 'new line

End Sub


" wrote:

On Jun 15, 5:23 pm, Joel wrote:
It should of been
cells(9,cell.column) = "Picture not Available"

You can replace this line with a insert of a standard picture like yoiu did
in the other part of the code.

Sub add_pictures()

Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"

Application.ScreenUpdating = False

'delete pictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp

LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight

For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = Dir(cell.Value)
If PictureFound < "" Then

Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
Else
Set pict = ActiveSheet.Pictures. _
Insert(DefaultPicture)
End If
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
pict.Top = Cells(9, cell.Column).Top
pict.Left = Cells(9, cell.Column).Left
End If 'new line
Next cell
Exit Sub 'new line

End Sub



" wrote:
On Jun 15, 4:25 am, Joel wrote:
Picturesare not part of the worksheet cell structure but instead a picture
is an object tjat sits ontop of the worksheet. You can put a picture ontop
of a cell by using the Top and Left properties. Top and Left are pixel
locations on the screen and changes when you change the height of a row or
Width of a column. the pciture will not move when the Row height is changed
or the column width is changed so the picture will look like it moved when
height/width are adjusted.


Use DIR to find if a picture exists before you inset the picture on the
worksheet. The code below will work as long as the formaty (ie jpg) of the
picture is recognized on your PC. You have to adjust the width of the
Columns on the worksheet to the right size before you add the picture.
Another choise is to add the picture and use the width porperty of the cell
and the width porperty of the picture to get the picture to appear like they
are the same width as the column. You can either make the all the columns
the same width and scale the picture to fit the column width, or scale the
Columns width to fit the picture width.


Sub add_pictures()


Const PictureHeight = 120


Application.ScreenUpdating = False


'deletepictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = dir(cell.Value)
if PictureFound < "" then


Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
pict.Top = cells(9,cell.column).Top
pict.Left = cells(9,cell.column).Left
else
cell(1,0) = "Picture not Available"
End If
End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 14, 7:28 pm, Joel wrote:
From
pict.Top = cell.Offset(1, 0).Top
pict.Left = cell.Offset(1, 0).Left
to
pict.Top = Range("B9").Top
pict.Left = Range("B9").Left


" wrote:
Hi I have a Marco that insertspicturesin excel, I need to make a few
changes but I am having difficulty.
This macro is looking into a cell that has the picture file location
and it is inserting the picture right below that cell. But what I need
to change is, I need to be able toinsertthe picture to different
cell (example: the cell that has the location on the file is "B4" and
I want toinsertthe picture in cell "B9")


Below is the macro that I use. I would greatly appreciate for your
help, Thank You.


Sub add_pictures()


Const PictureHeight = 120


Application.ScreenUpdating = False


'deletepictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
On Error GoTo NoPict 'new line
Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
If cell.Offset(1, 0).Value < "Picture not Available" Then
'new line
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
pict.Top = cell.Offset(1, 0).Top
pict.Left = cell.Offset(1, 0).Left
End If
End If 'new line
Next cell
Exit Sub 'new line


NoPict: cell.Offset(1, 0).Value = "Picture not Available" 'new line
Resume Next 'new line


End Sub- Hide quoted text -


- Show quoted text -


Thanks, but I am still having some difficulty, I used you line and yes
the picture was inserted in the right Cell but it is not only one
picture, the picture address starts from "B4: AA4" and thepictures
should be inserted from "B9:AA9" and if a picture is not available it
shouldinsertthe text "Picture not Available" with the addition of
you text it insets all thepicturesin cell "B9" one on top of each
other. and the text "Picture not Available" gets inserted in cell
"B5"
I thank you in advance I hope you can help.- Hide quoted text -


- Show quoted text -


Hi,
Thanks It works but I had to change the [cell(1,0) = "Picture not
Available"] to [cell(7,1) = "Picture not Available"] in order for the
"Picture not Available" text be in the same ROW as the pictures,
questions is, IS THIS CORRECT?
also is it possible that if it can not find the picture instead of
inserting the text "Picture not Available" can it insert a default
Picture file example ["C:\My Pictures\Picture_not_Available.jpg"]
Thank you very much!- Hide quoted text -


- Show quoted text -


Hi,
Thank you very much.
Just one more question I forgot to ask, how can I center the picture,
right now it places the picture in the TOP LEFT corner, how can I
place it at Horizontal:Center, Vertical:Center.
Thanks.


[email protected]

Insert Pictures using Macros
 
On Jun 15, 6:56*pm, Joel wrote:
You have to subtract the size of the picture from the size of the cell and
shift the picture by 1/2 the difference. *You dod this using the height and
width properties as shown below.

Sub add_pictures()

Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"

Application.ScreenUpdating = False

'delete pictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp

LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight

For Each cell In Range("B4:IV4")
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = Dir(cell.Value)
* * * If PictureFound < "" Then

* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * * Insert(cell.Value)
* * * Else
* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * * Insert(DefaultPicture)
* * * End If
* * * pict.ShapeRange.LockAspectRatio = msoTrue
* * * pict.ShapeRange.Height = PictureHeight
* * * PictWidth = pict.Width
* * * CellWidth = Cells(9, cell.Column).Width
* * * WidthBorder = CellWidth - PictWidth
* * * pict.Left = Cells(9, cell.Column).Left + (WidthBorder / 2)

* * * PictHeight = pict.Height
* * * CellHeight = Cells(9, cell.Column).Height
* * * HeightBorder = CellHeight - PictHeight
* * * pict.Top = Cells(9, cell.Column).Top + (HeightBorder / 2)
* *End If 'new line
Next cell
Exit Sub 'new line

End Sub



" wrote:
On Jun 15, 5:23 pm, Joel wrote:
It should of been
cells(9,cell.column) = "Picture not Available"


You can replace this line with a insert of a standard picture like yoiu did
in the other part of the code.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = Dir(cell.Value)
* * * If PictureFound < "" Then


* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * * Insert(cell.Value)
* * * Else
* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * * Insert(DefaultPicture)
* * * End If
* * * pict.ShapeRange.LockAspectRatio = msoTrue
* * * pict.ShapeRange.Height = PictureHeight
* * * pict.Top = Cells(9, cell.Column).Top
* * * pict.Left = Cells(9, cell.Column).Left
* *End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 4:25 am, Joel wrote:
Picturesare not part of the worksheet cell structure but instead a picture
is an object tjat sits ontop of the worksheet. *You can put a picture ontop
of a cell by using the Top and Left properties. *Top and Left are pixel
locations on the screen *and changes when you change the height of a row or
Width of a column. *the pciture will *not move when the Row height is changed
or the column width is changed so the picture will look like it moved when
height/width are adjusted.


Use DIR to find if a picture exists before you *inset the picture on the
worksheet. *The code below will work as long as the formaty (ie jpg) of the
picture is recognized on your PC. * You have to adjust the width of the
Columns on the worksheet to the right size before you add the picture. *
Another choise is to add the picture and use the width porperty of the cell
and the width porperty of the picture to get the picture to appear like they
are the same width as the column. *You can either make the all the columns
the same width and scale the picture to fit the column width, or scale the
Columns width to fit the picture width.


Sub add_pictures()


Const PictureHeight = 120


Application.ScreenUpdating = False


'deletepictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = dir(cell.Value)
* * * if PictureFound < "" then


* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(cell.Value)
* * * * *pict.ShapeRange.LockAspectRatio = msoTrue
* * * * *pict.ShapeRange.Height = PictureHeight
* * * * *pict.Top = cells(9,cell.column).Top
* * * * *pict.Left = cells(9,cell.column).Left
* * * else
* * * * *cell(1,0) = "Picture not Available"
* * * End If
* *End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 14, 7:28 pm, Joel wrote:
From
* * * pict.Top = cell.Offset(1, 0).Top
* * * pict.Left = cell.Offset(1, 0).Left
to
* * * pict.Top = Range("B9").Top
* * * pict.Left = Range("B9").Left


" wrote:
Hi I have a Marco that insertspicturesin excel, I need to make a few
changes but I am having difficulty.
This macro is looking into a cell that has the picture file location
and it is inserting the picture right below that cell. But what I need
to change is, I need to be able toinsertthe picture to different
cell (example: the cell that has the location on the file is "B4" and
I want toinsertthe picture in cell "B9")


Below is the macro that I use. *I would greatly appreciate for your
help, Thank You.


Sub add_pictures()


Const PictureHeight = 120


Application.ScreenUpdating = False


'deletepictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
* *If cell < "" Then
* *cell.Offset(1, 0).ClearContents
* *On Error GoTo NoPict 'new line
* * * Set pict = ActiveSheet.Pictures. _
* * * * *Insert(cell.Value)
* * * * *If cell.Offset(1, 0).Value < "Picture not Available" Then
'new line
* * * pict.ShapeRange.LockAspectRatio = msoTrue
* * * pict.ShapeRange.Height = PictureHeight
* * * pict.Top = cell.Offset(1, 0).Top
* * * pict.Left = cell.Offset(1, 0).Left
* *End If
* * * * End If 'new line
Next cell
Exit Sub 'new line


NoPict: cell.Offset(1, 0).Value = "Picture not Available" 'new line
Resume Next 'new line


End Sub- Hide quoted text -


- Show quoted text -


Thanks, but I am still having some difficulty, I used you line and yes
the picture was inserted in the right Cell but it is not only one
picture, the picture address starts from "B4: AA4" and thepictures
should be inserted from "B9:AA9" and if a picture is not available it
shouldinsertthe text "Picture not Available" with the addition of
you text it insets all thepicturesin cell "B9" one on top of each
other. and the text "Picture not Available" gets inserted in cell
"B5"
I thank you in advance I hope you can help.- Hide quoted text -


- Show quoted text -


Hi,
Thanks It works but I had to change the *[cell(1,0) = "Picture not
Available"] to [cell(7,1) = "Picture not Available"] in order for the
"Picture not Available" text be in the same ROW as the pictures,
questions is, IS THIS CORRECT?
also is it possible that if it can not find the picture instead of
inserting the text "Picture not Available" can it insert a default
Picture file example ["C:\My Pictures\Picture_not_Available.jpg"]
Thank you very much!- Hide quoted text -


- Show quoted text -


Hi,
Thank you very much.
Just one more question I forgot to ask, how can I center the picture,
right now it places the picture in the TOP LEFT corner, how can I
place it at Horizontal:Center, Vertical:Center.
Thanks.- Hide quoted text -


- Show quoted text -



Hi,
Thanks, Can you tell me, what is the line [LastRow = Cells(Rows.Count,
"D").End(xlUp).Row] for or mean.
I have changed the [Rows(5).RowHeight = PictureHeight] to
[Rows(9).RowHeight = PictureHeight]
Everything works fine except when I run the Macro ROW 5 is being
Deleted.

Thank You.




joel

Insert Pictures using Macros
 
Row 5 is being cleared by the following statement

1) cell.Offset(1, 0).ClearContents

Because cell is every cell in the Range B4:Iv4 the abovestatement is
clearing the cell one row greater than row 4.

2) This statment is doing nothing. Iorigianally put it in the code because
I thought you cells that contained the picture names were going down the rows
instead of across the columns.

LastRow = Cells(Rows.Count, "D").End(xlUp).Row

Rows.Count is a constant in excel which indicated the lastrow of the
worksheet (65,536). To find the last used cell in Column D the code starts
at D65536 and looks up the column (end(xlup) until it finds data.

You could make this change in your code to find the last column in a similar
fashion.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"

Application.ScreenUpdating = False

'delete pictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastCol = Cells(4, Columns.Count).End(xltoleft).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range(Range("B4"),Cells(4,LastCol))
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = Dir(cell.Value)
If PictureFound < "" Then

Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
Else
Set pict = ActiveSheet.Pictures. _
Insert(DefaultPicture)
End If
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
PictWidth = pict.Width
CellWidth = Cells(9, cell.Column).Width
WidthBorder = CellWidth - PictWidth
pict.Left = Cells(9, cell.Column).Left + (WidthBorder / 2)

PictHeight = pict.Height
CellHeight = Cells(9, cell.Column).Height
HeightBorder = CellHeight - PictHeight
pict.Top = Cells(9, cell.Column).Top + (HeightBorder / 2)
End If 'new line
Next cell
Exit Sub 'new line

End Sub


" wrote:

On Jun 15, 6:56 pm, Joel wrote:
You have to subtract the size of the picture from the size of the cell and
shift the picture by 1/2 the difference. You dod this using the height and
width properties as shown below.

Sub add_pictures()

Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"

Application.ScreenUpdating = False

'delete pictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp

LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight

For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = Dir(cell.Value)
If PictureFound < "" Then

Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
Else
Set pict = ActiveSheet.Pictures. _
Insert(DefaultPicture)
End If
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
PictWidth = pict.Width
CellWidth = Cells(9, cell.Column).Width
WidthBorder = CellWidth - PictWidth
pict.Left = Cells(9, cell.Column).Left + (WidthBorder / 2)

PictHeight = pict.Height
CellHeight = Cells(9, cell.Column).Height
HeightBorder = CellHeight - PictHeight
pict.Top = Cells(9, cell.Column).Top + (HeightBorder / 2)
End If 'new line
Next cell
Exit Sub 'new line

End Sub



" wrote:
On Jun 15, 5:23 pm, Joel wrote:
It should of been
cells(9,cell.column) = "Picture not Available"


You can replace this line with a insert of a standard picture like yoiu did
in the other part of the code.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = Dir(cell.Value)
If PictureFound < "" Then


Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
Else
Set pict = ActiveSheet.Pictures. _
Insert(DefaultPicture)
End If
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
pict.Top = Cells(9, cell.Column).Top
pict.Left = Cells(9, cell.Column).Left
End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 4:25 am, Joel wrote:
Picturesare not part of the worksheet cell structure but instead a picture
is an object tjat sits ontop of the worksheet. You can put a picture ontop
of a cell by using the Top and Left properties. Top and Left are pixel
locations on the screen and changes when you change the height of a row or
Width of a column. the pciture will not move when the Row height is changed
or the column width is changed so the picture will look like it moved when
height/width are adjusted.


Use DIR to find if a picture exists before you inset the picture on the
worksheet. The code below will work as long as the formaty (ie jpg) of the
picture is recognized on your PC. You have to adjust the width of the
Columns on the worksheet to the right size before you add the picture.
Another choise is to add the picture and use the width porperty of the cell
and the width porperty of the picture to get the picture to appear like they
are the same width as the column. You can either make the all the columns
the same width and scale the picture to fit the column width, or scale the
Columns width to fit the picture width.


Sub add_pictures()


Const PictureHeight = 120


Application.ScreenUpdating = False


'deletepictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = dir(cell.Value)
if PictureFound < "" then


Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
pict.Top = cells(9,cell.column).Top
pict.Left = cells(9,cell.column).Left
else
cell(1,0) = "Picture not Available"
End If
End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 14, 7:28 pm, Joel wrote:
From
pict.Top = cell.Offset(1, 0).Top
pict.Left = cell.Offset(1, 0).Left
to
pict.Top = Range("B9").Top
pict.Left = Range("B9").Left


" wrote:
Hi I have a Marco that insertspicturesin excel, I need to make a few
changes but I am having difficulty.
This macro is looking into a cell that has the picture file location
and it is inserting the picture right below that cell. But what I need
to change is, I need to be able toinsertthe picture to different
cell (example: the cell that has the location on the file is "B4" and
I want toinsertthe picture in cell "B9")


Below is the macro that I use. I would greatly appreciate for your
help, Thank You.


Sub add_pictures()


Const PictureHeight = 120


Application.ScreenUpdating = False


'deletepictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
On Error GoTo NoPict 'new line
Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
If cell.Offset(1, 0).Value < "Picture not Available" Then
'new line
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
pict.Top = cell.Offset(1, 0).Top
pict.Left = cell.Offset(1, 0).Left
End If
End If 'new line
Next cell
Exit Sub 'new line


NoPict: cell.Offset(1, 0).Value = "Picture not Available" 'new line
Resume Next 'new line


End Sub- Hide quoted text -


- Show quoted text -


Thanks, but I am still having some difficulty, I used you line and yes
the picture was inserted in the right Cell but it is not only one
picture, the picture address starts from "B4: AA4" and thepictures
should be inserted from "B9:AA9" and if a picture is not available it
shouldinsertthe text "Picture not Available" with the addition of
you text it insets all thepicturesin cell "B9" one on top of each
other. and the text "Picture not Available" gets inserted in cell
"B5"
I thank you in advance I hope you can help.- Hide quoted text -


- Show quoted text -


Hi,
Thanks It works but I had to change the [cell(1,0) = "Picture not
Available"] to [cell(7,1) = "Picture not Available"] in order for the
"Picture not Available" text be in the same ROW as the pictures,
questions is, IS THIS CORRECT?
also is it possible that if it can not find the picture instead of
inserting the text "Picture not Available" can it insert a default
Picture file example ["C:\My Pictures\Picture_not_Available.jpg"]
Thank you very much!- Hide quoted text -


- Show quoted text -


Hi,
Thank you very much.
Just one more question I forgot to ask, how can I center the picture,
right now it places the picture in the TOP LEFT corner, how can I
place it at Horizontal:Center, Vertical:Center.
Thanks.- Hide quoted text -


- Show quoted text -



Hi,
Thanks, Can you tell me, what is the line [LastRow = Cells(Rows.Count,
"D").End(xlUp).Row] for or mean.
I have changed the [Rows(5).RowHeight = PictureHeight] to
[Rows(9).RowHeight = PictureHeight]
Everything works fine except when I run the Macro ROW 5 is being
Deleted.

Thank You.





[email protected]

Insert Pictures using Macros
 
On Jun 16, 3:19*am, Joel wrote:
Row 5 is being cleared by the following statement

1) cell.Offset(1, 0).ClearContents

Because cell is every cell in the Range B4:Iv4 the abovestatement is
clearing the cell one row greater than row 4.

2) This statment is doing nothing. *Iorigianally put it in the code because
I thought you cells that contained thepicturenames were going down the rows
instead of across the columns.

LastRow = Cells(Rows.Count, "D").End(xlUp).Row

Rows.Count is a constant in excel which indicated the lastrow of the
worksheet (65,536). *To find the last used cell in Column D the code starts
at D65536 and looks up the column (end(xlup) until it finds data.

You could make this change in your code to find the last column in a similar
fashion.

Sub add_pictures()

Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"

Application.ScreenUpdating = False

'delete pictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp

LastCol = Cells(4, Columns.Count).End(xltoleft).Row
Rows(5).RowHeight = PictureHeight

For Each cell In Range(Range("B4"),Cells(4,LastCol))
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = Dir(cell.Value)
* * * If PictureFound < "" Then

* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(cell.Value)
* * * Else
* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(DefaultPicture)
* * * End If
* * * pict.ShapeRange.LockAspectRatio = msoTrue
* * * pict.ShapeRange.Height = PictureHeight
* * * PictWidth = pict.Width
* * * CellWidth = Cells(9, cell.Column).Width
* * * WidthBorder = CellWidth - PictWidth
* * * pict.Left = Cells(9, cell.Column).Left + (WidthBorder / 2)

* * * PictHeight = pict.Height
* * * CellHeight = Cells(9, cell.Column).Height
* * * HeightBorder = CellHeight - PictHeight
* * * pict.Top = Cells(9, cell.Column).Top + (HeightBorder / 2)
* *End If 'new line
Next cell
Exit Sub 'new line

End Sub



" wrote:
On Jun 15, 6:56 pm, Joel wrote:
You have to subtract the size of thepicturefrom the size of the cell and
shift thepictureby 1/2 the difference. *You dod this using the height and
width properties as shown below.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = Dir(cell.Value)
* * * If PictureFound < "" Then


* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(cell.Value)
* * * Else
* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(DefaultPicture)
* * * End If
* * * pict.ShapeRange.LockAspectRatio = msoTrue
* * * pict.ShapeRange.Height = PictureHeight
* * * PictWidth = pict.Width
* * * CellWidth = Cells(9, cell.Column).Width
* * * WidthBorder = CellWidth - PictWidth
* * * pict.Left = Cells(9, cell.Column).Left + (WidthBorder / 2)


* * * PictHeight = pict.Height
* * * CellHeight = Cells(9, cell.Column).Height
* * * HeightBorder = CellHeight - PictHeight
* * * pict.Top = Cells(9, cell.Column).Top + (HeightBorder / 2)
* *End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 5:23 pm, Joel wrote:
It should of been
cells(9,cell.column) = "Picturenot Available"


You can replace this line with ainsertof a standardpicturelike yoiu did
in the other part of the code.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = Dir(cell.Value)
* * * If PictureFound < "" Then


* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(cell.Value)
* * * Else
* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(DefaultPicture)
* * * End If
* * * pict.ShapeRange.LockAspectRatio = msoTrue
* * * pict.ShapeRange.Height = PictureHeight
* * * pict.Top = Cells(9, cell.Column).Top
* * * pict.Left = Cells(9, cell.Column).Left
* *End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 4:25 am, Joel wrote:
Picturesare not part of the worksheet cell structure but instead apicture
is an object tjat sits ontop of the worksheet. *You can put apictureontop
of a cell by using the Top and Left properties. *Top and Left are pixel
locations on the screen *and changes when you change the height of a row or
Width of a column. *the pciture will *not move when the Row height is changed
or the column width is changed so thepicturewill look like it moved when
height/width are adjusted.


Use DIR to find if apictureexists before you *inset thepictureon the
worksheet. *The code below will work as long as the formaty (ie jpg) of the
pictureis recognized on your PC. * You have to adjust the width of the
Columns on the worksheet to the right size before you add thepicture. *
Another choise is to add thepictureand use the width porperty of the cell
and the width porperty of thepictureto get thepictureto appear like they
are the same width as the column. *You can either make the all the columns
the same width and scale thepictureto fit the column width, or scale the
Columns width to fit thepicturewidth.


Sub add_pictures()


Const PictureHeight = 120


Application.ScreenUpdating = False


'deletepictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = dir(cell.Value)
* * * if PictureFound < "" then


* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(cell.Value)
* * * * *pict.ShapeRange.LockAspectRatio = msoTrue
* * * * *pict.ShapeRange.Height = PictureHeight
* * * * *pict.Top = cells(9,cell.column).Top
* * * * *pict.Left = cells(9,cell.column).Left
* * * else
* * * * *cell(1,0) = "Picturenot Available"
* * * End If
* *End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 14, 7:28 pm, Joel wrote:
From
* * * pict.Top = cell.Offset(1, 0).Top
* * * pict.Left = cell.Offset(1, 0).Left
to
* * * pict.Top = Range("B9").Top
* * * pict.Left = Range("B9").Left


" wrote:
Hi I have a Marco that insertspicturesin excel, I need to make a few
changes but I am having difficulty.
This macro is looking into a cell that has thepicturefile location
and it is inserting thepictureright below that cell. But what I need
to change is, I need to be able toinsertthepictureto different
cell (example: the cell that has the location on the file is "B4" and
I want toinsertthepicturein cell "B9")


Below is the macro that I use. *I would greatly appreciate for your
help, Thank You.


Sub add_pictures()


Const PictureHeight = 120


Application.ScreenUpdating = False


'deletepictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
* *If cell < "" Then
* *cell.Offset(1, 0).ClearContents
* *On Error GoTo NoPict 'new line
* * * Set pict = ActiveSheet.Pictures. _
* * * * *Insert(cell.Value)
* * * * *If cell.Offset(1, 0).Value < "Picturenot Available" Then
'new line
* * * pict.ShapeRange.LockAspectRatio = msoTrue
* * * pict.ShapeRange.Height = PictureHeight
* * * pict.Top = cell.Offset(1, 0).Top


...

read more »- Hide quoted text -

- Show quoted text -


Hi, Thanks.
Everything works but I came across another problem. when I run the
Macro it is placing the pictures in ROW 9 under each column from B9 to
FA9 Its should go all the way from B9 to IV9 because my range is B4 to
IV4 and I have data in each cell from B4 to IV4 but for some reason it
is stopping at cell FA9 and then it is placing the rest of the
pictures in between Cell FA9 and FB9 on top of one another.
Thanks for your help I greatly appreciate it. I hope we can fix this
one.....


joel

Insert Pictures using Macros
 
the code look ok. here are some ideas

1) The DefaultPicture = "C:\temp\MyPicture.jpg" file doesn't exist.
2) Check the value of LastCol

LastCol = Cells(4, Columns.Count).End(xltoleft).Row
msgbox (LastCol) '<= Add

3) The pictures you selected don't display anything

4) The column widths are too narrow to see the pciture.

5) You are getting an error. Try adding this line to see if yo uare exiting
the For loop before you reach the last column

msgbox(cell.address) '<= add just before the Next cell statement
Next cell


" wrote:

On Jun 16, 3:19 am, Joel wrote:
Row 5 is being cleared by the following statement

1) cell.Offset(1, 0).ClearContents

Because cell is every cell in the Range B4:Iv4 the abovestatement is
clearing the cell one row greater than row 4.

2) This statment is doing nothing. Iorigianally put it in the code because
I thought you cells that contained thepicturenames were going down the rows
instead of across the columns.

LastRow = Cells(Rows.Count, "D").End(xlUp).Row

Rows.Count is a constant in excel which indicated the lastrow of the
worksheet (65,536). To find the last used cell in Column D the code starts
at D65536 and looks up the column (end(xlup) until it finds data.

You could make this change in your code to find the last column in a similar
fashion.

Sub add_pictures()

Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"

Application.ScreenUpdating = False

'delete pictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp

LastCol = Cells(4, Columns.Count).End(xltoleft).Row
Rows(5).RowHeight = PictureHeight

For Each cell In Range(Range("B4"),Cells(4,LastCol))
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = Dir(cell.Value)
If PictureFound < "" Then

Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
Else
Set pict = ActiveSheet.Pictures. _
Insert(DefaultPicture)
End If
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
PictWidth = pict.Width
CellWidth = Cells(9, cell.Column).Width
WidthBorder = CellWidth - PictWidth
pict.Left = Cells(9, cell.Column).Left + (WidthBorder / 2)

PictHeight = pict.Height
CellHeight = Cells(9, cell.Column).Height
HeightBorder = CellHeight - PictHeight
pict.Top = Cells(9, cell.Column).Top + (HeightBorder / 2)
End If 'new line
Next cell
Exit Sub 'new line

End Sub



" wrote:
On Jun 15, 6:56 pm, Joel wrote:
You have to subtract the size of thepicturefrom the size of the cell and
shift thepictureby 1/2 the difference. You dod this using the height and
width properties as shown below.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = Dir(cell.Value)
If PictureFound < "" Then


Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
Else
Set pict = ActiveSheet.Pictures. _
Insert(DefaultPicture)
End If
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
PictWidth = pict.Width
CellWidth = Cells(9, cell.Column).Width
WidthBorder = CellWidth - PictWidth
pict.Left = Cells(9, cell.Column).Left + (WidthBorder / 2)


PictHeight = pict.Height
CellHeight = Cells(9, cell.Column).Height
HeightBorder = CellHeight - PictHeight
pict.Top = Cells(9, cell.Column).Top + (HeightBorder / 2)
End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 5:23 pm, Joel wrote:
It should of been
cells(9,cell.column) = "Picturenot Available"


You can replace this line with ainsertof a standardpicturelike yoiu did
in the other part of the code.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = Dir(cell.Value)
If PictureFound < "" Then


Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
Else
Set pict = ActiveSheet.Pictures. _
Insert(DefaultPicture)
End If
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
pict.Top = Cells(9, cell.Column).Top
pict.Left = Cells(9, cell.Column).Left
End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 4:25 am, Joel wrote:
Picturesare not part of the worksheet cell structure but instead apicture
is an object tjat sits ontop of the worksheet. You can put apictureontop
of a cell by using the Top and Left properties. Top and Left are pixel
locations on the screen and changes when you change the height of a row or
Width of a column. the pciture will not move when the Row height is changed
or the column width is changed so thepicturewill look like it moved when
height/width are adjusted.


Use DIR to find if apictureexists before you inset thepictureon the
worksheet. The code below will work as long as the formaty (ie jpg) of the
pictureis recognized on your PC. You have to adjust the width of the
Columns on the worksheet to the right size before you add thepicture.
Another choise is to add thepictureand use the width porperty of the cell
and the width porperty of thepictureto get thepictureto appear like they
are the same width as the column. You can either make the all the columns
the same width and scale thepictureto fit the column width, or scale the
Columns width to fit thepicturewidth.


Sub add_pictures()


Const PictureHeight = 120


Application.ScreenUpdating = False


'deletepictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = dir(cell.Value)
if PictureFound < "" then


Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
pict.Top = cells(9,cell.column).Top
pict.Left = cells(9,cell.column).Left
else
cell(1,0) = "Picturenot Available"
End If
End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 14, 7:28 pm, Joel wrote:
From
pict.Top = cell.Offset(1, 0).Top
pict.Left = cell.Offset(1, 0).Left
to
pict.Top = Range("B9").Top
pict.Left = Range("B9").Left


" wrote:
Hi I have a Marco that insertspicturesin excel, I need to make a few
changes but I am having difficulty.
This macro is looking into a cell that has thepicturefile location
and it is inserting thepictureright below that cell. But what I need
to change is, I need to be able toinsertthepictureto different
cell (example: the cell that has the location on the file is "B4" and
I want toinsertthepicturein cell "B9")


Below is the macro that I use. I would greatly appreciate for your
help, Thank You.


Sub add_pictures()


Const PictureHeight = 120


Application.ScreenUpdating = False


'deletepictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
On Error GoTo NoPict 'new line
Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
If cell.Offset(1, 0).Value < "Picturenot Available" Then
'new line
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
pict.Top = cell.Offset(1, 0).Top


...

read more »- Hide quoted text -

- Show quoted text -


Hi, Thanks.
Everything works but I came across another problem. when I run the
Macro it is placing the pictures in ROW 9 under each column from B9 to
FA9 Its should go all the way from B9 to IV9 because my range is B4 to
IV4 and I have data in each cell from B4 to IV4 but for some reason it
is stopping at cell FA9 and then it is placing the rest of the
pictures in between Cell FA9 and FB9 on top of one another.
Thanks for your help I greatly appreciate it. I hope we can fix this
one.....



[email protected]

Insert Pictures using Macros
 
On Jun 17, 3:48*am, Joel wrote:
the code look ok. *here are some ideas

1) The DefaultPicture = "C:\temp\MyPicture.jpg" file doesn't exist.
2) Check the value of LastCol

LastCol = Cells(4, Columns.Count).End(xltoleft).Row
msgbox (LastCol) * * '<= *Add

3) The pictures you selected don't display anything

4) The column widths are too narrow to see the pciture.

5) You are getting an error. *Try adding this line to see if yo uare exiting
the For loop before you reach the last column

* *msgbox(cell.address) * *'<= add just before the Next cell statement
Next cell



" wrote:
On Jun 16, 3:19 am, Joel wrote:
Row 5 is being cleared by the following statement


1) cell.Offset(1, 0).ClearContents


Because cell is every cell in the Range B4:Iv4 the abovestatement is
clearing the cell one row greater than row 4.


2) This statment is doing nothing. *Iorigianally put it in the code because
I thought you cells that contained thepicturenames were going down the rows
instead of across the columns.


LastRow = Cells(Rows.Count, "D").End(xlUp).Row


Rows.Count is a constant in excel which indicated the lastrow of the
worksheet (65,536). *To find the last used cell in Column D the code starts
at D65536 and looks up the column (end(xlup) until it finds data.


You could make this change in your code to find the last column in a similar
fashion.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastCol = Cells(4, Columns.Count).End(xltoleft).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range(Range("B4"),Cells(4,LastCol))
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = Dir(cell.Value)
* * * If PictureFound < "" Then


* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(cell.Value)
* * * Else
* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(DefaultPicture)
* * * End If
* * * pict.ShapeRange.LockAspectRatio = msoTrue
* * * pict.ShapeRange.Height = PictureHeight
* * * PictWidth = pict.Width
* * * CellWidth = Cells(9, cell.Column).Width
* * * WidthBorder = CellWidth - PictWidth
* * * pict.Left = Cells(9, cell.Column).Left + (WidthBorder / 2)


* * * PictHeight = pict.Height
* * * CellHeight = Cells(9, cell.Column).Height
* * * HeightBorder = CellHeight - PictHeight
* * * pict.Top = Cells(9, cell.Column).Top + (HeightBorder / 2)
* *End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 6:56 pm, Joel wrote:
You have to subtract the size of thepicturefrom the size of the cell and
shift thepictureby 1/2 the difference. *You dod this using the height and
width properties as shown below.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = Dir(cell.Value)
* * * If PictureFound < "" Then


* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(cell.Value)
* * * Else
* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(DefaultPicture)
* * * End If
* * * pict.ShapeRange.LockAspectRatio = msoTrue
* * * pict.ShapeRange.Height = PictureHeight
* * * PictWidth = pict.Width
* * * CellWidth = Cells(9, cell.Column).Width
* * * WidthBorder = CellWidth - PictWidth
* * * pict.Left = Cells(9, cell.Column).Left + (WidthBorder / 2)


* * * PictHeight = pict.Height
* * * CellHeight = Cells(9, cell.Column).Height
* * * HeightBorder = CellHeight - PictHeight
* * * pict.Top = Cells(9, cell.Column).Top + (HeightBorder / 2)
* *End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 5:23 pm, Joel wrote:
It should of been
cells(9,cell.column) = "Picturenot Available"


You can replace this line with ainsertof a standardpicturelike yoiu did
in the other part of the code.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = Dir(cell.Value)
* * * If PictureFound < "" Then


* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(cell.Value)
* * * Else
* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(DefaultPicture)
* * * End If
* * * pict.ShapeRange.LockAspectRatio = msoTrue
* * * pict.ShapeRange.Height = PictureHeight
* * * pict.Top = Cells(9, cell.Column).Top
* * * pict.Left = Cells(9, cell.Column).Left
* *End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 4:25 am, Joel wrote:
Picturesare not part of the worksheet cell structure but instead apicture
is an object tjat sits ontop of the worksheet. *You can put apictureontop
of a cell by using the Top and Left properties. *Top and Left are pixel
locations on the screen *and changes when you change the height of a row or
Width of a column. *the pciture will *not move when the Row height is changed
or the column width is changed so thepicturewill look like it moved when
height/width are adjusted.


Use DIR to find if apictureexists before you *inset thepictureon the
worksheet. *The code below will work as long as the formaty (ie jpg) of the
pictureis recognized on your PC. * You have to adjust the width of the
Columns on the worksheet to the right size before you add thepicture. *
Another choise is to add thepictureand use the width porperty of the cell
and the width porperty of thepictureto get thepictureto appear like they
are the same width as the column. *You can either make the all the columns
the same width and scale thepictureto fit the column width, or scale the
Columns width to fit thepicturewidth.


Sub add_pictures()


Const PictureHeight = 120


Application.ScreenUpdating = False


'deletepictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = dir(cell.Value)
* * * if PictureFound < "" then


* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(cell.Value)
* * * * *pict.ShapeRange.LockAspectRatio = msoTrue
* * * * *pict.ShapeRange.Height = PictureHeight
* * * * *pict.Top = cells(9,cell.column).Top
* * * * *pict.Left = cells(9,cell.column).Left
* * * else
* * * * *cell(1,0) = "Picturenot Available"
* * * End If
* *End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 14, 7:28 pm, Joel wrote:
From
* * * pict.Top = cell.Offset(1, 0).Top
* * * pict.Left = cell.Offset(1, 0).Left
to
* * * pict.Top = Range("B9").Top
* * * pict.Left = Range("B9").Left


" wrote:
Hi I have a Marco that insertspicturesin excel, I need to make a few
changes but I am having difficulty.
This macro is looking into a cell that has thepicturefile location
and it is inserting thepictureright below that cell. But what I need
to change is, I need to be able toinsertthepictureto different


...

read more »- Hide quoted text -

- Show quoted text -


Hi,
The DefaultPicture, - this file is there and it is using it in some
cells before the cell FA9
When I run the Marco it seems that it is displying all the pictures it
just after cell FA9 it starts to display one picture on to of the
other right in between FA9 and FB9.
The Column widths are all the same.
also when I the run Marco it runs without dislaying any errer.
I am sorry I did not understand where to add the "msgbox(cell.address)
"
thanks.

joel

Insert Pictures using Macros
 
the msgbox was to go on the line just before the Next Cell statement. Since
yo usaid that all the pictures were ontop of each other I think it is better
to try this test code

The code will put in row 100 all the pixel values of the left edge of the
cell. I think there may be a problem with the pixel number. Change the row
number to an unesed Row so it doesn't over-write any data.

For Colcount = 1 To 256
Cells(100, Colcount).Value = Cells(100, Colcount).Left
Next Colcount

" wrote:

On Jun 17, 3:48 am, Joel wrote:
the code look ok. here are some ideas

1) The DefaultPicture = "C:\temp\MyPicture.jpg" file doesn't exist.
2) Check the value of LastCol

LastCol = Cells(4, Columns.Count).End(xltoleft).Row
msgbox (LastCol) '<= Add

3) The pictures you selected don't display anything

4) The column widths are too narrow to see the pciture.

5) You are getting an error. Try adding this line to see if yo uare exiting
the For loop before you reach the last column

msgbox(cell.address) '<= add just before the Next cell statement
Next cell



" wrote:
On Jun 16, 3:19 am, Joel wrote:
Row 5 is being cleared by the following statement


1) cell.Offset(1, 0).ClearContents


Because cell is every cell in the Range B4:Iv4 the abovestatement is
clearing the cell one row greater than row 4.


2) This statment is doing nothing. Iorigianally put it in the code because
I thought you cells that contained thepicturenames were going down the rows
instead of across the columns.


LastRow = Cells(Rows.Count, "D").End(xlUp).Row


Rows.Count is a constant in excel which indicated the lastrow of the
worksheet (65,536). To find the last used cell in Column D the code starts
at D65536 and looks up the column (end(xlup) until it finds data.


You could make this change in your code to find the last column in a similar
fashion.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastCol = Cells(4, Columns.Count).End(xltoleft).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range(Range("B4"),Cells(4,LastCol))
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = Dir(cell.Value)
If PictureFound < "" Then


Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
Else
Set pict = ActiveSheet.Pictures. _
Insert(DefaultPicture)
End If
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
PictWidth = pict.Width
CellWidth = Cells(9, cell.Column).Width
WidthBorder = CellWidth - PictWidth
pict.Left = Cells(9, cell.Column).Left + (WidthBorder / 2)


PictHeight = pict.Height
CellHeight = Cells(9, cell.Column).Height
HeightBorder = CellHeight - PictHeight
pict.Top = Cells(9, cell.Column).Top + (HeightBorder / 2)
End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 6:56 pm, Joel wrote:
You have to subtract the size of thepicturefrom the size of the cell and
shift thepictureby 1/2 the difference. You dod this using the height and
width properties as shown below.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = Dir(cell.Value)
If PictureFound < "" Then


Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
Else
Set pict = ActiveSheet.Pictures. _
Insert(DefaultPicture)
End If
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
PictWidth = pict.Width
CellWidth = Cells(9, cell.Column).Width
WidthBorder = CellWidth - PictWidth
pict.Left = Cells(9, cell.Column).Left + (WidthBorder / 2)


PictHeight = pict.Height
CellHeight = Cells(9, cell.Column).Height
HeightBorder = CellHeight - PictHeight
pict.Top = Cells(9, cell.Column).Top + (HeightBorder / 2)
End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 5:23 pm, Joel wrote:
It should of been
cells(9,cell.column) = "Picturenot Available"


You can replace this line with ainsertof a standardpicturelike yoiu did
in the other part of the code.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = Dir(cell.Value)
If PictureFound < "" Then


Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
Else
Set pict = ActiveSheet.Pictures. _
Insert(DefaultPicture)
End If
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
pict.Top = Cells(9, cell.Column).Top
pict.Left = Cells(9, cell.Column).Left
End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 4:25 am, Joel wrote:
Picturesare not part of the worksheet cell structure but instead apicture
is an object tjat sits ontop of the worksheet. You can put apictureontop
of a cell by using the Top and Left properties. Top and Left are pixel
locations on the screen and changes when you change the height of a row or
Width of a column. the pciture will not move when the Row height is changed
or the column width is changed so thepicturewill look like it moved when
height/width are adjusted.


Use DIR to find if apictureexists before you inset thepictureon the
worksheet. The code below will work as long as the formaty (ie jpg) of the
pictureis recognized on your PC. You have to adjust the width of the
Columns on the worksheet to the right size before you add thepicture.
Another choise is to add thepictureand use the width porperty of the cell
and the width porperty of thepictureto get thepictureto appear like they
are the same width as the column. You can either make the all the columns
the same width and scale thepictureto fit the column width, or scale the
Columns width to fit thepicturewidth.


Sub add_pictures()


Const PictureHeight = 120


Application.ScreenUpdating = False


'deletepictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = dir(cell.Value)
if PictureFound < "" then


Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
pict.Top = cells(9,cell.column).Top
pict.Left = cells(9,cell.column).Left
else
cell(1,0) = "Picturenot Available"
End If
End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 14, 7:28 pm, Joel wrote:
From
pict.Top = cell.Offset(1, 0).Top
pict.Left = cell.Offset(1, 0).Left
to
pict.Top = Range("B9").Top
pict.Left = Range("B9").Left


" wrote:
Hi I have a Marco that insertspicturesin excel, I need to make a few
changes but I am having difficulty.
This macro is looking into a cell that has thepicturefile location
and it is inserting thepictureright below that cell. But what I need
to change is, I need to be able toinsertthepictureto different


...

read more »- Hide quoted text -

- Show quoted text -


Hi,
The DefaultPicture, - this file is there and it is using it in some
cells before the cell FA9
When I run the Marco it seems that it is displying all the pictures it
just after cell FA9 it starts to display one picture on to of the
other right in between FA9 and FB9.
The Column widths are all the same.
also when I the run Marco it runs without dislaying any errer.
I am sorry I did not understand where to add the "msgbox(cell.address)
"
thanks.


[email protected]

Insert Pictures using Macros
 
On Jun 17, 7:18*am, Joel wrote:
the msgbox was to go on the line just before the Next Cell statement. *Since
yo usaid that all the pictures were ontop of each other I think it is better
to try this test code

The code will put in row 100 all the pixel values of the left edge of the
cell. *I think there may be a problem with the pixel number. *Change the row
number to an unesed Row so it doesn't over-write any data.

For Colcount = 1 To 256
* *Cells(100, Colcount).Value = Cells(100, Colcount).Left
Next Colcount



" wrote:
On Jun 17, 3:48 am, Joel wrote:
the code look ok. *here are some ideas


1) The DefaultPicture = "C:\temp\MyPicture.jpg" file doesn't exist.
2) Check the value of LastCol


LastCol = Cells(4, Columns.Count).End(xltoleft).Row
msgbox (LastCol) * * '<= *Add


3) The pictures you selected don't display anything


4) The column widths are too narrow to see the pciture.


5) You are getting an error. *Try adding this line to see if yo uare exiting
the For loop before you reach the last column


* *msgbox(cell.address) * *'<= add just before the Next cell statement
Next cell


" wrote:
On Jun 16, 3:19 am, Joel wrote:
Row 5 is being cleared by the following statement


1) cell.Offset(1, 0).ClearContents


Because cell is every cell in the Range B4:Iv4 the abovestatement is
clearing the cell one row greater than row 4.


2) This statment is doing nothing. *Iorigianally put it in the code because
I thought you cells that contained thepicturenames were going down the rows
instead of across the columns.


LastRow = Cells(Rows.Count, "D").End(xlUp).Row


Rows.Count is a constant in excel which indicated the lastrow of the
worksheet (65,536). *To find the last used cell in Column D the code starts
at D65536 and looks up the column (end(xlup) until it finds data.


You could make this change in your code to find the last column in a similar
fashion.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastCol = Cells(4, Columns.Count).End(xltoleft).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range(Range("B4"),Cells(4,LastCol))
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = Dir(cell.Value)
* * * If PictureFound < "" Then


* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(cell.Value)
* * * Else
* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(DefaultPicture)
* * * End If
* * * pict.ShapeRange.LockAspectRatio = msoTrue
* * * pict.ShapeRange.Height = PictureHeight
* * * PictWidth = pict.Width
* * * CellWidth = Cells(9, cell.Column).Width
* * * WidthBorder = CellWidth - PictWidth
* * * pict.Left = Cells(9, cell.Column).Left + (WidthBorder / 2)


* * * PictHeight = pict.Height
* * * CellHeight = Cells(9, cell.Column).Height
* * * HeightBorder = CellHeight - PictHeight
* * * pict.Top = Cells(9, cell.Column).Top + (HeightBorder / 2)
* *End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 6:56 pm, Joel wrote:
You have to subtract the size of thepicturefrom the size of the cell and
shift thepictureby 1/2 the difference. *You dod this using the height and
width properties as shown below.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = Dir(cell.Value)
* * * If PictureFound < "" Then


* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(cell.Value)
* * * Else
* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(DefaultPicture)
* * * End If
* * * pict.ShapeRange.LockAspectRatio = msoTrue
* * * pict.ShapeRange.Height = PictureHeight
* * * PictWidth = pict.Width
* * * CellWidth = Cells(9, cell.Column).Width
* * * WidthBorder = CellWidth - PictWidth
* * * pict.Left = Cells(9, cell.Column).Left + (WidthBorder / 2)


* * * PictHeight = pict.Height
* * * CellHeight = Cells(9, cell.Column).Height
* * * HeightBorder = CellHeight - PictHeight
* * * pict.Top = Cells(9, cell.Column).Top + (HeightBorder / 2)
* *End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 5:23 pm, Joel wrote:
It should of been
cells(9,cell.column) = "Picturenot Available"


You can replace this line with ainsertof a standardpicturelike yoiu did
in the other part of the code.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = Dir(cell.Value)
* * * If PictureFound < "" Then


* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(cell.Value)
* * * Else
* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(DefaultPicture)
* * * End If
* * * pict.ShapeRange.LockAspectRatio = msoTrue
* * * pict.ShapeRange.Height = PictureHeight
* * * pict.Top = Cells(9, cell.Column).Top
* * * pict.Left = Cells(9, cell.Column).Left
* *End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 4:25 am, Joel wrote:
Picturesare not part of the worksheet cell structure but instead apicture
is an object tjat sits ontop of the worksheet. *You can put apictureontop
of a cell by using the Top and Left properties. *Top and Left are pixel
locations on the screen *and changes when you change the height of a row or
Width of a column. *the pciture will *not move when the Row height is changed
or the column width is changed so thepicturewill look like it moved when
height/width are adjusted.


Use DIR to find if apictureexists before you *inset thepictureon the
worksheet. *The code below will work as long as the formaty (ie jpg) of the
pictureis recognized on your PC. * You have to adjust the width of the
Columns on the worksheet to the right size before you add thepicture. *
Another choise is to add thepictureand use the width porperty of the cell
and the width porperty of thepictureto get thepictureto appear like they
are the same width as the column. *You can either make the all the columns
the same width and scale thepictureto fit the column width, or scale the
Columns width to fit thepicturewidth.


Sub add_pictures()


Const PictureHeight = 120


Application.ScreenUpdating = False


'deletepictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = dir(cell.Value)
* * * if PictureFound < "" then


* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(cell.Value)
* * * * *pict.ShapeRange.LockAspectRatio = msoTrue


...

read more »- Hide quoted text -

- Show quoted text -




Hi,
I added the line that you suggested and in Row 100 I got some
numbers,
(Cell A100 it says "0")
(Cell B100 "99.75") then ("257.25") and so on,
in cell (FA100 "24512.25") (FB100 "24575.25") and after that (FC100
"24575.25") same as FB100, and the same number all the way to the last
cell (IV100 "24575.25")

Thanks



joel

Insert Pictures using Macros
 
You got the results I was expecting. It looks like the maximum Pixel Value
is approximately 25,000. I check the Worksheet help under "Specifications
and Limits" and did not find this limit listed. Th eonly way of solving this
problem is to make the column widths narrower approximately 25,000/256
columns (column IV is 255) so that all the pictures will fit.

the pictures are being placed using the left pixel number which is the
number being displayed in row 100.

" wrote:

On Jun 17, 7:18 am, Joel wrote:
the msgbox was to go on the line just before the Next Cell statement. Since
yo usaid that all the pictures were ontop of each other I think it is better
to try this test code

The code will put in row 100 all the pixel values of the left edge of the
cell. I think there may be a problem with the pixel number. Change the row
number to an unesed Row so it doesn't over-write any data.

For Colcount = 1 To 256
Cells(100, Colcount).Value = Cells(100, Colcount).Left
Next Colcount



" wrote:
On Jun 17, 3:48 am, Joel wrote:
the code look ok. here are some ideas


1) The DefaultPicture = "C:\temp\MyPicture.jpg" file doesn't exist.
2) Check the value of LastCol


LastCol = Cells(4, Columns.Count).End(xltoleft).Row
msgbox (LastCol) '<= Add


3) The pictures you selected don't display anything


4) The column widths are too narrow to see the pciture.


5) You are getting an error. Try adding this line to see if yo uare exiting
the For loop before you reach the last column


msgbox(cell.address) '<= add just before the Next cell statement
Next cell


" wrote:
On Jun 16, 3:19 am, Joel wrote:
Row 5 is being cleared by the following statement


1) cell.Offset(1, 0).ClearContents


Because cell is every cell in the Range B4:Iv4 the abovestatement is
clearing the cell one row greater than row 4.


2) This statment is doing nothing. Iorigianally put it in the code because
I thought you cells that contained thepicturenames were going down the rows
instead of across the columns.


LastRow = Cells(Rows.Count, "D").End(xlUp).Row


Rows.Count is a constant in excel which indicated the lastrow of the
worksheet (65,536). To find the last used cell in Column D the code starts
at D65536 and looks up the column (end(xlup) until it finds data.


You could make this change in your code to find the last column in a similar
fashion.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastCol = Cells(4, Columns.Count).End(xltoleft).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range(Range("B4"),Cells(4,LastCol))
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = Dir(cell.Value)
If PictureFound < "" Then


Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
Else
Set pict = ActiveSheet.Pictures. _
Insert(DefaultPicture)
End If
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
PictWidth = pict.Width
CellWidth = Cells(9, cell.Column).Width
WidthBorder = CellWidth - PictWidth
pict.Left = Cells(9, cell.Column).Left + (WidthBorder / 2)


PictHeight = pict.Height
CellHeight = Cells(9, cell.Column).Height
HeightBorder = CellHeight - PictHeight
pict.Top = Cells(9, cell.Column).Top + (HeightBorder / 2)
End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 6:56 pm, Joel wrote:
You have to subtract the size of thepicturefrom the size of the cell and
shift thepictureby 1/2 the difference. You dod this using the height and
width properties as shown below.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = Dir(cell.Value)
If PictureFound < "" Then


Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
Else
Set pict = ActiveSheet.Pictures. _
Insert(DefaultPicture)
End If
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
PictWidth = pict.Width
CellWidth = Cells(9, cell.Column).Width
WidthBorder = CellWidth - PictWidth
pict.Left = Cells(9, cell.Column).Left + (WidthBorder / 2)


PictHeight = pict.Height
CellHeight = Cells(9, cell.Column).Height
HeightBorder = CellHeight - PictHeight
pict.Top = Cells(9, cell.Column).Top + (HeightBorder / 2)
End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 5:23 pm, Joel wrote:
It should of been
cells(9,cell.column) = "Picturenot Available"


You can replace this line with ainsertof a standardpicturelike yoiu did
in the other part of the code.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = Dir(cell.Value)
If PictureFound < "" Then


Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
Else
Set pict = ActiveSheet.Pictures. _
Insert(DefaultPicture)
End If
pict.ShapeRange.LockAspectRatio = msoTrue
pict.ShapeRange.Height = PictureHeight
pict.Top = Cells(9, cell.Column).Top
pict.Left = Cells(9, cell.Column).Left
End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 4:25 am, Joel wrote:
Picturesare not part of the worksheet cell structure but instead apicture
is an object tjat sits ontop of the worksheet. You can put apictureontop
of a cell by using the Top and Left properties. Top and Left are pixel
locations on the screen and changes when you change the height of a row or
Width of a column. the pciture will not move when the Row height is changed
or the column width is changed so thepicturewill look like it moved when
height/width are adjusted.


Use DIR to find if apictureexists before you inset thepictureon the
worksheet. The code below will work as long as the formaty (ie jpg) of the
pictureis recognized on your PC. You have to adjust the width of the
Columns on the worksheet to the right size before you add thepicture.
Another choise is to add thepictureand use the width porperty of the cell
and the width porperty of thepictureto get thepictureto appear like they
are the same width as the column. You can either make the all the columns
the same width and scale thepictureto fit the column width, or scale the
Columns width to fit thepicturewidth.


Sub add_pictures()


Const PictureHeight = 120


Application.ScreenUpdating = False


'deletepictures
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Delete
End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
If cell < "" Then
cell.Offset(1, 0).ClearContents
PictureFound = dir(cell.Value)
if PictureFound < "" then


Set pict = ActiveSheet.Pictures. _
Insert(cell.Value)
pict.ShapeRange.LockAspectRatio = msoTrue


...

read more »- Hide quoted text -

- Show quoted text -




Hi,
I added the line that you suggested and in Row 100 I got some
numbers,
(Cell A100 it says "0")
(Cell B100 "99.75") then ("257.25") and so on,
in cell (FA100 "24512.25") (FB100 "24575.25") and after that (FC100
"24575.25") same as FB100, and the same number all the way to the last
cell (IV100 "24575.25")

Thanks




[email protected]

Insert Pictures using Macros
 
On Jun 17, 9:48*am, Joel wrote:
You got the results I was expecting. *It looks like the maximum Pixel Value
is approximately 25,000. *I check the Worksheet help under "Specifications
and Limits" and did not find this limit listed. *Th eonly way of solving this
problem is to make the column widths narrower approximately 25,000/256
columns *(column IV is 255) so that all the pictures will fit.

the pictures are being placed using the left pixel number which is the
number being displayed in row 100.



" wrote:
On Jun 17, 7:18 am, Joel wrote:
the msgbox was to go on the line just before the Next Cell statement. *Since
yo usaid that all the pictures were ontop of each other I think it is better
to try this test code


The code will put in row 100 all the pixel values of the left edge of the
cell. *I think there may be a problem with the pixel number. *Change the row
number to an unesed Row so it doesn't over-write any data.


For Colcount = 1 To 256
* *Cells(100, Colcount).Value = Cells(100, Colcount).Left
Next Colcount


" wrote:
On Jun 17, 3:48 am, Joel wrote:
the code look ok. *here are some ideas


1) The DefaultPicture = "C:\temp\MyPicture.jpg" file doesn't exist.
2) Check the value of LastCol


LastCol = Cells(4, Columns.Count).End(xltoleft).Row
msgbox (LastCol) * * '<= *Add


3) The pictures you selected don't display anything


4) The column widths are too narrow to see the pciture.


5) You are getting an error. *Try adding this line to see if yo uare exiting
the For loop before you reach the last column


* *msgbox(cell.address) * *'<= add just before the Next cell statement
Next cell


" wrote:
On Jun 16, 3:19 am, Joel wrote:
Row 5 is being cleared by the following statement


1) cell.Offset(1, 0).ClearContents


Because cell is every cell in the Range B4:Iv4 the abovestatement is
clearing the cell one row greater than row 4.


2) This statment is doing nothing. *Iorigianally put it in the code because
I thought you cells that contained thepicturenames were going down the rows
instead of across the columns.


LastRow = Cells(Rows.Count, "D").End(xlUp).Row


Rows.Count is a constant in excel which indicated the lastrow of the
worksheet (65,536). *To find the last used cell in Column D the code starts
at D65536 and looks up the column (end(xlup) until it finds data.


You could make this change in your code to find the last column in a similar
fashion.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastCol = Cells(4, Columns.Count).End(xltoleft).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range(Range("B4"),Cells(4,LastCol))
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = Dir(cell.Value)
* * * If PictureFound < "" Then


* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(cell.Value)
* * * Else
* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(DefaultPicture)
* * * End If
* * * pict.ShapeRange.LockAspectRatio = msoTrue
* * * pict.ShapeRange.Height = PictureHeight
* * * PictWidth = pict.Width
* * * CellWidth = Cells(9, cell.Column).Width
* * * WidthBorder = CellWidth - PictWidth
* * * pict.Left = Cells(9, cell.Column).Left + (WidthBorder / 2)


* * * PictHeight = pict.Height
* * * CellHeight = Cells(9, cell.Column).Height
* * * HeightBorder = CellHeight - PictHeight
* * * pict.Top = Cells(9, cell.Column).Top + (HeightBorder / 2)
* *End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 6:56 pm, Joel wrote:
You have to subtract the size of thepicturefrom the size of the cell and
shift thepictureby 1/2 the difference. *You dod this using the height and
width properties as shown below.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = Dir(cell.Value)
* * * If PictureFound < "" Then


* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(cell.Value)
* * * Else
* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(DefaultPicture)
* * * End If
* * * pict.ShapeRange.LockAspectRatio = msoTrue
* * * pict.ShapeRange.Height = PictureHeight
* * * PictWidth = pict.Width
* * * CellWidth = Cells(9, cell.Column).Width
* * * WidthBorder = CellWidth - PictWidth
* * * pict.Left = Cells(9, cell.Column).Left + (WidthBorder / 2)


* * * PictHeight = pict.Height
* * * CellHeight = Cells(9, cell.Column).Height
* * * HeightBorder = CellHeight - PictHeight
* * * pict.Top = Cells(9, cell.Column).Top + (HeightBorder / 2)
* *End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 5:23 pm, Joel wrote:
It should of been
cells(9,cell.column) = "Picturenot Available"


You can replace this line with ainsertof a standardpicturelike yoiu did
in the other part of the code.


Sub add_pictures()


Const PictureHeight = 120
DefaultPicture = "C:\temp\MyPicture.jpg"


Application.ScreenUpdating = False


'delete pictures
For Each shp In ActiveSheet.Shapes
* *If shp.Type = msoPicture Then
* * * shp.Delete
* *End If
Next shp


LastRow = Cells(Rows.Count, "D").End(xlUp).Row
Rows(5).RowHeight = PictureHeight


For Each cell In Range("B4:IV4")
* *If cell < "" Then
* * * cell.Offset(1, 0).ClearContents
* * * PictureFound = Dir(cell.Value)
* * * If PictureFound < "" Then


* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(cell.Value)
* * * Else
* * * * *Set pict = ActiveSheet.Pictures. _
* * * * * *Insert(DefaultPicture)
* * * End If
* * * pict.ShapeRange.LockAspectRatio = msoTrue
* * * pict.ShapeRange.Height = PictureHeight
* * * pict.Top = Cells(9, cell.Column).Top
* * * pict.Left = Cells(9, cell.Column).Left
* *End If 'new line
Next cell
Exit Sub 'new line


End Sub


" wrote:
On Jun 15, 4:25 am, Joel wrote:
Picturesare not part of the worksheet cell structure but instead apicture
is an object tjat sits ontop of the worksheet. *You can put apictureontop
of a cell by using the Top and Left properties. *Top and Left are pixel
locations on the screen *and changes when you change the height of a row or
Width of a column. *the pciture will *not move when the Row height is changed
or the column width is changed so thepicturewill look like it moved when
height/width are adjusted.


Use DIR to find if apictureexists before you *inset thepictureon the
worksheet. *The code below will work as long as the formaty (ie jpg) of the
pictureis recognized on your PC. * You have to adjust the width of the
Columns on the worksheet to the right size before you add thepicture. *
Another choise is to add thepictureand use the width porperty of the cell
and the width porperty of thepictureto get


...

read more »- Hide quoted text -

- Show quoted text -



Hi,
You are right, the smaller I make the column width the more pictures I
get correctly placed in the cells.
But does the picture size "bytes" affect this, meaning if I use
smaller pictures will this affect or no, if my pictures are 7kb or
200k each will this have the same affect, or the pixel has to do the
way excel works.
I need one more thing, I realized that not all my pictures are the
same hight and weight, can we enter somthing in macro that will make
the picture not go over say height of 120 and a width of 150

Thanks


J P[_2_]

Cannot Read the posts above?
 
Hi,
What happen so the formatting of the posts have been ruined?

I cannot even tell if there has been a solution to inserting pictures from a separate cell, and if scaling pictures is another option?

If so, would it be possible to repost the script in its entirety?

Thanks,
-J


All times are GMT +1. The time now is 01:45 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com