Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
456to460
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
456to460
456to460
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Dateiname auslesen - Hyperlinks zuweisen
19.07.2004 19:47:05
Dieter.K
Hallo Forum,
ich hoffe Ihr könnt mir wieder einmal helfen.
Folgendes Problem:
Ich möchte aus einem bestimmten Verzeichnis die vorhandenen Dateinamen auslesen, diese Dateienamen als Hyperlink anzeigen und somit bei Klick öffnen.
Ich möchte jedoch nicht die gesamte Verzeichnisstruktur anzeigen lassen, sondern nur den Dateinamen. Die Datei in dem dieses vorgenommen werden soll, steht im selben Verzeichnis wie die auszulesenden.
Das auslesen bekomme ich hin. Jedoch als Hyperlink immer nur mit der gesamten Struktur. Da diese Dateien allerdings in einem weit verzweigten Unterordner sitzen, werden die Hyperlinks ziemlich lang und somit unübersichtlich.
Zum auslesen benutze ich folgenden Code von der Herber-CD.
Option Explicit

Sub ReadFiles()
Dim iCounter As Integer
With Application.FileSearch
.LookIn = Range("B1").Value
.Filename = "*.xls"
.Execute
For iCounter = 1 To .FoundFiles.Count
Cells(iCounter + 1, 1).Value = Dir(.FoundFiles(iCounter))
Next iCounter
End With
End Sub

Wie müsste ich den Code erweitern um gleichzeitig die ausgelesenen Dateinamen (und nur diese, ohne Verzeichnis!) als Hyperlink dargestellt zu bekommen?
Für Eure Hilfe besten Dank im voraus.
Gruß
Dieter.K

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateiname auslesen - Hyperlinks zuweisen
geri
Hallo Dieter
hier ein Beispiel
Option Explicit
Public Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Declare

Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Declare 

Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long

Function FunktionGetDirectory(Optional strAufforderung) As String
Dim bInfo As BROWSEINFO
Dim Path As String
Dim r As Long, x As Long, pos As Integer
bInfo.pidlRoot = 0&
If IsMissing(strAufforderung) Then
bInfo.lpszTitle = "Wählen Sie bitte einen Ordner aus."
Else
bInfo.lpszTitle = strAufforderung
End If
bInfo.ulFlags = &H1
x = SHBrowseForFolder(bInfo)
Path = Space$(512)
r = SHGetPathFromIDList(ByVal x, ByVal Path)
If r Then
pos = InStr(Path, Chr$(0))
FunktionGetDirectory = Left(Path, pos - 1)
Else
FunktionGetDirectory = ""
End If
End Function

'G.Gall 3.09.03

Sub Dateien_Search_Listing()
Dim fsObjekt As Object, index As Integer
Dim C               As Range
Dim datErweiterung  As String
Dim Meldung         As String
Dim letzteZeile     As String
Dim DataOption1     As String
Dim intPos          As Integer
Dim strLink         As String
Dim sPath           As Variant
Dim Merker          As String
Dim Pruef           As Integer
Range("b5").Select
Selection.Interior.ColorIndex = 3
Application.ScreenUpdating = False
sPath = FunktionGetDirectory
'If FunktionGetDirectory = "" Then Exit Sub
Range("B11").Value = sPath
Set fsObjekt = Application.FileSearch
With fsObjekt
ChDir sPath
.NewSearch
.LookIn = sPath              '  "C:\Daten\"  'anpassen Suchort
.SearchSubFolders = True
Range("A1:A2000").ClearContents
Meldung = "Bitte Dateiendung festlegen. Erlaubte *SUFFIX*." & vbCrLf & vbCrLf & vbTab & _
"*.xls             --->  Excel-Daten" & vbCrLf & vbTab & _
"*.doc             --->  Word-Daten" & vbCrLf & vbTab & _
"*.pdf;mp3;txt   --->  ANDERE "
Do
datErweiterung = Application.InputBox(Meldung, "mögliche DATEIENDUNGEN", "*.")
If datErweiterung = "" Or datErweiterung = "*." Then Exit Sub
Loop Until (datErweiterung = "*.xls" Or datErweiterung = "*.doc" Or datErweiterung = "*.pdf" Or datErweiterung = "*.mp3" Or datErweiterung = "*.txt")
.Filename = datErweiterung
If .Execute() > 0 Then
For index = 1 To .FoundFiles.Count
Merker = 0
For Pruef = 1 To index
If Cells(Pruef, 1) = .FoundFiles(index) Then
Merker = 1
Exit For
End If
Next
If Merker = 0 Then Cells(index, 1) = .FoundFiles(index)
Next index
End If
End With
letzteZeile = Range("A2000").End(xlUp).Row   ' Bereich für Hypererstellung
Range("A1:A" & letzteZeile).Select           'Abgrenzung benutzte Zellen
For Each C In Selection
intPos = InStrRev(C.Value, "\")
strLink = Right(C.Value, Len(C) - intPos)
C.Hyperlinks.Add C, C.Value, TextToDisplay:=strLink
Next C
'Call sort
Application.ScreenUpdating = True
If Range("C8").Value <= 0 Then
MsgBox "NO FILES im Ordner"
End If
'ActiveWorkbook.Save
Range("b5").Select
Selection.Interior.ColorIndex = 4
Range("c8").Select
End Sub

alles in ein Modul, ich zähle auch noch Anzahl Datein im Original
gruss geri
Anzeige
AW: Dateiname auslesen - Hyperlinks zuweisen
geri
was vergessen

Sub del_hyper()
Cells.Hyperlinks.Delete
End Sub

Delete Hyperlink falls nötig
gruss geri
AW: Dateiname auslesen - Hyperlinks zuweisen
20.07.2004 12:06:33
Dieter.K
Hallo Geri,
vielen Dank für Deine Hilfe. Ich glaube, das ist eine Nummer zu groß für mich bei meinen VBA-Kenntnissen.
Geht das nicht auch einfacher (für mich verständlich?)?
Eventuell hat ja noch jemand eine einfachere Lösung.
Danke
Gruß
Dieter.K
AW: Dateiname auslesen - Hyperlinks zuweisen
Martin
Hallo Dieter,
versuch's so:

Sub Hyperlinks_einfügen()
Worksheets(1).Columns(1).Clear
With Application.FileSearch
.NewSearch
.LookIn = "C:\Dokumente und Einstellungen\Martin\Eigene Dateien\Eigene Tabellen\"
.Filename = "*.xls"
.SearchSubFolders = False
.Execute
icount = .FoundFiles.Count
For i = 1 To icount
Worksheets(1).Hyperlinks.Add anchor:=Worksheets(1).Cells(i, 1), Address:=.FoundFiles(i)
For j = Len(Cells(i, 1)) To 1 Step -1
If Cells(i, 1).Characters(j, 1).Text = "\" Then
Cells(i, 1) = Right(Cells(i, 1), Len(Cells(i, 1)) - j)
Exit For
End If
Next j
Next i
End With
End Sub

Die Hyperlinks (hier nur für XLS-DAteien) werden in Spalte A des ersten Tabellenblattes eingetragen. Die Zeilen
.LookIn = "C:\Dokumente und Einstellungen\Martin\Eigene Dateien\Eigene Tabellen\"
.Filename = "*.xls"
mußt Du noch an Deine Gegebenheiten anpassen.
Gruß
Martin Beck
Anzeige
AW: Dateiname auslesen - Hyperlinks zuweisen
20.07.2004 14:55:09
Dieter.K
Hallo Martin!
Danke. Das war genau das was ich meinte! Super!
Nur noch eine Frage, hat mit Deinem Code nichts zu tun sondern passiert jedesmal wenn ich die Dateiendung *.xls auslesen lasse:
Code bleibt dann immer in der Zeile
.FileName = "*.xls"
mit der Fehlermeldung: Laufzeitfehler '5' unzulässiger Prozeduraufruf oder ungültiges Argument hängen. Wenn ich diese Zeile rausnehme, läuft der Code einwandfrei. Woran kann das liegen?
Nochmals Danke.
Gruß
Dieter.K
AW: Dateiname auslesen - Hyperlinks zuweisen
Martin
Hallo Dieter,
keine Ahnung, bei mir funktioniert es. Stehen denn Exceldateien in dem Ordner? Poste mal den kompletten, von Dir verwendeten Code.
Gruß
Martin Beck
Anzeige
AW: Dateiname auslesen - Hyperlinks zuweisen
21.07.2004 03:41:21
Dieter.K
Hallo Martin,
danke dass Du Dich der Sache weiter annehmen willst. Hier der komplette Code.
In dem Ordner stehen nur XLS-Dateien. Wenn ich die Zeile .FileName="*.xls" rausnehme, läuft der Code einwandfrei. Ist nicht weiter tragisch, da sich in diesem Ordner ja nur XLS-Dateien befinden. Trotzdem etwas seltsam. Oder?

Sub Hyperlinks_Angebot_einfügen()
Worksheets(1).Columns(1).Clear
With Application.FileSearch
.NewSearch
.LookIn = "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Excel\GTM\Angebote\Angebot-Info"
.FileName = "*.xls"
.SearchSubFolders = False
.Execute
iCount = .FoundFiles.Count
For i = 1 To iCount
Worksheets(1).Hyperlinks.Add anchor:=Worksheets(1).Cells(i, 1), Address:=.FoundFiles(i)
For j = Len(Cells(i, 1)) To 1 Step -1
If Cells(i, 1).Characters(j, 1).Text = "\" Then
Cells(i, 1) = Right(Cells(i, 1), Len(Cells(i, 1)) - j)
Exit For
End If
Next j
Next i
End With
End Sub

Gruß
Dieter.K
Anzeige
AW: Dateiname auslesen - Hyperlinks zuweisen
Martin
Hallo Dieter,
Dein Code läuft bei mir (XP) einwandfrei, ich kann den Fehler nicht nachvollziehen.
Gruß
Martin Beck
AW: Dateiname auslesen - Hyperlinks zuweisen
21.07.2004 20:18:24
Dieter.K
Hallo Martin,
habe zwischenzeitlich mal meine andere Platte mit XP laufen lassen. Hier funktioniert es auch bei mir einwandfrei. Ebenso unter 2000. Muß also wohl an 8.0/'97 liegen. Aber kein Problem, da sich in dem Ordner ja nur xls-Dateien befinden.
Danke nochmals für Deine Hilfe.
Gruß
Dieter.K

297 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige