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

Forumthread: Dateinamen aus Explorer per drag & drop mit VBA i

Dateinamen aus Explorer per drag & drop mit VBA i
12.09.2006 08:51:19
Jörn
Hallo,
ich möchte eine Excel-Tabelle anlegen, in der ich Links auf meine aktuell relevanten Dateien auf der Festplatte sammle (Office-Dateien, aber auch PDF, Multimedia,usw.).
Das Sammeln stelle ich mir so vor, dass ich mir Excel und den Windows-Datei-Explorer nebeneinander auf dem Bildschirm anordne und dann einfach per Drag & Drop die entsprechenden Dateien aus dem Datei-Explorer in meine Excel-Tabelle fallen lasse. Dort soll ein VBA-Makro den Dateinamen (+Pfad) abfangen und einfach in die nächste Zeile eintragen.
Gruss,
Jörn
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Dateinamen aus Explorer per drag & drop mit VBA i
12.09.2006 10:13:29
Coach
Hallo Jörn,
anbei eine Lösung mit dem Datei-Öffnen-Explorer, wobei beliebige mehrere Dateien ausgewählt und als Hyperlink eingefügt werden können, jeweils unten an die Spalte mit der aktiven Zelle angefügt.
https://www.herber.de/bbs/user/36606.xls
Gruß Coach
Anzeige
AW: Dateinamen aus Explorer per drag & drop mit VBA i
12.09.2006 10:30:07
Jörn
Danke,
...das ist schon mal ganz nett.
Aber eigentlich suche ich den Kniff, wie ich aus dem normalen Windows-Dateimanager (oder letzlich auch aus einem beliebigen anderen Explorer) heraus die "Drag & Drop"-Übergaben nach Excel abfangen kann. Diese sollen dann nicht geöffnet werden, sondern eben nur in meine Tabelle eingetragen werden.
...letzlich geht´s gerade auch darum diesen dummen MS "Datei-Öffnen"-Dialog zu umgehen...
Anzeige
AW: Dateinamen aus Explorer per drag & drop mit VBA i
12.09.2006 12:21:46
Coach
Hallo Jörn,
ich wüßte dafür kein geeignetes Ereignis.
Gruß Coach
AW: Dateinamen aus Explorer per drag & drop mit VB
12.09.2006 13:40:35
bst
Hallo Jörn,
nimm - falls Du denn eines hast - ein Control von VB6, die könenn OLE Drag & Drop.
Dieses geht z.B. bei mir mit dem Microsoft ListView Control 6.0 in einer Excel-Userform.
Du mußt die Eigenschaft OLEDropMode auf ccOLEDropManual setzen.
HTH, Bernd
--
Option Explicit

Const vbDropEffectNone = 0
Const vbDropEffectCopy = 1
Const vbDropEffectMove = 2

Const vbCFFiles = 15

Private Sub ListView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
    Dim i%
    If Data.GetFormat(vbCFFiles) Then
        For i = 1 To Data.Files.Count
            Debug.Print Data.Files(i)
        Next
    End If
End Sub

Private Sub ListView1_OLEDragOver(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single, State As Integer)
    Effect = vbDropEffectCopy
End Sub


Anzeige
AW: Dateinamen aus Explorer per drag & drop mit VB
12.09.2006 15:59:44
Coach
Hallo Jörn,
gute Idee von Bernd, anbei eine Lösung, wo eine UF quasi als Trichter für die gedropten Files dient. Funktionalität sonst wie gehabt, Links werden an den letzten Eintrag der aktiven Spalte angefügt. Da das Formular vbmodeless ist, kann im Excel beliebig markiert etc. werden.
https://www.herber.de/bbs/user/36614.xls
Gruß Coach
Anzeige
AW: Dateinamen aus Explorer per drag & drop mit VB
12.09.2006 16:39:36
bst
Hi coach,
gefällt mir :-)
cu, Bernd
AW: Dateinamen aus Explorer per drag & drop mit VBA i
12.09.2006 19:23:55
Jörn
Also ich muss sagen: GROSSE KLASSE !!!
...und vielen Dank !
...das funktioniert ja prächtig.
Ziemlich genau so habe ich mir das vorgestellt.
(Muss mir bei Gelegenheit mal anschauen wie´s funktioniert.
Kann man die BOX eigentlich auch weg lassen ?)
...hatte mir eigentlich keine grosse Hoffnung auf eine vernünftige Lösung gemacht.
Man weiss ja wie das meist in anderen Foren ist...aber hier kriegt man ja innerhalb weniger Stunden fertige Software - quasi on demand :-))
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Dateinamen per Drag & Drop in Excel einfügen


Schritt-für-Schritt-Anleitung

  1. Vorbereitung: Stelle sicher, dass Du eine Excel-Arbeitsmappe geöffnet hast, in die Du die Dateinamen einfügen möchtest.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. UserForm erstellen:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineArbeitsmappe)" und wähle "Einfügen" > "UserForm".
    • Füge ein Steuerelement (z.B. Microsoft ListView Control 6.0) auf die UserForm hinzu.
  4. OLE Drag & Drop aktivieren:

    • Setze die Eigenschaft OLEDropMode des ListView Controls auf ccOLEDropManual.
  5. VBA-Code einfügen: Füge den folgenden Code in das Codefenster der UserForm ein, um das Drag & Drop zu ermöglichen:

    Private Sub ListView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
       Dim i%
       If Data.GetFormat(vbCFFiles) Then
           For i = 1 To Data.Files.Count
               ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Data.Files(i)
           Next
       End If
    End Sub
    
    Private Sub ListView1_OLEDragOver(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single, State As Integer)
       Effect = vbDropEffectCopy
    End Sub
  6. Testen: Schließe den VBA-Editor und teste die Drag & Drop-Funktion, indem Du Dateien aus dem Windows-Explorer in das ListView-Control der UserForm ziehst.


Häufige Fehler und Lösungen

  • Drag & Drop funktioniert nicht: Stelle sicher, dass die OLEDropMode-Eigenschaft korrekt gesetzt ist und dass Du ein unterstütztes Steuerelement verwendest.

  • Fehlende Referenzen: Überprüfe, ob die MSComctlLib-Bibliothek in Deinem Projekt verfügbar ist. Du kannst sie unter "Extras" > "Verweise" im VBA-Editor aktivieren.


Alternative Methoden

Wenn die Drag & Drop-Funktionalität nicht Deinen Anforderungen entspricht, kannst Du auch eine UserForm mit einem Button erstellen, der einen Datei-Öffnen-Dialog öffnet. Dort kannst Du mehrere Dateien auswählen und die Namen in die Excel-Tabelle einfügen.

Private Sub CommandButton1_Click()
    Dim fileDialog As FileDialog
    Dim selectedFiles As Variant
    Dim i As Integer

    Set fileDialog = Application.FileDialog(msoFileDialogFilePicker)
    fileDialog.AllowMultiSelect = True

    If fileDialog.Show = -1 Then
        For i = 1 To fileDialog.SelectedItems.Count
            ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = fileDialog.SelectedItems(i)
        Next i
    End If
End Sub

Praktische Beispiele

  • PDF in Excel einfügen: Du kannst auch PDF-Dateien per Drag & Drop in die Excel-Tabelle einfügen. Die Dateinamen werden automatisch in die nächste Zeile eingetragen.

  • Ordnerstruktur auflisten: Erstelle eine UserForm, die es ermöglicht, Dateien aus verschiedenen Ordnern zu ziehen und die Pfade in Excel aufzulisten.


Tipps für Profis

  • Anpassung der UserForm: Du kannst die UserForm anpassen, um eine bessere Benutzeroberfläche zu bieten, z.B. durch das Hinzufügen von Schaltflächen für die Navigation oder das Löschen von Einträgen.

  • Fehlerbehandlung einfügen: Implementiere Fehlerbehandlungsroutinen, um unerwartete Situationen beim Drag & Drop zu managen.


FAQ: Häufige Fragen

1. Kann ich mehrere Dateien gleichzeitig per Drag & Drop einfügen?
Ja, der oben beschriebene Code unterstützt das Einfügen mehrerer Dateien gleichzeitig.

2. Was kann ich tun, wenn die Drag & Drop-Funktion nicht richtig funktioniert?
Überprüfe die Einstellungen für OLEDragMode und stelle sicher, dass Du die richtigen Steuerelemente in Deiner UserForm verwendest.

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