AW: Datenauslesen
07.12.2003 21:54:19
Nepumuk
Hallo Jürgen,
um erst einmal mit dem Märchen von lesen in geschlossenen Mappen aufzuräumen folgendes. Excel kann nicht mit Dateien kommunizieren die geschlossen auf der Festplatte liegen. Von Excel geht eine Anfrage an den Prozessor. Der sagt dem Festplattencontroller, gib mir mal die Datei. Wenn diese dann im Arbeitsspeicher und falls der zu klein, im Swapspeicher liegt, kommt Excel an die Daten ran. Das merkst du spätestens dann, wenn die Mappe mit einem Schreib- Leseschutzkennwort versehen ist. Da kommt nämlich die Kennwortabfrage.
Zu deinem Anliegen. Wenn feststeht, in welcher Tabelle und welcher Zelle der von dir gesuchte Wert sich befindet, macht es Sinn auf das explizite öffnen der Mappe zu verzichten. Wenn aber ein Programm in der Mappe suchen muss, um z.B. ein bestimmtes Datum zu finden oder den letzten Eintrag in einer Spalte/Zeile, so bringt das Verfahren keinerlei Gewinn. Du müsstest dich nämlich seriell durchlesen und jeden gelesenen Wert prüfen. Da habe ich die Mappe aber locker geöffnet, gelesen und wieder geschlossen.
Es gibt auch noch die Möglichkeit, die Mappe mit GetObject zu öffnen. Die ist auch etwas schneller wie normal und die Mappe bleibt ausgeblendet, kann aber ganz normal bearbeitet werden.
Und so geht das lesen in einer nicht explizit geöffneten Mappen:
Option Explicit
Public Sub Verzeichnis()
Dim strPfad As String, strDatei As String, strTabelle As String, strAdresse As String
strPfad = ThisWorkbook.path & "\"
strDatei = "y.xls"
strTabelle = "Test"
strAdresse = "A5"
Cells(1, 1) = hole_Werte(strPfad, strDatei, strTabelle, strAdresse)
End Sub
Private Function hole_Werte(strPfad As String, strDatei As String, strTabelle As String, strAdresse As String)
hole_Werte = ExecuteExcel4Macro("'" & strPfad & "[" & strDatei & "]" & strTabelle & "'!" & Range(strAdresse).Range("A1").Address(, , xlR1C1))
End Function
Code eingefügt mit: Excel Code Jeanie
Gruß
Nepumuk