Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Ordner über Explorer suchen

Begonnen von kater066, März 06, 2011, 15:26:14

⏪ vorheriges - nächstes ⏩

kater066

Hallo,
habe ein kleines Problem.
In einem Formular ist eine Prüfnummer hinterlegt, zu dieser Prüfnummer gibt es irgendwo auf meinem Laufwerk einen Ordner mit Details. Wie kann ich die Prüfnummer aus dem Formular über einen Button  in die Explorer suche einbinden damit mir der Inhalt angezeigt wird? So wie ich es bisher habe findet er den Ordner nur wenn ich ihn direkt mit Bezug einbinde, aber wenn er nicht direkt auf Laufwerk F: liegt findet er nichts.

Danke für eure Hilfe

So sieht das momentan aus.

Private Sub Befehl276_Click()

Dim dat As String
    Dim prog As String
    Dim i As Integer
   
    dat = Forms![Prüfaufträge_neu_zuweisen]![Prüfauftragnummer]
    prog = "*.jpg" & "*.pdf"
    With Application.FileSearch
        .NewSearch
        .LookIn = "f:\"
        .SearchSubFolders = True
        .FileName = prog
        .MatchTextExactly = True
    End With
    'neue suche durchführen
    With Application.FileSearch
        If .Execute() > 0 Then
            MsgBox "Es wurde(n)" & .FoundFiles.Count & "Programm(e) gefunden."
            For i = 1 To .FoundFiles.Count
                'ant = MsgBox(.FoundFiles(i), vbOK)
            Next i
          Else
            'ant1 = MsgBox("Es wurden keine entsprechende Datei gefunden!", vbOK)
        End If
    End With





End Sub

DF6GL

Hallo,

wie sollte er auch, wenn Du das LW fest vorgibst:

.LookIn = "f:\"


Hier solltest Du erst die vorhandenen Laufwerke ermitteln und nacheinander in die Suchläufe einbinden.




Willst Du wirklich die gesamten Laufwerke nach der Datei durchsuchen?


Da würde ich eher zu einer geordneten Dateiablage-(Struktur)  tendieren wollen.


Hondo

Hallo,
du könntest in einer Schleife alle Laufwerke durchsuchen.
Siehe z.b. diesen Thread: http://www.office-loesung.de/ftopic116198_0_0_asc.php

Aber ich sags gleich, Filesearch wird ab Office 2007 nicht mehr zur Verfügung stehen.
Einen Link zu einer Alternative habe ich kürzlich gepostet:
http://www.access-o-mania.de/forum/index.php?topic=10416.msg79068#msg79068

Gruß Andreas

kater066

Hallo,

der Ordner den ich suchen möchte liegt in irgendeinem Unterordner von LW F: deshalb habe ich direkt LW F: angegeben, klappt dennoch nicht. Wie müsste das in Office 07 aussehen?

kater066

Ach ja, suche keine Datei sondern einen Ordner mit der Nummer

database

Hallo,

sieh mal hier nach ...

http://www.office-loesung.de/ftopic104454_0_0_asc.php

ich denke, dass ist ungefähr das was du suchst.

HTH

lumbumba

Hier mal eine etwas andere Lösung, welche das Suchen im Filesystem SQL-likely gestaltet:
Zuerst schubst du dir folgendes Tool von Microsoft auf deine Platte und installierst es.
Es ist zwar ein Commandozeilentool, ist aber auch in Access erreichbar.
Starte Access und im VBA-Editor unter Verweise das "MS Utility 1.0 Type Libary Log Parser" aktivieren.
Ich hänge mal eine DB mit einem einfachen Bsp mit an.
Es ist zwar kein explicites Bsp dabei was auf deine Aufgabenstellung eingeht, aber wenn ich deine Frage richtig verstanden habe willst du alle Dateien, die in einem o. Mehreren Unetrverzeichnissen deine Prüfsumme beinhalten, auflisten.

Der entsprechende String müsste dann ungefähr im code so lauten:

Private Sub Befehl276_Click()
  ...
  ...
  dim Prfsum as string
  Prfsum = IIf(Len(Nz(Forms![Prüfaufträge_neu_zuweisen]![Prüfauftragnummer], "")) > 0, Forms![Prüfaufträge_neu_zuweisen]![Prüfauftragnummer] & "%'", "'")

  ...
  SQL = "SELECT Path " & _
        "FROM 'F:\*'' " & _
        "WHERE NAME <> '.' And NAME <> '..' And EXTRACT_PATH(PATH) LIKE '%" & Prfsum & _
        " AND NOT ATTRIBUTES LIKE '%D%'"

  ...
  ...
End Sub
Wie immer alles ohne Gewähr, zumal ich nur geraten habe da du die Prüfsumme in deinem Code nicht wirklich verwendest.
den Rest der noch dazugehört findest du im Bsp..

[Anhang gelöscht durch Administrator]
---

kater066

Hallo,

das funktioniert alles nicht. In der SQL ist ein Fehler, ich kenne mich mit SQL nicht aus und kann das nicht korrigieren.

Meine Problem in kurzen Worten:
Es gibt Prüfaufträge, jeder hat eine fortlaufende Nummer die im Formular (Forms![Prüfaufträge_neu_zuweisen]![Prüfauftragnummer]) hinterlegt ist. Zu dieser Nummer gibt es einen Ordner auf meinem F: LW in irgendeinem Unterordner. Mit einem Klick aus dem Formular soll über die Prüfauftragnummer im Explorer der identische Ordner gefunden werden und direkt den Inhalt im Explorer anzeigen.

Geht das überhaupt? Wer kann mit das so rüberschieben damit ich es als mittelmäßiger User einbinden kann? Danke euch

database

Hallo,

versuche mal das ....

SQL = "SELECT Path" & _
       " FROM 'F:\*''' & _
       " WHERE NAME <> '.' And NAME <> '..' And EXTRACT_PATH(PATH) LIKE '%" & Prfsum & _
       "' AND NOT ATTRIBUTES LIKE '%D%'"

Obwohl nicht unerwähnt bleiben darf, dass dieses Codestück KEINE SQL darstellt, wie si für Abfragen, die auf Tabellen abgesetzt werden verwendbar wäre!
Zudem funktioniert das ganze Geblüm nur auf dem Rechner, auf dem auch das Tool installiert wurde!


kater066

Funktioniert nicht, Syntaxfehler. Hatte Office 03, jetzt 07, aber bei beiden geht nichts. Wie müsste der komplette Befehl aussehen?

DF6GL

Hallo,

warum verfolgst Du nicht den Link von database aus Antwort #5??


Dort ist alles zu finden, was Dein Problem erschlägt...

Zudem wiederhole ich meinen Tipp, sich besser eine geordnete (und damit ohne Sucherei bekannte) Ordnerstruktur zuzulegen...


kater066

weil das nicht geht, es arbeiten mehrere Leute damit und jeder hat unter seinem Namen die Daten abgelegt also muss ich einen Weg finden wie ich aus dem Formular raus den Ordner suchen kann, die Antwort hilft mir leider nicht weiter

kater066

habe jetzt alles versucht, es kommt mit Option Explicit die Fehlermeldung: Innerhalb einer Prozedur ungültig, egal wie ich es setze.

DF6GL

Hallo,

Du mußt schon Klartext reden (schreiben)..


Poste den (kompletten diesbezüglichen) Code, den Du nun einsetzt, mit Copy&Paste

kater066

wollte die Codes testen, wenn ich aber über den button im Formular aufrufe kommt nur die Fehlermeldung: In einer Prozedur ungültig und er hängt sich an der ersten Zeile auf. Werde bald Wahnsinnig, jeder schreibt, es ist doch ganz einfach, aber bei mir klappt es nicht.


Private Sub Befehl276_Click()


Option Explicit

Public Enum SORT_BY
    Sort_by_None
    Sort_by_Name
    Sort_by_Path
    Sort_by_Size
    Sort_by_Last_Access
    Sort_by_Last_Modyfy
    Sort_by_Date_Create
End Enum

Public Enum SORT_ORDER
    Sort_Order_Ascending
    Sort_Order_Descending
End Enum

Public Type FILEINFO
    strFilename As String
    strPath As String
    lngSize As Long
    dmtLastAccess As Date
    dmtLastModify As Date
    dmtDateCreate As Date
End Type

Public Sub Test()

    Dim objFileSearch As clsFileSearch
    Dim lngIndex As Long
   
    Set objFileSearch = New clsFileSearch
   
    With objFileSearch
        .CaseSenstiv = True
        .Extension = "*.xls"
        .FolderPath = "D:\"
        .SearchLike = "Test*"
        .SubFolders = True
        If .Execute(Sort_by_Size, Sort_Order_Descending) > 0 Then
            For lngIndex = 1 To .FileCount
                With .Files(lngIndex)
                    Debug.Print .strFilename, .lngSize
                End With
            Next
        End If
    End With
   
    Set objFileSearch = Nothing

End Sub