ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   OLEObjects collections for embedded files (https://www.excelbanter.com/excel-programming/378573-oleobjects-collections-embedded-files.html)

[email protected]

OLEObjects collections for embedded files
 
I am having the worse time trying to manipulate the OLEObjects
collection. I am able to add objects to my Excel 2002 workbook, but I
have difficulty when trying to reference the objects I added by NAME.
Here is the code I use to add the imbedded file objects. How would I
then reference these objects by the NAME that I gave them instead of
the INDEX number. Does the INDEX number change as objects are deleted
from a Worksheet? Thanks.

filesel = Application.GetOpenFilename _
(FileFilter:="All files (*.*), *.*", _
Title:="Select Files to Attach", MultiSelect:=True)
If Not IsArray(filesel) Then Exit Sub

ws.Activate
OLEnum = ActiveSheet.OLEObjects.Count
For i = 1 To UBound(filesel)
thisFullName = filesel(i)
thisFile = Dir(thisFullName)
o = o + 1
ActiveSheet.OLEObjects.Add(Filename:=thisFullName, _
Link:=False, DisplayAsIcon:=True, _
IconFileName:="packager.exe", _
IconIndex:=0, IconLabel:=thisFile).Name = thisFile
OLEnum = OLEnum + 1
ActiveSheet.OLEObjects(OLEnum).Name = thisFile
With ActiveSheet.OLEObjects(OLEnum)
.top = rg.Cells(c).top
.Left = rg.Cells(c).Left
.Width = rg.Cells(c).Width
.Height = rg.Cells(c).Height
End With
c = c + 1
With Me.boxAttachments
.AddItem OLEnum
.List(boxAttachments.ListCount - 1, 1) = thisFile
End With
Next i


John[_125_]

OLEObjects collections for embedded files
 

PapaDos wrote:
ActiveSheet.OLEObjects("OBJETC_NAME").Name
--
Regards,
Luc.

"Festina Lente"



I have tried doing that but it does not work. Since I assign names as
the objects are added, I figured this would work too. I have tried
referencing them as follows and nothing works except using the Index
number which I found out does change everytime one is deleted or added.

Dim sName as String
sName = "MyfileName.txt"
ActiveSheet.OLEObjects(sName).Delete ' This does not work


Any other suggestions?


Peter T

OLEObjects collections for embedded files
 
Have a go with this -

For i = 1 To ActiveSheet.OLEObjects.Count
If ActiveSheet.OLEObjects(i).name = sName Then
ActiveSheet.OLEObjects(i).Delete
'Exit For
End If
Next

Regards
Peter T



"John" wrote in message
oups.com...

PapaDos wrote:
ActiveSheet.OLEObjects("OBJETC_NAME").Name
--
Regards,
Luc.

"Festina Lente"



I have tried doing that but it does not work. Since I assign names as
the objects are added, I figured this would work too. I have tried
referencing them as follows and nothing works except using the Index
number which I found out does change everytime one is deleted or added.

Dim sName as String
sName = "MyfileName.txt"
ActiveSheet.OLEObjects(sName).Delete ' This does not work


Any other suggestions?




John[_125_]

OLEObjects collections for embedded files
 

Peter T wrote:
Have a go with this -

For i = 1 To ActiveSheet.OLEObjects.Count
If ActiveSheet.OLEObjects(i).name = sName Then
ActiveSheet.OLEObjects(i).Delete
'Exit For
End If
Next

Regards
Peter T



"John" wrote in message
oups.com...

PapaDos wrote:
ActiveSheet.OLEObjects("OBJETC_NAME").Name
--
Regards,
Luc.

"Festina Lente"



I have tried doing that but it does not work. Since I assign names as
the objects are added, I figured this would work too. I have tried
referencing them as follows and nothing works except using the Index
number which I found out does change everytime one is deleted or added.

Dim sName as String
sName = "MyfileName.txt"
ActiveSheet.OLEObjects(sName).Delete ' This does not work


Any other suggestions?


This works. I would still like to be able to reference these objects
via name, but this works for my purposes.

Thanks.


Peter T

OLEObjects collections for embedded files
 

"John" wrote in message
ps.com...

Peter T wrote:
Have a go with this -

For i = 1 To ActiveSheet.OLEObjects.Count
If ActiveSheet.OLEObjects(i).name = sName Then
ActiveSheet.OLEObjects(i).Delete
'Exit For
End If
Next

Regards
Peter T

This works. I would still like to be able to reference these objects
via name, but this works for my purposes.

Thanks.


Dim shp As Shape, oOLE As OLEObject

Set shp = ActiveSheet.Shapes(sName)

' if you want to delete
'shp.Delete

'or work with the OLE
Set oOLE = shp.DrawingObject

Regards,
Peter T



Peter T

OLEObjects collections for embedded files
 
PS

You may find it easier to get straight at OLEObjects & drawingobjects in
general if you don't use punctuation like "." in the name unless as it seems
you need to. Punctuation is much less restricted with the shapes collection.

Peter T

"Peter T" <peter_t@discussions wrote in message
...

"John" wrote in message
ps.com...

Peter T wrote:
Have a go with this -

For i = 1 To ActiveSheet.OLEObjects.Count
If ActiveSheet.OLEObjects(i).name = sName Then
ActiveSheet.OLEObjects(i).Delete
'Exit For
End If
Next

Regards
Peter T

This works. I would still like to be able to reference these objects
via name, but this works for my purposes.

Thanks.


Dim shp As Shape, oOLE As OLEObject

Set shp = ActiveSheet.Shapes(sName)

' if you want to delete
'shp.Delete

'or work with the OLE
Set oOLE = shp.DrawingObject

Regards,
Peter T






All times are GMT +1. The time now is 02:29 PM.

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