Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Auslesen aus externen Exceldateien

Betrifft: Auslesen aus externen Exceldateien von: Faisal
Geschrieben am: 07.09.2004 12:26:11

Hallo Liebe NG!

Folgendes liegt an: Ich habe einen Ordner, in dessen sich 38 Unterordner befinden und denen sich z.Zt. 730(!!) Excel Dateien befinden. Aus jeder Excel Datei interessieren mich die Einträge in den Zellen C6 und G42. Es können immer wieder ein paar neue Dateien dazu kommen. Meine Frage: Hat jemand eine Idee ob die abfrage der nötigen daten automatisiert erfolgen kann und wenn ja, wie?
Ich bin für jede antwort dankbar. Grüsse, Faisal

  


Betrifft: AW: Auslesen aus externen Exceldateien von: WernerB.
Geschrieben am: 07.09.2004 13:38:50

Hallo Faisal,

mal als Denkanstoß: Wenn Du das nachstehende Makro in Verbindung mit der benutzerdefinierten Funktion entsprechend "aufbohrst" (Stichwort "FileSearch" und mit einer Schleife für die Einträge in der Zieldatei), so könnte daraus durchaus etwas Brauchbares entstehen.
Sub AuslesenGeschlDatei()
Dim strSource As String
    strSource = "'C:\TEMP\TRALALA\[Datei.xls]Blattname'!R6C3"   'R6C3  = "C6"
    Range("B8").Value = xl4Value(strSource)
    strSource = "'C:\TEMP\TRALALA\[Datei.xls]Blattname'!R42C7"  'R42C7 = "G42"
    Range("B9").Value = xl4Value(strSource)
End Sub

Function xl4Value(strParam As String) As Variant
    xl4Value = ExecuteExcel4Macro(strParam)
End Function

Viel Erfolg wünscht
WernerB.

P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !


  


Betrifft: AW: Auslesen aus externen Exceldateien von: GraFri
Geschrieben am: 07.09.2004 14:15:59

Hallo

Hier das Prinzip. An einigen Punkten (auszulesende Zelle) etc. anpassen.
Bei Unklarheiten melde dich einfach noch mal.



Option Explicit

'Pfad und Name des Tabellenblattes anpassen
Const strPfad = "E:\Excel 2000\Beispiele"
Const strTabelle = "Tabelle1"

Dim strDateiName()      As String
Dim strBezug            As String

Dim intDateiAnzahl      As Integer
Dim intZeile            As Integer
Dim n                   As Integer

Dim datWerte()          As Variant


Sub Abfrage_starten()

    Call Dateien_auslesen
    
    For n = 1 To intDateiAnzahl
        procExternerBereich
    Next n
End Sub

Sub Dateien_auslesen()
Dim objFileSearch       As Object

Set objFileSearch = Application.FileSearch

With objFileSearch
    .LookIn = strPfad
    .Filename = "*.xls"
    .SearchSubFolders = False 'bei True werden alle Unterverzeichnisse mit durchsucht
    
    If .Execute > 0 Then
    intDateiAnzahl = .FoundFiles.Count
    ReDim strDateiName(1 To intDateiAnzahl)
    ReDim datWerte(1 To 3, 1 To intDateiAnzahl)
        For n = 1 To intDateiAnzahl
            strDateiName(n) = Right(.FoundFiles(n), Len(.FoundFiles(n)) - Len(strPfad) - 1) 'nur Dateiname
            MsgBox strDateiName(n)
        Next
    End If

End With

Set objFileSearch = Nothing

End Sub


Private Function funcExternerWert(strPfad, strDatei, strTabelle, strBezug)

Dim strArg              As String

'Pruefung ob die angegebene Datei vorhanden ist
If Right(strPfad, 1) <> "\" Then strPfad = strPfad & "\"

If Dir(strPfad & strDateiName(n)) = "" Then
    funcExternerWert = "Datei nicht vorhanden"
    Exit Function
End If

' Externen Bezug zur Abfrage zusammensetzen
strArg = "'" & strPfad & "[" & strDateiName(n) & "]" & strTabelle & "'!" & Range(strBezug).Range("A1").Address(, , xlR1C1)

' XLM-Makro ausfuehren
funcExternerWert = ExecuteExcel4Macro(strArg)

End Function

Sub procExternerBereich()

Application.ScreenUpdating = False

'In diesem Beispiel wird der Bereich B1:B3 aus den geschlossenen Excelmappen
'aus dem Verzeichnis E:\Excel 2000\Beispiele\ gelesen und in dieser Mappe in den
'Spalten A-C eingetragen

For intZeile = 1 To 3
        strBezug = Cells(intZeile, 2).Address
        datWerte(intZeile, n) = funcExternerWert(strPfad, strDateiName, strTabelle, strBezug)
    MsgBox strDateiName(n)
    MsgBox datWerte(intZeile, n)
Next intZeile

'Aus der geschlossenen Arbeitsmappe E:\Excel 2000\Beispiele\Bereich markieren.xls
'wird die Zelle D2 eingelesen und in der Zelle A12 eingetragen
    strBezug = "$D$2"
    Sheets("Tabelle1").[A12] = funcExternerWert(strPfad, strDateiName, strTabelle, strBezug)

Application.ScreenUpdating = True

End Sub





     Code eingefügt mit Syntaxhighlighter 2.5


Mit freundlichen Grüßen, GraFri


 

Beiträge aus den Excel-Beispielen zum Thema " Auslesen aus externen Exceldateien"