XL 2021 VBA - Retrouver le Caption d'un objet intégré (embbeded object)

  • Initiateur de la discussion Initiateur de la discussion Dudu2
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Dudu2

XLDnaute Barbatruc
Bonjour,

Je n'arrive pas à trouver une propriété de Shape ou d'OLEObject qui me rendrait le nom qui apparait sous l'icône et qui correspond au nom du fichier qui été inséré en tant qu'objet: Insertion / Texte / Objet / Créer à partir du fichier (pas de case cochée).
 

Pièces jointes

Solution
Salut,
le matou qui proute m'a proposé un tas de solution, mais il a fini par arrivé à la conclusion que c'est impossible à faire en vba.
Comme on voit ce nom dans les propriétés Objet de l'objet , il faudrait pouvoir ouvrir cette fenêtre en vba et peut-être qu'avec uiautomation on pourrait aller picorer le nom de fichier dans la fenêtre.
nomOle.gif




1758905762126.png


avec ce code j'arrive à ouvrir une fenêtre sur l'objet , c'est pas la bonne mais dedans il y a le nom du fichier :
VB:
Sub Macro1()
    ActiveSheet.Shapes("Object 1").Select
    Selection.Verb Verb:=2    'xlVerbProperties
End Sub
Bonjour Dudu,
Juste pour essayer d'avancer.
VB:
Sub Macro1()
    ActiveSheet.Shapes("Object 1").Select
    Selection.Verb Verb:=33
End Sub
Cette macro ouvre les propriétés de l'objet. Le nom figure dans la feuille Détails sous Nom . On trouve bien PDF.ico.
Par contre je ne sais pas accéder à cette propriété par VBA. 😢

1758896775510.png
 
Salut,
le matou qui proute m'a proposé un tas de solution, mais il a fini par arrivé à la conclusion que c'est impossible à faire en vba.
Comme on voit ce nom dans les propriétés Objet de l'objet , il faudrait pouvoir ouvrir cette fenêtre en vba et peut-être qu'avec uiautomation on pourrait aller picorer le nom de fichier dans la fenêtre.
nomOle.gif




1758905762126.png


avec ce code j'arrive à ouvrir une fenêtre sur l'objet , c'est pas la bonne mais dedans il y a le nom du fichier :
VB:
Sub Macro1()
    ActiveSheet.Shapes("Object 1").Select
    Selection.Verb Verb:=2    'xlVerbProperties
End Sub
 
Dernière édition:
Et la petite fonction qui va bien (chez moi en tous cas)
VB:
'----------------------------------------
'Get the Caption of an Embbeded OLEObject
'----------------------------------------
Private Function GetEmbbededOLEObjectCaption(Shape As Shape) As String
    Dim ActiveSheetAtCallTime As Worksheet
    Dim ScreenUpdatingAtCallTime As Boolean
    Dim DataObject As Object
    '
    Const xlVerbProperties = 2
 
    'Initialisations
    ScreenUpdatingAtCallTime = Application.ScreenUpdating
    Set ActiveSheetAtCallTime = ActiveSheet
 
    Application.ScreenUpdating = False
    Shape.Parent.Activate
    Shape.Select
    CreateObject("wscript.shell").SendKeys "{TAB}{TAB}{TAB}^c{ESC}"
    Selection.Verb Verb:=xlVerbProperties
    DoEvents
    ActiveCell.Select
 
    Set DataObject = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    With DataObject
        .GetFromClipBoard
        'Return value
        GetEmbbededOLEObjectCaption = .GetText
    End With
 
    'Terminaisons
    ActiveSheetAtCallTime.Activate
    Application.ScreenUpdating = ScreenUpdatingAtCallTime
End Function
 

Pièces jointes

Dernière édition:
bonsoir
par vba
filecopy original , fichier.zip
ouvrir le zip avec createobject("shell.application")
récupérer le .bin qui est dans le dossier embedding dans l'archive
ouvrir le .bin avec open for input.....
chercher le chemin complet dans l'utilisation temporaire (le apdatata) il n'est cité qu'une fois je crois
1758917640232.png


voila
Patrick
 
Bonsoir @patricktoulon,

Certes en VBA mais via fichier.
Alors via fichier il y a aussi la solution qui consiste à enregistrer l'OLEObject Embbeded temporairement.
VB:
Private Function GetEmbbededOLEObjectCaption2(Shape As Shape) As String
    Dim oShell As Object
    Dim FolderName As String
    Dim FileName As String
    '
    Const TempFolderName = "TempFolder"

    FolderName = Environ("TEMP") & "\" & TempFolderName
    MkDir FolderName
    
    Set oShell = CreateObject("Shell.Application")
    
    'Save the Embbeded Object
    Shape.OLEFormat.Object.Copy
    oShell.Namespace(Environ("TEMP") & "\" & TempFolderName).Self.InvokeVerb "Paste"

    'Get the first file from the folder
    FileName = Dir(FolderName & "\", vbNormal)
    Kill FolderName & "\" & FileName
    RmDir FolderName
     
    'Return value
    GetEmbbededOLEObjectCaption2 = FileName
End Function
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour