Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1248to1252
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datei als Objekt einbetten

Datei als Objekt einbetten
Helmut
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

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Datei als Objekt einbetten
11.02.2012 15:54:16
fcs
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

Anzeige
AW: Datei als Objekt einbetten
11.02.2012 19:58:07
Helmut
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
Anzeige
AW: Datei als Objekt einbetten
11.02.2012 20:08:27
Nepumuk
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
Anzeige
AW: Datei als Objekt einbetten
12.02.2012 11:32:27
Helmut
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
AW: Datei als Objekt einbetten
12.02.2012 13:04:20
Nepumuk
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
Anzeige
AW: Datei als Objekt einbetten
12.02.2012 14:48:53
Tino
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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige