Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
384to388
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
384to388
384to388
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA - BrowseInfo

VBA - BrowseInfo
23.02.2004 14:29:37
Henrich
Hallo Profis,
hier nun eine neue Aufgabe, die Ich zu bewältigen habe (aber leider nicht bewältigen kann).
Ich suche eine Directory-Vorgabe für die Function 'BrowseInfo'. Die "Browse for Folder dialog box" soll aufgerufen werden und ein bestimmtes Dir gewählt werden. Alles schon und gut, aber ich finde keine Lösung, wie ein Start-Dir voreingestellt werden kann.
Es wird immer im ROOT-Verzeichnis gestartet (pidlRoot = 0&)
Wie kann ich diesen Wert oder einen anderen änderen oder gibt es eine verständliche Erkärung dieser Function?
Danke für die Hilfe
Nico

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - BrowseInfo
23.02.2004 14:46:22
geri
Hallo Henrich
vielleicht hilft Dir dies weiter
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



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

hier ist sowas eingebaut, auch aus Forum
gruss geri
Anzeige
AW: VBA - BrowseInfo
23.02.2004 15:05:13
Henrich
Moin Geri,
die Vorgabe des Dir sollte beim Aufruf der 'Function FunktionGetDirectory' passieren, da man dort, wenn das Dir einen langen Anfahrtsweg hat, jedesmal lange hin klicken muss. Angenehmer ist es, schon tiefer in der Struktur einzusteigen, z.B. C:\Daten\Wichtig\Hier\Kunde\PLZ\20000\Bereich\Immer\Wieauch\Dokument
Suche darum immernoch nach einer Lösung ....
Nico
AW: VBA - BrowseInfo
23.02.2004 15:19:02
feri
Hallo Henrich
meinst du so

Sub DateienAuflisten()
Dim i As Long
Const verz = "C:\'anpassen"
On Error GoTo fehler
ChDir verz
Range("A1").Select
With Application.FileSearch
.NewSearch
.LookIn = verz
.SearchSubFolders = False
.FileType = msoFileTypeExcelWorkbooks
.Execute
For i = 1 To .FoundFiles.Count
ActiveCell.Value = .FoundFiles(i)
ActiveCell.Offset(1, 0).Select
Next i
End With
Exit Sub
fehler:
MsgBox "Es gibt kein Verzeichnis mit dem Namen " & verz
End Sub

gruss geri
Anzeige
AW: VBA - BrowseInfo
24.02.2004 07:15:29
Henrich
Hallo Geri,
diese Routine könnte nach meinem Problem gestartet werden, brauche aber eine, die vorher schon bequem eine Auswahl des Folders zu läßt.
Eine Routine, mit der durch ein Auswahlfenster die Konstante 'verz' gesetzt werden kann.
Dabei will ich sie nicht im VBA-Code per Hand setzten, sondern mit dem Aufruf des Browser-Fensters durch klicken mit der Maus auswählen können und dieses dann als Startverzeichnis (und nicht das Root-Verzeichnis) verwenden.
Suche nach einer Lösung
Nico
AW: VBA - BrowseInfo
24.02.2004 21:05:18
geri
Hallo Henrich
denke erste Lösung ist beste Lösung, da alle bekannten Laufwerke aufgelistet
werden, habe noch eine Variante denke ich habe ich aber gleich verworfen
dort siehst du die Folfer nicht und es gibt Blindflug habe mich dann für die erste var. entschieden.
gruss geri
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige