Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Objekt einbetten mit VBA

Objekt einbetten mit VBA
12.02.2019 16:02:55
Norbert
Hallo Spezialisten
ich soll etwa 60 pdf Files als Objekt in eine Tabelle als Symbol einbetten - das ja immer nur 1 file zulässt.
Geht das per VBA auch, dass ich über die Auswahlmöglichkeit des Verzeichnisses auf einmal alle pdf auswählen und einbetten kann?
Und dass sich die Symbole dann schön in einer etwa ab der 10. Zeile an) jeweils 8 Symbole neben- und 8 untereinander einreihen?
Wäre superr wenn das ginge.....
Gruss Norbert
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Objekt einbetten mit VBA
12.02.2019 19:23:10
Nepumuk
Hallo Norbert,
teste mal:
Option Explicit

Public Sub InsertObjects()
    Dim objFileDialog As FileDialog
    Dim objOLEObject As OLEObject
    Dim strFolder As String, strFilename As String
    Dim astrFiles() As String
    Dim ialngFileCount As Long, ialngIndex As Long
    Dim lngRow As Long, lngColumn As Long
    lngRow = 10
    lngColumn = 1
    Set objFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
    With objFileDialog
        .Title = "Ordner auswählen"
        If .Show Then
            strFolder = .SelectedItems(1) & "\"
            strFilename = Dir$(strFolder & "*.pdf")
            Do Until strFilename = vbNullString
                Redim Preserve astrFiles(ialngFileCount)
                astrFiles(ialngFileCount) = strFilename
                ialngFileCount = ialngFileCount + 1
                strFilename = Dir$
            Loop
            For ialngIndex = LBound(astrFiles) To UBound(astrFiles)
                If lngColumn Mod 9 = 0 Then
                    lngRow = lngRow + 5
                    lngColumn = 1
                End If
                Set objOLEObject = ActiveSheet.OLEObjects.Add(Filename:=strFolder & _
                    astrFiles(ialngIndex), Link:=False, DisplayAsIcon:=True, IconFileName:= _
                    "C:\WINDOWS\Installer\{AC76BA86-7AD7-1031-7B44-AC0F074E4100}\PDFFile_8.ico", _
                    IconIndex:=0, IconLabel:=astrFiles(ialngIndex))
                With objOLEObject
                    .Left = Columns(lngColumn).Left
                    .Top = Rows(lngRow).Top
                End With
                lngColumn = lngColumn + 1
            Next
        End If
    End With
    Set objFileDialog = Nothing
End Sub

Es kann sein, dass der Icon-Pfad bei dir abweicht. Den richtigen bekommst du so heraus. Bette ein PDF manuell ein und lass dabei den Makrorekorder laufen.
Gruß
Nepumuk
Anzeige
AW: Objekt einbetten mit VBA
13.02.2019 08:02:42
Norbert
Hallo Nepumuk
Einfach genial - funktioniert super.
Nur wenn es nichts ausmacht, eine Bitte hätte ich noch.
Könnte ich nach der Auswahl des verzeichnisordners die pdf^s auch einzeln auswählen? In dieser Ausführung sehe ich nichts im Ordner.
Nur wenn es keine grossen Umstände macht...
Besten Dank nochmals
Gruss Norbert
Anzeige
AW: Objekt einbetten mit VBA
13.02.2019 09:28:56
Nepumuk
Hallo Norbert,
teste mal:
Option Explicit
Public Sub InsertObjects()
Dim objFileDialog As FileDialog
Dim objOLEObject As OLEObject
Dim strFolder As String, strFilename As String
Dim astrFiles() As String
Dim vntItem As Variant
Dim lngRow As Long, lngColumn As Long
lngRow = 10
lngColumn = 1
Set objFileDialog = Application.FileDialog(msoFileDialogFilePicker)
With objFileDialog
.AllowMultiSelect = True
With .Filters
If .Count > 1 Then Call .Delete
Call .Add(Description:="PDF-Dateien", Extensions:="*.pdf", Position:=1)
End With
.InitialFileName = "\\BKRFShl\Home\KafflM\Documents\Excel\Fragebogen\" 'Anpassen
.InitialView = msoFileDialogViewDetails
.Title = "PDF-Dateien auswählen"
If .Show Then
For Each vntItem In .SelectedItems
If lngColumn Mod 9 = 0 Then
lngRow = lngRow + 5
lngColumn = 1
End If
Set objOLEObject = ActiveSheet.OLEObjects.Add(Filename:=CStr(vntItem), _
Link:=False, DisplayAsIcon:=True, IconFileName:= _
"C:\WINDOWS\Installer\{AC76BA86-7AD7-1031-7B44-AC0F074E4100}\PDFFile_8.ico", _
_
IconIndex:=0, IconLabel:=Mid$(CStr(vntItem), InStrRev(CStr(vntItem), "\") +  _
1))
With objOLEObject
.Left = Columns(lngColumn).Left
.Top = Rows(lngRow).Top
End With
lngColumn = lngColumn + 1
Next
End If
End With
Set objFileDialog = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: Objekt einbetten mit VBA
13.02.2019 09:43:40
Norbert
Hallo Nepumuk
super - bin wunschlos glücklich
Herzlichen Dank
Gruss Norbert
;
Anzeige
Anzeige

Infobox / Tutorial

Objekt einbetten in Excel mit VBA


Schritt-für-Schritt-Anleitung

Um mehrere PDF-Dateien als Objekte in Excel einzubetten, kannst Du den folgenden VBA-Code verwenden. Dieser ermöglicht es Dir, ein Verzeichnis auszuwählen und dann mehrere PDF-Dateien auszuwählen, die anschließend in der Tabelle als Symbole eingefügt werden:

Option Explicit
Public Sub InsertObjects()
    Dim objFileDialog As FileDialog
    Dim objOLEObject As OLEObject
    Dim strFolder As String, strFilename As String
    Dim astrFiles() As String
    Dim vntItem As Variant
    Dim lngRow As Long, lngColumn As Long

    lngRow = 10
    lngColumn = 1
    Set objFileDialog = Application.FileDialog(msoFileDialogFilePicker)

    With objFileDialog
        .AllowMultiSelect = True
        With .Filters
            If .Count > 1 Then Call .Delete
            Call .Add(Description:="PDF-Dateien", Extensions:="*.pdf", Position:=1)
        End With
        .Title = "PDF-Dateien auswählen"
        If .Show Then
            For Each vntItem In .SelectedItems
                If lngColumn Mod 9 = 0 Then
                    lngRow = lngRow + 5
                    lngColumn = 1
                End If
                Set objOLEObject = ActiveSheet.OLEObjects.Add(Filename:=CStr(vntItem), _
                Link:=False, DisplayAsIcon:=True, IconFileName:= _
                "C:\WINDOWS\Installer\{AC76BA86-7AD7-1031-7B44-AC0F074E4100}\PDFFile_8.ico", _
                IconIndex:=0, IconLabel:=Mid$(CStr(vntItem), InStrRev(CStr(vntItem), "\") + 1))
                With objOLEObject
                    .Left = Columns(lngColumn).Left
                    .Top = Rows(lngRow).Top
                End With
                lngColumn = lngColumn + 1
            Next
        End If
    End With
    Set objFileDialog = Nothing
End Sub

Dieser Code öffnet einen Datei-Dialog, in dem Du mehrere PDF-Dateien auswählen kannst. Die ausgewählten Dateien werden dann in die Excel-Tabelle eingefügt. Achte darauf, dass der Pfad zur Icon-Datei möglicherweise angepasst werden muss.


Häufige Fehler und Lösungen

  1. Fehler: Keine Dateien werden angezeigt

    • Stelle sicher, dass Du die Filter im Dateidialog korrekt gesetzt hast. Der Code verwendet .Filters.Add, um nur PDF-Dateien anzuzeigen.
  2. Fehler: Symbole werden nicht richtig positioniert

    • Überprüfe die Werte von lngRow und lngColumn. Diese steuern die Positionierung der Symbole in der Excel-Tabelle. Möglicherweise musst Du die Logik anpassen, um die gewünschte Anordnung zu erreichen.

Alternative Methoden

Falls Du keine VBA-Makros verwenden möchtest, kannst Du PDF-Dateien auch manuell einbetten:

  1. Gehe zu Einfügen > Objekt.
  2. Wähle Aus Datei erstellen und suche die gewünschte PDF-Datei.
  3. Aktiviere die Option Als Symbol anzeigen, um das PDF als Symbol darzustellen.

Diese Methode ist jedoch zeitaufwändiger, insbesondere wenn Du viele Dateien einbetten möchtest.


Praktische Beispiele

Wenn Du beispielsweise 60 PDF-Dateien aus einem bestimmten Verzeichnis einbetten möchtest, kannst Du den oben genannten VBA-Code einfach anpassen, um zuerst alle PDFs im Verzeichnis zu erfassen und dann in die Excel-Tabelle einzufügen.

Ein praktisches Beispiel für den Code wäre:

strFolder = "C:\DeinVerzeichnis\" ' Passe diesen Pfad an
strFilename = Dir(strFolder & "*.pdf")

Hiermit kannst Du alle PDF-Dateien im angegebenen Verzeichnis automatisch einfügen.


Tipps für Profis

  • Verwende Module: Organisiere Deinen VBA-Code in Modulen, um die Wartbarkeit zu erhöhen.
  • Fehlermeldungen: Füge On Error Resume Next ein, um potenzielle Fehler abzufangen, wenn eine Datei nicht gefunden wird.
  • Dokumentation: Kommentiere Deinen Code ausführlich, damit Du und andere ihn später besser verstehen können.

FAQ: Häufige Fragen

1. Wie kann ich den Icon-Pfad für die PDF-Symbole anpassen? Um den Icon-Pfad anzupassen, kannst Du den Makrorekorder in Excel verwenden. Bette ein PDF manuell ein und notiere den Pfad der verwendeten Icon-Datei.

2. Funktioniert dieser Code in allen Excel-Versionen? Der Code wurde für Excel 2010 und neuere Versionen verfasst. Ältere Versionen unterstützen möglicherweise nicht alle Funktionen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige