Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1112to1116
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

Dateien finden

Dateien finden
Meike
Hallo liebes Forum,
das ist mein erster Beitrag, daher bitte Nachsicht, wenn ich etwas falsch mache.
Ich bin auf der Suche nach einem Makro, was folgendes können sollte. Ich möchte gerne auf der ersten Seite der Datei - nennen wir den Reiter Tabelle 1 - den Ordner angeben und dann sucht das Makro sämtliche Anhänge (z.B. Excel-Dateien, Word-Dateien usw). und listet diese auf, so dass ich dann nur noch einen Klick auf die Datei machen muss, um sie zu öffnen.
Hintergrund ist, dass wir auf der Firma so viele Mails bekommen, die ich regelmässig in bestimmte Ordner packe, damit sie keinen Speicher in Outlook benötigen, denn der ist leider bei uns begrenzt. Dumm ist nur, wenn man dann bestimmte Dateien doch wieder benötigt. Ich möchte die Dateien aber auch nicht aus der Mail kopieren, weil sonst finde ich die auch nicht.
Ich hatte mir folgendes gedacht:
In Zeile 1 gebe ich den vollständigen Ordnerpfad an. Und beispielsweise ab Zeile 5 werden die Anhänge dann aufgelistet, in Spalte A der Name der Mail und in Spalte B dann die dazugehörige Datei (ggf. in C usw auch noch je nach dem wieviele Anhänge dran sind). Oder man macht eine neue Zeile mit dem nächsten Anhang.
Wie geschrieben, es sollen aber nur Dateien (Excel, Word, PDF, Powerpoint) aus dem Ordner aufgelistet werden.
Meine freche Frage ist, ob jemand sowas schon gemacht hat bzw. mir sowas machen kann? Ich habe selbst übnerhaupt keine Ahnung, wie Makros oder VBA ticken. Ich habe das Forum durch einen Freund gefunden.
Vielen lieben Dank im Voraus!
LG Meike
AW: Dateien finden
04.11.2009 21:22:33
Roland
Hallo Meike,
die einfachste und übersichtlichste Lösung (auch wir haben nur begrenzten Speicherplatz für Outlook) wäre eine zusätzliche Outlookdatendatei. Öffne Outlook, gehe auf Datei, wähle Datendateiverwaltung . . . , klicke auf Hinzufügen und suche dir ein nettes Plätzchen für die neue Outlookdatendatei aus. In diese verschiebst du künftig alle deine speicherfressenden Emails.
Mit einer Makrolösung wird das bei deinem Fall nichts, weil sich die Dateien noch alle innerhalb der Emails befinden und man per Makro nicht in diese Container hinein sehen kann.
Gruß
Roland Hochhäuser
Anzeige
AW: Dateien finden
05.11.2009 07:38:41
firmus
Hallo Meike,
prinzipiell geht das Auslesen aus Outlook - auch die Anhänge können ermitteln und extrahiert werden.
ABER nicht mit VBA=no, und problemlose Standard-SW soll es ja nicht sein ($$).
.
Deshalb Stichwort "PST" (= private Store) in der OUTLOOK-Hilfe lesen, ich denke das hilft Dir gut weiter.
UND
OUTLOOK-Suche verwenden, wie:
Press "STRG+SHIFT+F" dann poppt ein "advanced Find"-Window auf.
Dort gibt es vielfältige Suchmöglichkeiten. Zu beachten sind folgende Punkte:
1) nach Dateinamen der Anhänge kann nicht gesucht werden.
2) Es können mehrere Suchbegriffe sein. z.B. "maier OR huber" oder auch "josef AND huber"
3) (outlook 2007) Unterverzeichnisse werden nur durchsucht wenn
a) bei der Suche zuerst der "BROWSE" button (rechts oben) aufgerufen wird und
b) dort am unteren Rand "Search Subfolder" angeklickt wird (Bei jedem Suchvorgang!!)
Hoffe das hilft Dir ein Stückchen weiter,
Gruß
Firmus
Anzeige
AW: Dateien finden
06.11.2009 16:59:18
Meike
Hallo zusammen,
leider kann ich in Outlook nichts machen. Da wird uns auf der Arbeit der Riegel vorgeschoben.
Ich möchte das Problem aber noch einmal anders beschreiben, denn mit Outlook hat es nichts zu tun.
Mein Wunsch ist es, dass ein bestimmter Ordner (den ich z.B. in A1 mit dem kompletten PFad eingebe) komplett ausgelesen wird. Die Dateien dieses Ordners sollen ab Zeile 5 angezeigt werden. Da in diesem Ordner Mails enthalten sind (die verschiebe ich von Outlook in diesen Ordner) können auch Anhänge drin sein. Und genau diese Anhänge interessieren mich.
Gibt es keine VBA-Lösung, die die Dateien (= das meiste sind Mails) des Ordners und die Anhänge dieser Mails auflisten kann?
Ich hoffe, mir kann einer helfen!
Liebe Grüße
Meike
Anzeige
AW: Dateien finden
07.11.2009 21:35:41
Firmus
Hi Meike,
wenn ich es richtig verstehe, dann speicherst Du die mails aus outlook als "normale" dateien ab.
Damit sind sie im Dateiverzeichnis genauso zu sehen wie z.b. xls-Dateien oder word-dateien.?
Allerdings sind mögliche Anhänge in mails damit nicht sichtbar.
Falls ja, dann haben deine mails die Endung ".msg"?
Falls ja, dann wird zum Öffnen und ansehen/bearbeiten eines solchen mails immer outlook geöffnet.
(ich habe es noch nicht in anderer Form gesehen.)
Mails (.msg-files samt Anhängen) aus outlook auszulesen, das kann gut über VBA gemacht werden.
Ich habe allerdings keine Erfahrung wenn jede einzelne email ausserhalb des outlooks (ausserhalb PST-file) als eigene Datei abgespeichert wird - sorry.
Vielleicht kann Dir hier noch jemand anderer weiterhelfen.
Gruß
Firmus
Anzeige
AW: Dateien finden
07.11.2009 21:36:38
Firmus
frage soll offen bleiben.
hier eine einfache Variante.
08.11.2009 12:44:14
Tino
Hallo,
In Tabelle1 A1 ist eine Überschrift in A2 steht der Pfad und ab A3 werden
Hyperlinks (Formel) zu den Dateien im Ordner erstellt.
Sub Schaltfläche1_KlickenSieAuf()
Dim strPath$, strFile$
Dim MeArLink() As String, i As Integer
Dim LMaxRow As Long
With Sheets("Tabelle1")
'Dein Pfad
strPath = .Range("A2")
'Bereich leer machen für neue Daten
LMaxRow = .Cells(.Rows.Count, 1).End(xlUp).Row
If LMaxRow > 2 Then .Range(.Range("A3"), .Cells(LMaxRow, 1)).Clear
'Pfad mit \ am ende
strPath = IIf(Right$(strPath, 1) = "\", strPath, strPath & "\")
'Daten aus Ordner sammeln
strFile = Dir$(strPath & "*.*")
Do While strFile  ""
ReDim Preserve MeArLink(i)
MeArLink(i) = "=HYPERLINK(""" & strPath & strFile & """;""" & strFile & """)"
i = i + 1
strFile = Dir$()
Loop
If i > 0 Then 'Dateien gefunden i ist > 0
'Hyperlink erstellen (Formel)
.Range("A3").Resize(i).FormulaLocal = Application.Transpose(MeArLink)
End If
.Columns(1).AutoFit
End With
End Sub
Gruß Tino
Anzeige
AW: hier eine einfache Variante.
08.11.2009 12:54:32
Meike
Hallo lieber Tino,
hatte schon gar nicht mehr mit einer Lösung gerechnet. Habe Deine Makro bereits ausprobiert und es kommt an meinen "Wunsch" schon sehr nahe ran. Auf alle Fälle ist es zehnmal besser, als in bestimmten Ordnern sich doof und dämlich zu suchen.
Gibt es die Möglichkeit, die Anhänge auch aufzulisten oder diese Dateien zumindest z.B. mit einem x in Spalte B zu kennzeichnen?
Viele liebe Grüße
Meike
PS: Habe es jetzt offen markiert, damit Du es siehst. Oder bekommst Du eine automatische Benachrichtigung?
vielleicht so
08.11.2009 13:35:23
Tino
Hallo,
meinst Du so?
Sub Schaltfläche1_KlickenSieAuf()
Dim strPath$, strFile$
Dim MeArLink() As String, i As Integer
Dim LMaxRow As Long
'Deine Dateien, entsprechend erweitern
Const strFileEx As String = ";.xls;.doc;.pdf;.ppt;.pps;"
With Sheets("Tabelle1")
'Dein Pfad
strPath = .Range("A2")
'Bereich leer machen für neue Daten
LMaxRow = .Cells(.Rows.Count, 1).End(xlUp).Row
If LMaxRow > 2 Then .Range(.Range("A3"), .Cells(LMaxRow, 2)).Clear
'Pfad mit \ am ende
strPath = IIf(Right$(strPath, 1) = "\", strPath, strPath & "\")
'Daten aus Ordner sammeln
strFile = Dir$(strPath & "*.*")
Do While strFile  ""
ReDim Preserve MeArLink(1, i)
MeArLink(0, i) = "=HYPERLINK(""" & strPath & strFile & """;""" & strFile & """)"
If Len(strFile) > 3 Then _
MeArLink(1, i) = IIf(InStr(strFileEx, Right$(strFile, 4)) > 0, "X", "")
i = i + 1
strFile = Dir$()
Loop
If i > 0 Then 'Dateien gefunden i ist > 0
'Hyperlink erstellen (Formel)
With .Range("A3").Resize(i, 2)
.FormulaLocal = Application.Transpose(MeArLink)
.Sort Key1:=.Cells(1, 2), Order1:=xlAscending, _
Key2:=.Cells(1, 1), Order2:=xlAscending, Header:=xlNo
End With
End If
.Columns("A:B").AutoFit
End With
End Sub
Gruß Tino
Anzeige
AW: vielleicht so
08.11.2009 14:12:47
Meike
Hallo Tino,
in Excel kann ich keine Änderung erkennen. Es werden "lediglich" die Dateien aus dem ordner mit Hyperlinks aufgelistet. ?
Liebe Grüße
Meike
AW: vielleicht so
08.11.2009 14:15:00
Meike
Ach so, noch eine Frage. Kann man die Pfadsuche auch mit einer Möglichkeit versehen, so wie Ordner öffnen (also eine einfachere Pfadsuche) ? Das eintippen ist bei manchen Ordner schon ziemlich kompliziert, weil es so viele Unterverzeichnisse gibt.
AW: vielleicht so
08.11.2009 14:15:04
Meike
Ach so, noch eine Frage. Kann man die Pfadsuche auch mit einer Möglichkeit versehen, so wie Ordner öffnen (also eine einfachere Pfadsuche) ? Das eintippen ist bei manchen Ordner schon ziemlich kompliziert, weil es so viele Unterverzeichnisse gibt.
Anzeige
AW: vielleicht so
08.11.2009 14:15:07
Meike
Ach so, noch eine Frage. Kann man die Pfadsuche auch mit einer Möglichkeit versehen, so wie Ordner öffnen (also eine einfachere Pfadsuche) ? Das eintippen ist bei manchen Ordner schon ziemlich kompliziert, weil es so viele Unterverzeichnisse gibt.
mit Ordner Auswahl
08.11.2009 14:28:49
Tino
Hallo,
kommt als Code in Modul1
Option Explicit 
 
Sub Schaltfläche1_KlickenSieAuf() 
Dim strPath$, strFile$ 
Dim MeArLink() As String, i As Integer 
Dim LMaxRow As Long 
 
strPath = fncGetFolder 'Ordnerauswahl 
 
If strPath = "" Then Exit Sub 
 
'Deine Dateien, entsprechend erweitern 
Const strFileEx As String = ";.xls;.doc;.pdf;.ppt;.pps;" 
 
With Sheets("Tabelle1") 
    'Bereich leer machen für neue Daten 
    LMaxRow = .Cells(.Rows.Count, 1).End(xlUp).Row 
    If LMaxRow > 2 Then .Range(.Range("A3"), .Cells(LMaxRow, 2)).Clear 
     
    'Pfad mit \ am ende 
    strPath = IIf(Right$(strPath, 1) = "\", strPath, strPath & "\") 
     
    'Daten aus Ordner sammeln 
    strFile = Dir$(strPath & "*.*") 
    Do While strFile <> "" 
        Redim Preserve MeArLink(1, i) 
         
        MeArLink(0, i) = "=HYPERLINK(""" & strPath & strFile & """;""" & strFile & """)" 
        If Len(strFile) > 3 Then _
        MeArLink(1, i) = IIf(InStr(strFileEx, Right$(strFile, 4)) > 0, "X", "") 
      
        i = i + 1 
        strFile = Dir$() 
    Loop 
     
    If i > 0 Then 'Dateien gefunden i ist > 0 
        'Hyperlink erstellen (Formel) 
      With .Range("A3").Resize(i, 2) 
        .FormulaLocal = Application.Transpose(MeArLink) 
        .Sort Key1:=.Cells(1, 2), Order1:=xlAscending, _
              Key2:=.Cells(1, 1), Order2:=xlAscending, Header:=xlNo 
      End With 
    End If 
     
    .Columns("A:B").AutoFit 
End With 
End Sub 
kommt als Code in Modul2
Option Explicit 
 
Private Declare Function MoveWindow Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByVal x As Long, _
    ByVal y As Long, _
    ByVal nWidth As Long, _
    ByVal nHeight As Long, _
    ByVal bRepaint As Long) As Long 
Private Declare Function GetSystemMetrics Lib "user32.dll" ( _
    ByVal nIndex As Long) As Long 
Private Declare Function GetWindowRect Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByRef lpRect As RECT) As Long 
Private Declare Function SHBrowseForFolder Lib "shell32" ( _
    lpbi As InfoT) As Long 
Private Declare Function CoTaskMemFree Lib "ole32" ( _
    ByVal hMem As Long) As Long 
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" ( _
    ByVal lpStr1 As String, _
    ByVal lpStr2 As String) As Long 
Private Declare Function SHGetPathFromIDList Lib "shell32" ( _
    ByVal pList As Long, _
    ByVal lpBuffer As String) As Long 
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
    ByVal lpClassname As String, _
    ByVal lpWindowName As String) As Long 
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" ( _
    ByVal hwnd As Long, _
    ByVal Msg As Long, _
    wParam As Any, _
    lParam As Any) As Long 
Private Type InfoT 
    hwnd As Long 
    Root As Long 
    DisplayName As Long 
    Title As Long 
    Flags As Long 
    FName As Long 
    lParam As Long 
    Image As Long 
End Type 
 
Private Type RECT 
    Left As Long 
    Top As Long 
    Right As Long 
    Bottom As Long 
End Type 
 
Public Enum BIF_Flag 
    BIF_RETURNONLYFSDIRS = &H1 
    BIF_DONTGOBELOWDOMAIN = &H2 
    BIF_STATUSTEXT = &H4 
    BIF_RETURNFSANCESTORS = &H8 
    BIF_EDITBOX = &H10 
    BIF_VALIDATE = &H20 
    BIF_NEWDIALOGSTYLE = &H40 
    BIF_BROWSEINCLUDEURLS = &H80 
    BIF_BROWSEFORCOMPUTER = &H1000 
    BIF_BROWSEFORPRINTER = &H2000 
    BIF_BROWSEINCLUDEFILES = &H4000 
    BIF_SHAREABLE = &H8000 
End Enum 
 
Private Const SM_CXFULLSCREEN = &H10 
Private Const SM_CYFULLSCREEN = &H11 
 
Private Const BFFM_SETSELECTION = &H466 
Private Const BFFM_INITIALIZED = &H1 
 
Private s_BrowseInitDir As String 
Private Function BrowseCallback( _
        ByVal hwnd As Long, _
        ByVal uMsg As Long, _
        ByVal wParam As Long, _
        ByVal lParam As Long) As Long 
    If uMsg = BFFM_INITIALIZED Then 
        Call SendMessage(hwnd, BFFM_SETSELECTION, ByVal 1&, ByVal s_BrowseInitDir) 
        Call CenterDialog(hwnd) 
    End If 
    BrowseCallback = 0 
End Function 
 
Private Function FuncCallback(ByVal nParam As Long) As Long 
    FuncCallback = nParam 
End Function 
 
Private Sub CenterDialog(ByVal hwnd As Long) 
    Dim WinRect As RECT, ScrWidth As Integer, ScrHeight As Integer 
    Dim DlgWidth As Integer, DlgHeight As Integer 
    GetWindowRect hwnd, WinRect 
    DlgWidth = WinRect.Right - WinRect.Left 
    DlgHeight = WinRect.Bottom - WinRect.Top 
    ScrWidth = GetSystemMetrics(SM_CXFULLSCREEN) 
    ScrHeight = GetSystemMetrics(SM_CYFULLSCREEN) 
    MoveWindow hwnd, (ScrWidth - DlgWidth) / 2, _
        (ScrHeight - DlgHeight) / 2, DlgWidth, DlgHeight, 1 
End Sub 
 
Public Function fncGetFolder( _
        Optional ByVal sMsg As String = "Bitte wählen Sie ein Verzeichnis", _
        Optional ByVal lFlag As BIF_Flag = BIF_RETURNONLYFSDIRS, _
        Optional ByVal sPath As String = "C:\") As String 
    Dim xl As InfoT, IDList As Long, RVal As Long, FolderName As String 
    s_BrowseInitDir = sPath 
    With xl 
        .hwnd = FindWindow("XLMAIN", vbNullString) 
        .Root = 0 
        .Title = lstrcat(sMsg, "") 
        .Flags = lFlag 
        .FName = FuncCallback(AddressOf BrowseCallback) 
    End With 
    IDList = SHBrowseForFolder(xl) 
    If IDList <> 0 Then 
        FolderName = Space(256) 
        RVal = SHGetPathFromIDList(IDList, FolderName) 
        CoTaskMemFree (IDList) 
        FolderName = Trim$(FolderName) 
        FolderName = Left$(FolderName, Len(FolderName) - 1) 
    End If 
    fncGetFolder = FolderName 
End Function 
 
Gruß Tino
Anzeige
in Spalte B sollte ein X stehen. oT.
08.11.2009 14:30:24
Tino
AW: in Spalte B sollte ein X stehen. oT.
08.11.2009 14:44:23
Meike
Oh weh, jetzt musst Du Dir wegen mir so viel Arbeit machen. :-(
Also die Ordnerauswahl klappt. Aber ein "x" in Spalte B wird mir bei den Hyperlinks (wo Dateianhänge drin sind) nicht angezeigt.
Beschreibe mein Poblem noch einmal, damit Du nicht evtl. umsonst Arbeit machen musst.
Diese auszulesenden Dateien sind in der Regel Mails mit der Endung msg. Und hier sollen zusätzlich die Dateien mit x gekennzeichnet werden, die ein Anhang haben. Noch besser wäre natürlich wenn die Anhänge ebenfalls mit Hyperlink angezeigt werden würden.
Derzeit klappt das mit dem x aus irgendeinem Grund noch nicht.
Liebe Grüße
Meike
Anzeige
ach so...
08.11.2009 15:38:09
Tino
Hallo,
die Dateien liegen noch in der Mail.
Da habe ich jetzt auch keine Lösung nur einen ansatz einer Idee,
man könnte vielleicht die Datei als Text einlesen und nach Dateiformaten suchen (VBScript.RegExp) und diese mit dem Mailordner in Verbindung bringen wo Outlook die Dateien abspeichert.
Bei mir wäre dies im Order
"C:\Users\UserName\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook\ERC2OUP5"
Mir ist es jetzt zu viel arbeit dies zu erstellen und zu testen, müsste aber funktionieren
weil die Dateinamen als Klartext drinstehen (einmal als gekürzte Dos Variante und einmal normal).
Vielleicht teste ich es später mal, sollte keiner eine bessere Idee haben.
Ich lass die Frage offen.
Gruß Tino
vielleicht reicht es auch so...
08.11.2009 17:59:53
Tino
Hallo,
getestet unter Office 2007 und Win- Vista.
Pfad wo Outlook die Anlage abspeichert anpassen.
Eventuell noch die max Anzahl vorkommenter Anlagen anpassen (100 sollten aber reichen)
Nachteil die Anlage muss zuvor einmal offen gewesen sein oder die Anlage im gleichen Ordner speichern,
eine Lösung die Anlage direkt zu öffnen habe ich noch nicht gefunden.
kommt als Code in Modul1
Option Explicit 
 
Sub Schaltfläche1_KlickenSieAuf() 
Dim strPath$, strFile$ 
Dim MeArLink() As String, ArAnlage() As String, i As Integer 
Dim LMaxRow As Long 
Dim A As Long, AA As Long 
 
'hier die maximale Anzahl Anlagen eintragen die vorkommen kann 
Const MaxAnlagen As Long = 100 
'Hier den Pfad anpassen wo Outlook die Anlage ablegt 
Const OulookTempFilePfad As String = "C:\Users\Tino\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook\ERC2OUP5\" 
         
strPath = fncGetFolder(, , "E:\1 Forum\Mail Test") 'Ordnerauswahl 
If strPath = "" Then Exit Sub 
         
        With Sheets("Tabelle1") 
           
            'Bereich leer machen für neue Daten 
            LMaxRow = .Cells(.Rows.Count, 1).End(xlUp).Row 
            If LMaxRow > 2 Then .Range(.Range("A3"), .Cells(LMaxRow, MaxAnlagen)).Clear 
             
            'Pfad mit \ am ende 
            strPath = IIf(Right$(strPath, 1) = "\", strPath, strPath & "\") 
             
            'Daten aus Ordner sammeln 
            strFile = Dir$(strPath & "*.msg") 
             
            Do While strFile <> "" 
                Redim Preserve MeArLink(1 To MaxAnlagen, i) 
                MeArLink(1, i) = strFile 
                i = i + 1 
                strFile = Dir$() 
            Loop 
             
            If i > 0 Then 
                    For i = 0 To i - 1 
                        LeseMsG strPath & MeArLink(1, i), ArAnlage() 
                        MeArLink(1, i) = "=HYPERLINK(""" & strPath & MeArLink(1, i) & """;""" & MeArLink(1, i) & """)" 
                        If IsArray(ArAnlage) Then 
                            AA = 1 
                            For A = Lbound(ArAnlage) To Ubound(ArAnlage) 
                              If Dir(OulookTempFilePfad & ArAnlage(A), vbNormal) <> "" Then 
                                AA = AA + 1 
                                MeArLink(AA, i) = "=HYPERLINK(""" & OulookTempFilePfad & ArAnlage(A) & """;""" & ArAnlage(A) & """)" 
                              End If 
                            Next A 
                            Erase ArAnlage 
                        End If 
                    Next i 
 
                 'Hyperlink erstellen (Formel) 
                  With .Range("A3").Resize(Ubound(MeArLink, 2) + 1, MaxAnlagen) 
                    .FormulaLocal = Application.Transpose(MeArLink) 
                    .Sort Key1:=.Cells(1, 1), Order1:=xlAscending, Header:=xlNo 
                    .EntireColumn.AutoFit 
                  End With 
            End If 
 
        End With 
End Sub 
 
 
Sub LeseMsG(strMSG_File As String, ArAnlage() As String) 
Dim F As Integer, sInhalt As String 
Dim objRegEx As Object, oMatch As Object 
Dim i As Integer, ii As Integer 
Dim meArExt 
 
'Dateifilter anpassen 
meArExt = Split(".xls;.doc;.pdf;.ppt;.pps", ";") 
 
If Dir$(strMSG_File, vbNormal) <> "" Then 
    Set objRegEx = CreateObject("VBScript.RegExp") 
     
    F = FreeFile 
    Open strMSG_File For Binary As #F 
    sInhalt = Space$(LOF(F)) 
    Get #F, , sInhalt 
    Close 
 
    With objRegEx 
        .MultiLine = True 
        .Global = True 
        .IgnoreCase = True 
         
     For ii = Lbound(meArExt) To Ubound(meArExt) 
        .Pattern = "[a-zA-ZäöüßÄÖÜ ]{1,255}" & meArExt(ii) 
        For Each oMatch In .Execute(sInhalt) 
            If oMatch Like "*" & meArExt(ii) Then 
                Redim Preserve ArAnlage(i) 
                ArAnlage(i) = Trim$(oMatch.Value) 
                i = i + 1 
            End If 
        Next 
     Next ii 
     
    End With 
Set objRegEx = Nothing 
End If 
 
End Sub 
kommt als Code in Modul2
Option Explicit 
  
Private Declare Function MoveWindow Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByVal x As Long, _
    ByVal y As Long, _
    ByVal nWidth As Long, _
    ByVal nHeight As Long, _
    ByVal bRepaint As Long) As Long 
Private Declare Function GetSystemMetrics Lib "user32.dll" ( _
    ByVal nIndex As Long) As Long 
Private Declare Function GetWindowRect Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByRef lpRect As RECT) As Long 
Private Declare Function SHBrowseForFolder Lib "shell32" ( _
    lpbi As InfoT) As Long 
Private Declare Function CoTaskMemFree Lib "ole32" ( _
    ByVal hMem As Long) As Long 
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" ( _
    ByVal lpStr1 As String, _
    ByVal lpStr2 As String) As Long 
Private Declare Function SHGetPathFromIDList Lib "shell32" ( _
    ByVal pList As Long, _
    ByVal lpBuffer As String) As Long 
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
    ByVal lpClassname As String, _
    ByVal lpWindowName As String) As Long 
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" ( _
    ByVal hwnd As Long, _
    ByVal Msg As Long, _
    wParam As Any, _
    lParam As Any) As Long 
Private Type InfoT 
    hwnd As Long 
    Root As Long 
    DisplayName As Long 
    Title As Long 
    Flags As Long 
    FName As Long 
    lParam As Long 
    Image As Long 
End Type 
  
Private Type RECT 
    Left As Long 
    Top As Long 
    Right As Long 
    Bottom As Long 
End Type 
  
Public Enum BIF_Flag 
    BIF_RETURNONLYFSDIRS = &H1 
    BIF_DONTGOBELOWDOMAIN = &H2 
    BIF_STATUSTEXT = &H4 
    BIF_RETURNFSANCESTORS = &H8 
    BIF_EDITBOX = &H10 
    BIF_VALIDATE = &H20 
    BIF_NEWDIALOGSTYLE = &H40 
    BIF_BROWSEINCLUDEURLS = &H80 
    BIF_BROWSEFORCOMPUTER = &H1000 
    BIF_BROWSEFORPRINTER = &H2000 
    BIF_BROWSEINCLUDEFILES = &H4000 
    BIF_SHAREABLE = &H8000 
End Enum 
  
Private Const SM_CXFULLSCREEN = &H10 
Private Const SM_CYFULLSCREEN = &H11 
  
Private Const BFFM_SETSELECTION = &H466 
Private Const BFFM_INITIALIZED = &H1 
  
Private s_BrowseInitDir As String 
Private Function BrowseCallback( _
        ByVal hwnd As Long, _
        ByVal uMsg As Long, _
        ByVal wParam As Long, _
        ByVal lParam As Long) As Long 
    If uMsg = BFFM_INITIALIZED Then 
        Call SendMessage(hwnd, BFFM_SETSELECTION, ByVal 1&, ByVal s_BrowseInitDir) 
        Call CenterDialog(hwnd) 
    End If 
    BrowseCallback = 0 
End Function 
  
Private Function FuncCallback(ByVal nParam As Long) As Long 
    FuncCallback = nParam 
End Function 
  
Private Sub CenterDialog(ByVal hwnd As Long) 
    Dim WinRect As RECT, ScrWidth As Integer, ScrHeight As Integer 
    Dim DlgWidth As Integer, DlgHeight As Integer 
    GetWindowRect hwnd, WinRect 
    DlgWidth = WinRect.Right - WinRect.Left 
    DlgHeight = WinRect.Bottom - WinRect.Top 
    ScrWidth = GetSystemMetrics(SM_CXFULLSCREEN) 
    ScrHeight = GetSystemMetrics(SM_CYFULLSCREEN) 
    MoveWindow hwnd, (ScrWidth - DlgWidth) / 2, _
        (ScrHeight - DlgHeight) / 2, DlgWidth, DlgHeight, 1 
End Sub 
  
Public Function fncGetFolder( _
        Optional ByVal sMsg As String = "Bitte wählen Sie ein Verzeichnis", _
        Optional ByVal lFlag As BIF_Flag = BIF_RETURNONLYFSDIRS, _
        Optional ByVal sPath As String = "C:\") As String 
    Dim xl As InfoT, IDList As Long, RVal As Long, FolderName As String 
    s_BrowseInitDir = sPath 
    With xl 
        .hwnd = FindWindow("XLMAIN", vbNullString) 
        .Root = 0 
        .Title = lstrcat(sMsg, "") 
        .Flags = lFlag 
        .FName = FuncCallback(AddressOf BrowseCallback) 
    End With 
    IDList = SHBrowseForFolder(xl) 
    If IDList <> 0 Then 
        FolderName = Space(256) 
        RVal = SHGetPathFromIDList(IDList, FolderName) 
        CoTaskMemFree (IDList) 
        FolderName = Trim$(FolderName) 
        FolderName = Left$(FolderName, Len(FolderName) - 1) 
    End If 
    fncGetFolder = FolderName 
End Function 
 
 
Gruß Tino
AW: vielleicht reicht es auch so...
09.11.2009 18:15:05
Meike
Hallo lieber Tino,
leider übersteigen die Anforderungen meinen Horizont. Zumindest kann ich auf der Arbeit nicht erkennen, wo die die Mails temporär gespeichert werden.
Ich danke Dir trotzdem sehr für Deine Mühe und die Zeit, die Du investierst hast.
Liebe Grüße
Meike

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige