Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
Max Max is offline
external usenet poster
 
Posts: 9,221
Default Sub to replace pictures in a workbook

Hi guys,

I'm looking for help with a sub to replace pictures within a workbook.

I've inserted and positioned say: Picture 1
in several places within Sheet1, and also within Sheet2, Sheet3, etc

Now I've just inserted say: Picture 5 somewhere within Sheet1

I would like to run a sub to replace Picture 1 with Picture 5
everywhere within the book.

The sub should return me to Sheet1 upon completion.

Thanks.
--
Max
Singapore
http://savefile.com/projects/236895
xdemechanik
---
  #2   Report Post  
Posted to microsoft.public.excel.programming
Max Max is offline
external usenet poster
 
Posts: 9,221
Default Sub to replace pictures in a workbook

Any insights, folks?

"Picture 1" and "Picture 5" are the names of the inserted pictures
that I see in the namebox
--
Max
Singapore
http://savefile.com/projects/236895
xdemechanik
---
  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Sub to replace pictures in a workbook

This may give you a start...

Option Explicit
Sub testme()
Dim myMstrPict As Picture
Dim myPict As Picture
Dim myNewPict As Picture
Dim wks As Worksheet
Dim myTop As Double
Dim myWidth As Double
Dim myHeight As Double
Dim myLeft As Double
Dim myReplacementName As String

myReplacementName = "Picture 1"
Set myMstrPict = Worksheets("sheet1").Pictures("Picture 5")

For Each wks In ActiveWorkbook.Worksheets
If wks.Name = myMstrPict.Parent.Name Then
'do nothing on that master sheet
Else
For Each myPict In wks.Pictures
With myPict
If LCase(.Name) = LCase(myReplacementName) Then
'found one
myTop = .Top
myWidth = .Width
myLeft = .Left
myHeight = .Height
.Delete
myMstrPict.Copy
.Parent.Paste
Set myNewPict = .Parent.Pictures(.Parent.Pictures.Count)
With myNewPict
.Top = myTop
.Width = myWidth
.Left = myLeft
.Height = myHeight
.Name = myMstrPict.Name
End With
End If
End With
Next myPict
End If
Next wks
End Sub


Max wrote:

Hi guys,

I'm looking for help with a sub to replace pictures within a workbook.

I've inserted and positioned say: Picture 1
in several places within Sheet1, and also within Sheet2, Sheet3, etc

Now I've just inserted say: Picture 5 somewhere within Sheet1

I would like to run a sub to replace Picture 1 with Picture 5
everywhere within the book.

The sub should return me to Sheet1 upon completion.

Thanks.
--
Max
Singapore
http://savefile.com/projects/236895
xdemechanik
---


--

Dave Peterson
  #4   Report Post  
Posted to microsoft.public.excel.programming
Max Max is offline
external usenet poster
 
Posts: 9,221
Default Sub to replace pictures in a workbook

"Dave Peterson" wrote:
This may give you a start...


Many thanks, Dave!

I've tested here carefully a couple of times.

My test set-up (sheets placed from left to right):
Sheet1: 1 instance of Picture 5

Sheet4: 1 instance of Picture 1
Sheet5: 2 instances of Picture 1
Sheet7: 3 instances of Picture 1
Sheet9: 1 instance of Picture 1

(Names: "Picture 5", "Picture 1" were ensured correct on all sheets)

Ran the sub to replace Picture 1 with Picture 5,
but hit an error (see below)

Results we
Sheet4: 1 instance of Picture 1 (OK, replaced with Pic 5, beautiful!)
Sheet5: 2 instances of Picture 1 (Not OK, replaced only 1 instance with Pic 5)
Sheet7: 3 instances of Picture 1 (Untouched, nothing done)
Sheet9: 1 instance of Picture 1 (Untouched, nothing done)

Error msg: Runtime error 1004
Unable to get the Name property of the Picture class

Debug pointed at this line:
If LCase(.Name) = LCase(myReplacementName) Then

Thanks
(btw, i'm now using XL 2003 <g)
--
Max
Singapore
http://savefile.com/projects/236895
xdemechanik
---
  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Sub to replace pictures in a workbook

My bet is you got the 1004 error on the 2nd picture of sheet5. So sheet7 and
sheet9 didn't get looked at.

I think the real bad news is that when you have multiple pictures with the same
name on the same worksheet, then when you use code like:

activesheet.pictures("picture 1").delete

You can never be sure what picture is being deleted. (It's come up in other
responses.)

And same with setting the position (.height, .width, .top, .left). (All this is
with "If I recall correctly" added to it!)

I think the best solution was/is to make sure that there aren't pictures with
the same name on the same sheet.






Max wrote:

"Dave Peterson" wrote:
This may give you a start...


Many thanks, Dave!

I've tested here carefully a couple of times.

My test set-up (sheets placed from left to right):
Sheet1: 1 instance of Picture 5

Sheet4: 1 instance of Picture 1
Sheet5: 2 instances of Picture 1
Sheet7: 3 instances of Picture 1
Sheet9: 1 instance of Picture 1

(Names: "Picture 5", "Picture 1" were ensured correct on all sheets)

Ran the sub to replace Picture 1 with Picture 5,
but hit an error (see below)

Results we
Sheet4: 1 instance of Picture 1 (OK, replaced with Pic 5, beautiful!)
Sheet5: 2 instances of Picture 1 (Not OK, replaced only 1 instance with Pic 5)
Sheet7: 3 instances of Picture 1 (Untouched, nothing done)
Sheet9: 1 instance of Picture 1 (Untouched, nothing done)

Error msg: Runtime error 1004
Unable to get the Name property of the Picture class

Debug pointed at this line:
If LCase(.Name) = LCase(myReplacementName) Then

Thanks
(btw, i'm now using XL 2003 <g)
--
Max
Singapore
http://savefile.com/projects/236895
xdemechanik
---


--

Dave Peterson


  #6   Report Post  
Posted to microsoft.public.excel.programming
Max Max is offline
external usenet poster
 
Posts: 9,221
Default Sub to replace pictures in a workbook

"Dave Peterson" wrote:
I think the best solution was/is to make sure that there aren't pictures with
the same name on the same sheet.


Thanks for insights, Dave !

If supposing I were to ensure the above, whilst retaining a meaningful, say,
alphanumeric sequence of naming the picture instances for ease of future
replacements' sake, for example, I label the pic instances as: Picture 1,
Picture 1a, Picture 1b, etc (same pic in same sheet, just different names)

and then when I want to replace all of Picture 1*
with a new pic: Picture 5,
with the pics replaced renamed in the same manner:
Picture 5, Picture 5a, Picture 5b, etc

would the above then make it possible via a sub ?

I definitely wouldn't mind the one-time labour of naming pics carefully if
this allows a sub to be run for eventual replacements. Thanks for further
thoughts.
--
Max
Singapore
http://savefile.com/projects/236895
xdemechanik
---
  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Sub to replace pictures in a workbook

I think I'd use names like: picture_001_A

It might make it a bit easier.

Option Explicit
Sub testme()
Dim myMstrPict As Picture
Dim myPict As Picture
Dim myNewPict As Picture
Dim wks As Worksheet
Dim myTop As Double
Dim myWidth As Double
Dim myHeight As Double
Dim myLeft As Double
Dim myName As String
Dim PrefixToUse As String
Dim PrefixToLookFor As String

PrefixToLookFor = "Picture_005"
PrefixToUse = "Picture_001"

'use whatever name you want for the replacement
Set myMstrPict = Worksheets("sheet1").Pictures("picture_001")

For Each wks In ActiveWorkbook.Worksheets
If wks.Name = myMstrPict.Parent.Name Then
'do nothing on that master sheet
Else
For Each myPict In wks.Pictures
With myPict
If LCase(.Name) Like LCase(PrefixToLookFor) & "*" Then
'found one
myTop = .Top
myWidth = .Width
myLeft = .Left
myHeight = .Height
myName = .Name
.Delete
myMstrPict.Copy
.Parent.Paste
Set myNewPict = .Parent.Pictures(.Parent.Pictures.Count)
With myNewPict
.Top = myTop
.Width = myWidth
.Left = myLeft
.Height = myHeight
.Name = Replace(expression:=myName, _
Find:=PrefixToLookFor, _
Replace:=PrefixToUse, _
Start:=1, Count:=-1, _
compa=vbTextCompare)
End With
End If
End With
Next myPict
End If
Next wks
End Sub


(I think it does what you want???)



Max wrote:

"Dave Peterson" wrote:
I think the best solution was/is to make sure that there aren't pictures with
the same name on the same sheet.


Thanks for insights, Dave !

If supposing I were to ensure the above, whilst retaining a meaningful, say,
alphanumeric sequence of naming the picture instances for ease of future
replacements' sake, for example, I label the pic instances as: Picture 1,
Picture 1a, Picture 1b, etc (same pic in same sheet, just different names)

and then when I want to replace all of Picture 1*
with a new pic: Picture 5,
with the pics replaced renamed in the same manner:
Picture 5, Picture 5a, Picture 5b, etc

would the above then make it possible via a sub ?

I definitely wouldn't mind the one-time labour of naming pics carefully if
this allows a sub to be run for eventual replacements. Thanks for further
thoughts.
--
Max
Singapore
http://savefile.com/projects/236895
xdemechanik
---


--

Dave Peterson
  #8   Report Post  
Posted to microsoft.public.excel.programming
Max Max is offline
external usenet poster
 
Posts: 9,221
Default Sub to replace pictures in a workbook

"Dave Peterson" wrote:
I think I'd use names like: picture_001_A
It might make it a bit easier.


Noted and scrupulously done <g !

(I think it does what you want???)


Based on my tests here so far, it's, it's ... excellent !
(switched the 005 and 001 bits around though <g)

Many thanks, Dave for your help !
--
Max
Singapore
http://savefile.com/projects/236895
xdemechanik
---
  #9   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Sub to replace pictures in a workbook

It was late and I was tired and confused.

(There might be a lesson in there somewhere--but it's early and I'm tired and
confused <vbg.)

Max wrote:

"Dave Peterson" wrote:
I think I'd use names like: picture_001_A
It might make it a bit easier.


Noted and scrupulously done <g !

(I think it does what you want???)


Based on my tests here so far, it's, it's ... excellent !
(switched the 005 and 001 bits around though <g)

Many thanks, Dave for your help !
--
Max
Singapore
http://savefile.com/projects/236895
xdemechanik
---


--

Dave Peterson
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Replace hyperlinks with actual pictures mi Links and Linking in Excel 2 May 30th 06 07:50 PM
pictures are disappearing from workbook, why? george108 Excel Worksheet Functions 1 April 1st 06 02:25 AM
How to replace pictures TUNGANA KURMA RAJU Excel Discussion (Misc queries) 1 November 2nd 05 01:42 PM
inserting pictures in a workbook TCB Excel Discussion (Misc queries) 1 May 31st 05 12:54 PM
Embed Pictures in Workbook John Wilson Excel Programming 3 April 10th 04 08:06 PM


All times are GMT +1. The time now is 01:15 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"