Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1060to1064
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

Verzeichnis mit Shortcuts in Excel-Tabelle auslese

Verzeichnis mit Shortcuts in Excel-Tabelle auslese
15.03.2009 10:12:23
Gianni
Hallo
Ich möchte eine Verzeichnis auslesen und die Dateinamen und Pfade in eine Excel-Tabelle schreiben. Nun stehen jedoch im Verzeichnis nicht Dateinamen sondern shortcuts. Gibt es eine Möglichkeit, ein Verzeichnis mit Shortcuts auszulesen? Vielen Dank für Eure Hilfe.

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

Betreff
Datum
Anwender
Anzeige
AW: Verzeichnis mit Shortcuts in Excel-Tabelle auslese
15.03.2009 10:18:07
Hajo_Zi
Hallo Gianni,
wie schreibst Du ein shortcuts (Tastenkombination) in ein Verzeichnis?

AW: Verzeichnis mit Shortcuts in Excel-Tabelle auslese
15.03.2009 10:42:27
Gianni
Hallo Hajo
Entschuldige die ungenaue Terminologie. Im Verzeichnis stehen Dateiverknüpfungen, von den ich Name und Pfadangaben der Ausgangsdatei auslesen will. Hast Du eine Idee oder gar eine Lösung?
AW: Verzeichnis mit Shortcuts in Excel-Tabelle auslese
15.03.2009 11:43:40
Josef
Hallo Gianni,
probier mal.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub ReadLNKFile()
  Dim objFiles() As Object
  Dim wshShell As Object, objShortcut As Object
  Dim lngRes As Long, lngIndex As Long, lngRow As Long
  Dim strPath As String
  
  On Error GoTo ErrExit
  GMS
  
  strPath = fncBrowseForFolder
  
  If strPath <> "" Then
    lngRes = FileSearchINFO(objFiles, strPath, "*.lnk", SubFolders:=True)
    lngRow = 2
    With Sheets("Tabelle1") 'Tabellenname anpassen!
      .Range("A2:A" & Rows.Count).ClearContents
      If lngRes > 0 Then
        Set wshShell = CreateObject("WScript.Shell")
        For lngIndex = 0 To lngRes - 1
          Set objShortcut = wshShell.CreateShortcut(objFiles(lngIndex).Path)
          .Hyperlinks.Add _
            Anchor:=.Cells(lngRow, 1), _
            Address:=objShortcut.TargetPath, _
            SubAddress:="", _
            TextToDisplay:=Mid(objShortcut.TargetPath, InStrRev(objShortcut.TargetPath, "\") + 1)
          lngRow = lngRow + 1
        Next
      End If
    End With
  End If
  
  ErrExit:
  With Err
    If .Number <> 0 Then MsgBox "Fehler " & .Number & vbLf & vbLf & _
      .Description & vbLf & vbLf & "In Prozedur (test) in Modul Modul1", _
      vbExclamation, "Fehler in Modul1 / ReadLNKFile"
  End With
  
  GMS True
  Set objShortcut = Nothing
  Set wshShell = Nothing
End Sub

Public Sub GMS(Optional ByVal Modus As Boolean = False)
  
  Static lngCalc As Long
  
  With Application
    .ScreenUpdating = Modus
    .EnableEvents = Modus
    .DisplayAlerts = Modus
    .EnableCancelKey = IIf(Modus, 1, 0)
    If Not Modus Then lngCalc = .Calculation
    If Modus And lngCalc = 0 Then lngCalc = -4105
    .Calculation = IIf(Modus, lngCalc, -4135)
    .Cursor = IIf(Modus, -4143, 2)
    
  End With
  
End Sub



Private Function fncBrowseForFolder(Optional ByVal defaultPath = "") As String
  Dim objFlderItem As Object, objShell As Object, objFlder As Object
  
  Set objShell = CreateObject("Shell.Application")
  Set objFlder = objShell.BrowseForFolder(0&, "Ordner auswählen...", 0&, defaultPath)
  
  If objFlder Is Nothing Then GoTo ErrExit
  
  Set objFlderItem = objFlder.Self
  fncBrowseForFolder = objFlderItem.Path
  
  ErrExit:
  
  Set objShell = Nothing
  Set objFlder = Nothing
  Set objFlderItem = Nothing
End Function

Private Function FileSearchINFO(ByRef Files() As Object, ByVal InitialPath As String, Optional ByVal FileName As String = "*", _
    Optional ByVal SubFolders As Boolean = False) As Long

  
  '# PARAMETERINFO:
  '# Files: Datenfeld zur Ausgabe der Suchergebnisse
  '# InitialPath: String der das zu durchsuchende Verzeichnis angibt
  '# FileName: String der den gesuchten Dateityp oder Dateinamen enthält (Optional, Standard="*.*" findet alle Dateien)
  '# Beispiele: "*.txt" - Findet alle Textdateien
  '# "*name*" - Findet alle Dateien mit "name" im Dateinamen
  '# "*.avi;*.mpg" - Findet .avi und .mpg Dateien (Dateitypen mit ; trennen)
  '# SubFolders: Boolean gibt an, ob Unterordner durchsucht werden sollen (Optional, Standard=False)
  
  
  Dim fobjFSO As Object, ffsoFolder As Object, ffsoSubFolder As Object, ffsoFile As Object
  Dim intC As Integer, varFiles As Variant
  
  Set fobjFSO = CreateObject("Scripting.FileSystemObject")
  
  Set ffsoFolder = fobjFSO.GetFolder(InitialPath)
  
  On Error GoTo ErrExit
  
  If InStr(1, FileName, ";") > 0 Then
    varFiles = Split(FileName, ";")
  Else
    Redim varFiles(0)
    varFiles(0) = FileName
  End If
  For Each ffsoFile In ffsoFolder.Files
    If Not ffsoFile Is Nothing Then
      For intC = 0 To UBound(varFiles)
        If LCase(fobjFSO.GetFileName(ffsoFile)) Like LCase(varFiles(intC)) Then
          If IsArray(Files) Then
            Redim Preserve Files(UBound(Files) + 1)
          Else
            Redim Files(0)
          End If
          Set Files(UBound(Files)) = ffsoFile
          Exit For
        End If
      Next
    End If
  Next
  
  If SubFolders Then
    For Each ffsoSubFolder In ffsoFolder.SubFolders
      FileSearchINFO Files, ffsoSubFolder, FileName, SubFolders
    Next
  End If
  
  If IsArray(Files) Then FileSearchINFO = UBound(Files) + 1
  ErrExit:
  Set fobjFSO = Nothing
  Set ffsoFolder = Nothing
End Function

Gruß Sepp

Anzeige
AW: Verzeichnis mit Shortcuts in Excel-Tabelle auslese
15.03.2009 13:01:35
Gianni
Hallo Sepp
Habe das Verzeichnis noch direkt eingegeben, da dieses immer gleich bleibt. Funktioniert einwandfrei. Vielen herzlichen Dank.
If Datei.IsLink Then
15.03.2009 14:02:29
ransi
HAllo
Du hast zwar jetzt was funktionierendes, aber wenn du nur die Verknüpfungen auslesen willst, schau dir auch mal dies an:
Option Explicit


Public Sub Verknuepfungen_auslesen()
Dim Sh
Dim ordner
Dim Datei
Set Sh = CreateObject("Shell.application")
Set ordner = Sh.NameSpace("C:\Dokumente und Einstellungen\Papa\desktop\")
For Each Datei In ordner.items
    If Datei.IsLink Then
        With Datei.GetLink
            Debug.Print _
                .Path & vbCrLf & _
                .Target.Path & vbCrLf & _
                .Description & vbCrLf
        End With
    End If
Next
End Sub

ransi
Anzeige
AW: If Datei.IsLink Then
15.03.2009 18:41:01
Gianni
Hallo ransi
Das Auslesen in eine Steuerdatei ist Schritt 1; Ich muss die Dateien dann eine nach der anderen öffen und Makros der einzelnen Dateien ablaufen lassen. Mit der Ausgabe mit debug.print ist mir daher nicht geholfen. Trotzdem ganz herzlichen Dank für die Lektion.
AW: If Datei.IsLink Then
15.03.2009 19:30:59
ransi
HAllo
Sepp's Code ist schon ein Starkes Teil, aber musst du nicht auch nach *.url suchen lassen ?
Das sind doch Verknüpfungen.
ransi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige