Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
1044to1048
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

Werte aus geschlossener Datei

Werte aus geschlossener Datei
28.01.2009 20:57:00
Schmausi
Heilo Leute
ich habe im Forum verschiedene Vatianten gefunden um einen Werte aus einer geschlossenen Datei auszulesen.
Dies habe ich mir versucht um zuschreiben.
Dabei klappt es wunderbar, das ich aus mehreren bestimmten Dateien aus den Tabellenblättern 1 jeweisls aus Zelle "I39" in der neuen Tabelle die Werte zusammenfassen kann.
Im Beispiel steht in jeder aus zulesenden Tabelle in "I39" der Wert 40.
Das Ergebnis wird wie gewünscht aus 6 Tabellen 240.
Option Explicit
'Pfad und Name des Tabellenblattes anpassen
Const strPfad = "D:\meine Dateien\Eigene "
Const strTabelle = "Teil1"
' Dim strPfad As String
' Dim strTabelle As String
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
meine_test
Next n
End Sub



Sub Dateien_auslesen()
Dim objFileSearch       As Object
Set objFileSearch = Application.FileSearch
With objFileSearch
.LookIn = strPfad
.Filename = "FI*.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



Function funcExternerWert(strPfad, strDatei, strTabelle, strBezug)
Dim StrArg              As String
' Hier könnte man den für den Pad und die Tabelle konstanten einsetzen
' z.b.: strPfad = "C:\TEMP": StrTabelle = "Tabelle1"
'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)
'MsgBox StrArg
' XLM-Makro ausfuehren
funcExternerWert = ExecuteExcel4Macro(StrArg)
End Function



Sub meine_test()
'Aus der geschlossenen Arbeitsmappe E:\Excel 2000\Beispiele\Bereich markieren.xls
'wird die Zelle D2 eingelesen und in der Zelle A12 eingetragen
'    strPfad = "D:\meine Dateien\Eigene Dokumente\Excel\EXCEL\Dienstlich\Arbeitsergebnisse  neu\ _
'   strDateiName = "PW Finsterwalde.xls"
'  strTabelle = "Teil1"
strBezug = "I39"
Sheets("Tabelle1").Range("I39") = Sheets("Tabelle1").Range("I39") + funcExternerWert( _
strPfad, strDateiName, strTabelle, strBezug)
End Sub


Nun habe ich versucht für die konstanten Werte >Range.("I39") Nun sehe ich den Wald vor Bäumen nicht mehr.
Kann mir jemand helfen meinen Fehler zu lösen.
Meine angedachte Variante:
Option Explicit
'Pfad und Name des Tabellenblattes anpassen
Const strPfad = "D:\meine Dateien\Eigene "
Const strTabelle = "Teil1"
' Dim strPfad As String
' Dim strTabelle As String
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
meine_test
Next n
End Sub



Sub Dateien_auslesen()
Dim objFileSearch       As Object
Set objFileSearch = Application.FileSearch
With objFileSearch
.LookIn = strPfad
.Filename = "FI*.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



Function funcExternerWert(strPfad, strDatei, strTabelle, strBezug)
Dim StrArg              As String
' Hier könnte man den für den Pad und die Tabelle konstanten einsetzen
' z.b.: strPfad = "C:\TEMP": StrTabelle = "Tabelle1"
'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 & "'!" & Cells(strBezug). _
Range("A1").Address(, , xlR1C1)
'MsgBox StrArg
' XLM-Makro ausfuehren
funcExternerWert = ExecuteExcel4Macro(StrArg)
End Function



Sub meine_test()
Dim i
Dim j
'Aus der geschlossenen Arbeitsmappe E:\Excel 2000\Beispiele\Bereich markieren.xls
'wird die Zelle D2 eingelesen und in der Zelle A12 eingetragen
'    strPfad = "D:\meine Dateien\Eigene Dokumente\Excel\EXCEL\Dienstlich\Arbeitsergebnisse  neu\ _
'   strDateiName = "PW Finsterwalde.xls"
'  strTabelle = "Teil1"
For i = 39 To 42
For j = 5 To 15
strBezug = "" & i & "," & j & ""    '"I39"    '" & i & " , " & j &"
Sheets("Tabelle1").Cells(i, j) = Sheets("Tabelle1").Cells(i, j) + funcExternerWert(strPfad,  _
strDateiName, strTabelle, strBezug)
Next j
Next i
End Sub


Für eine Hilfe von Euch bin ich sehr sehr dankbar
Gruß Schmausi

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte aus geschlossener Datei
28.01.2009 22:08:00
Josef
Hallo ?
strBezug = Cells(i, j).Address(0, 0)

Gruß Sepp

AW: Werte aus geschlossener Datei
28.01.2009 22:34:00
Schmausi
Heilo Sepp
mit dieser Variante hab ich es auch verswucht
aber in der function bekomme ich immer noch die Fehelrmeldung "Typ unverdräglich".
Irgend wie steckt da mein Fehler.
Dank für Deine Hilfe
Schmausi
AW: Werte aus geschlossener Datei
29.01.2009 07:58:01
Tino
Hallo,
wenn ich mir Deinen Code so anschaue, verstehe ich diese Zeile nicht.

StrArg = "'" & strPfad & "[" & strDateiName(n) & "]" & strTabelle & "'!" & Cells(strBezug).Range("A1").Address(, , xlR1C1)


Was soll das für ein Zellbezug sein.


Cells(strBezug).Range("A1").Address(, , xlR1C1)


strBezug ist bei Dir I39
also schaut Deine Formel so aus.


StrArg = "'" & strPfad & "[" & strDateiName(n) & "]" & strTabelle & "'!" & Cells("I39").Range("A1").Address(, , xlR1C1)


Was willst Du damit erreichen, so kann es nur zum Fehler kommen?!
Gruß Tino

Anzeige
AW: Werte aus geschlossener Datei
29.01.2009 19:39:00
Schmausi
Danke, Danke
Tino
Gruß vom Schmausi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige