Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

Datei als Objekt einbetten | Herbers Excel-Forum


Betrifft: Datei als Objekt einbetten von: Helmut
Geschrieben am: 11.02.2012 12:59:50

Hallo Excel-Profis,
ich möchte unseren AD-Mitarbeitern eine komfortable Möglichkeit in die Hand geben, mit Excel ein Formular auszufüllen, bei dem auch Dateien eingebettet werden können.
Es soll ein Code zur Verfügung gestellt werden, mit dem eine Datei (*.doc, *.pdf, oder Bild) über die Befehlsfolge „Einfügen“ - „Objekt“ - „Aus Datei erstellen“ - (Datei auswählen) – „Als Symbol“ in eine Excel-Zelle eingebettet werden kann.
Danach wird das Formular per Mail versandt.
Mein Problem besteht nun darin: Da der Dateiname und Typ (*.doc, *.pdf, oder Bild) und Pfad vorher nicht bekannt sind, sollte der Code so variabel sein, dass der Nutzer nur den Pfad und die Datei selbst auswählen muss.
Kann so eine Aufgabe programmiert werden, und wenn ja wie?
Für eine Lösung wäre ich Euch sehr dankbar. Vielen Dank im voraus.
Gruß Helmut

  

Betrifft: AW: Datei als Objekt einbetten von: fcs
Geschrieben am: 11.02.2012 15:54:16

Hallo Helmut,

unter Excel 2007 geht es im Prinzip mit folgendem Makro. Es wird allerdings nicht immer das zur passenden Anwendung gehörige Icon angezeigt.
Die Zuweisung eines Icons im Makro weglassen führt leider zu auch nict zum Ziel. Insbesondere die MS-Office-Anwendungen entwickeln dann ein Eigenleben.

Gruß
Franz

Sub Datei_Objekt_einbetten()
  Dim varDatei As Variant
  varDatei = Application.GetOpenFilename(FileFilter:="AlleDateien(*.*),*.*", _
          Title:="Bitte einzubettende Datei auswählen")
  If varDatei <> False Then
    ActiveSheet.OLEObjects.Add Filename:=varDatei, _
        Link:=False, DisplayAsIcon:=True, IconFileName:="packager.dll", _
        IconIndex:=0, _
        IconLabel:=Mid(varDatei, InStrRev(varDatei, "\") + 1)
  End If
End Sub



  

Betrifft: AW: Datei als Objekt einbetten von: Nepumuk
Geschrieben am: 11.02.2012 17:13:42

Hallo,

das richtige Icon bekommst du so: http://www.office-loesung.de/ftopic460565_0_0_asc.php

Gruß
Nepumuk


  

Betrifft: AW: Datei als Objekt einbetten von: Helmut
Geschrieben am: 11.02.2012 19:58:07

Hallo Franz, Hallo Nepumuk,
vielen Dank für Eure prompte Unterstützung. Es funktioniert einwandfrei.
Allerdings ist mir jetzt noch ein Problem aufgefallen:
Das Objektbild der Datei wird immer in quadratischer Form und immer in der gleichen Größe in eine Zelle eingebettet.
Kann man nachträglich auch mit VBA die Objektgröße an die Zellgröße anpassen?
Wenn ja, wäre ich Euch dafür auch noch sehr dankbar.
Vielen Dank für Eure Mühe im voraus.
Gruß Helmut


  

Betrifft: AW: Datei als Objekt einbetten von: Nepumuk
Geschrieben am: 11.02.2012 20:08:27

Hallo,

ändere Isabells Routine so:

Public Sub Test()
    
    Dim udtShellInfo As ShellFileInfoType
    Dim udtIcon As IconType
    Dim udtCLSID As CLSIdType
    Dim objUnknown As IUnknown
    Dim objOLEObject As OLEObject
    
    With Application.FileDialog(msoFileDialogFilePicker)
        .Filters.Clear
        .Title = "Add General Document"
        .AllowMultiSelect = False
        If .Show Then
            
            Call SHGetFileInfo(.SelectedItems(1), 0, udtShellInfo, Len(udtShellInfo), LARGE_ICON)
            udtIcon.cbSize = Len(udtIcon)
            udtIcon.picType = vbPicTypeIcon
            udtIcon.hIcon = udtShellInfo.hIcon
            udtCLSID.id(8) = &HC0
            udtCLSID.id(15) = &H46
            Call OleCreatePictureIndirectA(udtIcon, udtCLSID, 1, objUnknown)
            Call SavePicture(objUnknown, ICON_PATH)
            Set objOLEObject = ActiveSheet.OLEObjects.Add(Filename:=.SelectedItems(1), _
                Link:=False, DisplayAsIcon:=True, IconIndex:=0, _
                IconFileName:=ICON_PATH, IconLabel:="")
            Call Kill(ICON_PATH)
            With objOLEObject.ShapeRange
                .LockAspectRatio = msoFalse
                .Width = ActiveCell.Width
                .Height = ActiveCell.Height
            End With
            Set objUnknown = Nothing
            Set objOLEObject = Nothing
        End If
    End With
End Sub

Gruß
Nepumuk


  

Betrifft: AW: Datei als Objekt einbetten von: Helmut
Geschrieben am: 12.02.2012 11:32:27

Hallo Nepumuk,
vielen Dank für Deine prompte Unterstützung.
Leider funktioniert der Code nicht. Wenn ich das Makro mit F5 starte, wird die 1. Dim Zeile markiert und es kommt folgende Fehlermeldung:
Fehler beim kompilieren; Benutzerdefinierter Typ nicht definiert!

Was meinst Du mit der Antwort: "ändere Isabells Routine so" ?

Nochmals vielen Dank für Deine Mühe im voraus.
Gruß Helmut


  

Betrifft: AW: Datei als Objekt einbetten von: Nepumuk
Geschrieben am: 12.02.2012 13:04:20

Hallo,

Das ist doch nur die Erstellroutine selbst, da gehören natürlich die ganzen Deklarationen dazu. Das wirst du wohl schaffen. Den Link zu ihrem Beitrag hast du ja.

Gruß
Nepumuk


  

Betrifft: AW: Datei als Objekt einbetten von: Tino
Geschrieben am: 12.02.2012 14:48:53

Hallo,
habe Dir mal hier mit dem Code von Isabelle etwas zusammengebastelt.
Evtl. im Code die Tabelle anpassen und die Zeile wo die Objekte eingefügt werden sollen.
Du wirst gefragt ob bereits vorhandene Objekte gelöscht werden sollen.

https://www.herber.de/bbs/user/78875.xls

Gruß Tino


Beiträge aus den Excel-Beispielen zum Thema "Datei als Objekt einbetten"