Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
912to916
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
912to916
912to916
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

bestimmten Abschnitt aus vielen Dateien auslesen?

bestimmten Abschnitt aus vielen Dateien auslesen?
04.10.2007 22:05:00
Selma
Hallo Excel-Freunde,
ich habe ca. 2000 HTML-Dateien in einem Ordner. In allen diesen Dateien gibt es immer ein Verweis auf eine *.cel Datei.
Wie kann ich per VBA aus allen 2000 HTML-Dateien nur die Dateiname von cel-Datei auslesen und in Spalte A untereinander einfügen?
Ausschnitt aus einer der HTML-Dateien:
<a href="armaturen_show_2d.cel">Anlage-File</a>
Zur Hilfe, dies hier ">Anlage-File</a> kommt einmalig vor.
Davor steht dann die Dateiname der cel-Datei im Beispiel armaturen_show_2d.cel
Vielen Dank im Voraus.
Liebe Grüße
Selma

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

Betreff
Datum
Anwender
Anzeige
AW: bestimmten Abschnitt aus vielen Dateien auslesen?
04.10.2007 22:43:00
Jens
Hi,
am besten, du lädst mal ein Beispiel mit z.B. 1000 repräsentativen Daten hoch.
mfg Jens

AW: bestimmten Abschnitt aus vielen Dateien auslesen?
04.10.2007 22:53:05
Josef
Hallo Selma,
probier mal diesen Code. Er listet die Dateinamen in der aktiven Tabelle in Spalte "A" auf.
' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub SearchHTML()
Dim strDir As String, strFile As String, strTmp As String, strRes As String
Dim vRes() As Variant, a As Variant
Dim result As Long, lngI As Long

strDir = "F:\Temp" 'zu untersuchendes Verzeichnis - Anpassen!

Columns(1).ClearContents

result = FileSearchFSO(a, strDir, "*.html", False) 'letzter Parameter TRUE wenn Unterordner durchsucht werden sollen!

If result <> 0 Then
    
    Redim vRes(0)
    
    For lngI = 0 To result - 1
        
        strFile = a(lngI)
        
        Open strFile For Input As #1
        
        Do While Not EOF(1)
            
            Line Input #1, strTmp
            
            If strTmp Like "*.cel*" Then
                strRes = Mid(strTmp, InStr(1, strTmp, "<a href=") + 9)
                strRes = Mid(strRes, 1, InStr(1, strRes, ".cel") + 3)
                vRes(UBound(vRes)) = strRes
                Redim Preserve vRes(UBound(vRes) + 1)
            End If
            
        Loop
        
        Close #1
        
    Next
    
End If

If UBound(vRes) > 0 Then
    Redim Preserve vRes(UBound(vRes) - 1)
    Range("A1:A" & UBound(vRes) + 1) = Application.Transpose(vRes)
    Columns(1).AutoFit
End If

End Sub

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


Dim mobjFSO As Object, mfsoFolder As Object, mfsoSubFolder As Object, mfsoFile As Object

Set mobjFSO = CreateObject("Scripting.FileSystemObject")

Set mfsoFolder = mobjFSO.GetFolder(InitialPath)

On Error Resume Next

For Each mfsoFile In mfsoFolder.Files
    If Not mfsoFile Is Nothing Then
        If LCase(mobjFSO.GetFileName(mfsoFile)) Like LCase(FileName) Then
            If IsArray(Files) Then
                Redim Preserve Files(UBound(Files) + 1)
            Else
                Redim Files(0)
            End If
            Files(UBound(Files)) = mfsoFile
        End If
    End If
Next

If SubFolders Then
    For Each mfsoSubFolder In mfsoFolder.SubFolders
        FileSearchFSO Files, mfsoSubFolder, FileName, SubFolders
    Next
End If

If IsArray(Files) Then FileSearchFSO = UBound(Files) + 1
On Error GoTo 0
Set mobjFSO = Nothing
Set mfsoFolder = Nothing
End Function

Gruß Sepp

Anzeige
AW: bestimmten Abschnitt aus vielen Dateien ausles
05.10.2007 00:03:00
Selma

Eine kurze Frage noch: Wenn ich das Makro für andere Verzeichnisse anwenden möchte, was muss ich ausser strDir ändern, damit bereits eingefügte Daten beim erneutem Start des Makros nicht gelöscht werden?
Neue Daten sollen einfach in die nächste leere Zelle der Spalte A angefügt werden.
Liebe Grüße und nochmals großes DANKESCHÖN !
Selma

AW: bestimmten Abschnitt aus vielen Dateien ausles
05.10.2007 21:35:00
Josef
Hallo Selma,
mit Ordnerauswahl und die neuen Daten werden unten angehängt.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub SearchHTML()
Dim strDir As String, strFile As String, strTmp As String, strRes As String
Dim vRes() As Variant, a As Variant
Dim result As Long, lngI As Long, lngStart

strDir = fncBrowseForFolder("C:\")

If strDir = "" Then Exit Sub

lngStart = Cells(Rows.Count, 1).End(xlUp).Row + 1

result = FileSearchFSO(a, strDir, "*.html", False) 'letzter Parameter TRUE wenn Unterordner durchsucht werden sollen!

If result <> 0 Then
    
    Redim vRes(0)
    
    For lngI = 0 To result - 1
        
        strFile = a(lngI)
        
        Open strFile For Input As #1
        
        Do While Not EOF(1)
            
            Line Input #1, strTmp
            
            If strTmp Like "*.cel*" Then
                strRes = Mid(strTmp, InStr(1, strTmp, "<a href=") + 9)
                strRes = Mid(strRes, 1, InStr(1, strRes, ".cel") + 3)
                vRes(UBound(vRes)) = strRes
                Redim Preserve vRes(UBound(vRes) + 1)
            End If
            
        Loop
        
        Close #1
        
    Next
    
End If

If UBound(vRes) > 0 Then
    Redim Preserve vRes(UBound(vRes) - 1)
    Range(Cells(lngStart, 1), Cells(UBound(vRes) + lngStart, 1)) = Application.Transpose(vRes)
    Columns(1).AutoFit
End If

End Sub

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


Dim mobjFSO As Object, mfsoFolder As Object, mfsoSubFolder As Object, mfsoFile As Object

Set mobjFSO = CreateObject("Scripting.FileSystemObject")

Set mfsoFolder = mobjFSO.GetFolder(InitialPath)

On Error Resume Next

For Each mfsoFile In mfsoFolder.Files
    If Not mfsoFile Is Nothing Then
        If LCase(mobjFSO.GetFileName(mfsoFile)) Like LCase(FileName) Then
            If IsArray(Files) Then
                Redim Preserve Files(UBound(Files) + 1)
            Else
                Redim Files(0)
            End If
            Files(UBound(Files)) = mfsoFile
        End If
    End If
Next

If SubFolders Then
    For Each mfsoSubFolder In mfsoFolder.SubFolders
        FileSearchFSO Files, mfsoSubFolder, FileName, SubFolders
    Next
End If

If IsArray(Files) Then FileSearchFSO = UBound(Files) + 1
On Error GoTo 0
Set mobjFSO = Nothing
Set mfsoFolder = Nothing
End Function


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

Gruß Sepp

Anzeige
AW: bestimmten Abschnitt aus vielen Dateien ausles
06.10.2007 00:13:00
Selma
Hallo Sepp,
es funktioniert ausgezeichnet.
Vielen Dank !
LG
Selma

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige