Discussion:
Wert einer Zelle aus ungeöffneter Datei entnehmen
(zu alt für eine Antwort)
Muersel Inan
2007-07-30 20:38:21 UTC
Permalink
Hallo Zusammen,

ich möchte gerne einen Wert aus einer ungeöffneten Datei auslesen.

1. Der Pfad der Datei liegt wie folgt vor
A3: "c:.\Daten\DatenExcel\Datei1.xls"

2. Der Tabellenname liegt ebenfalls vor
B3: "Tabell1"

3. Die auszulesende Zelle ist im Feld C3 hinterlegt
"$H15"


Ich würde gern eine Mischung aus INDIREKT und SUMMENPRODUCKT benutzen. Aber
ich weiss nicht genau wie ich diese
Befehle kombinieren kannt. In den auszulesenden Felder können Zahlen aber
auch Texte stehen.

Ich dachte einfach mal an so etwas wie =
Summenprodukt((indirekt([A3!B3C3])*1) ??

P.S. Summenprodukt deshalb, weil ich gelesen habe, das dieser Befehl auch
aus ungeöffneten Dateien Werte auslesen kann.

Vielen Dank im Voraus

Gruß
MI
Claus Busch
2007-07-30 21:19:54 UTC
Permalink
Hallo Muersel,
Post by Muersel Inan
ich möchte gerne einen Wert aus einer ungeöffneten Datei auslesen.
1. Der Pfad der Datei liegt wie folgt vor
A3: "c:.\Daten\DatenExcel\Datei1.xls"
2. Der Tabellenname liegt ebenfalls vor
B3: "Tabell1"
3. Die auszulesende Zelle ist im Feld C3 hinterlegt
"$H15"
Ich würde gern eine Mischung aus INDIREKT und SUMMENPRODUCKT benutzen. Aber
ich weiss nicht genau wie ich diese
Befehle kombinieren kannt. In den auszulesenden Felder können Zahlen aber
auch Texte stehen.
mit INDIREKT kannst du nicht auf ungeöffnete Dateien zugreifen, auch nicht,
wenn du das in eine andere Funktion einbaust.
Eine Lösung für INDIREKT wäre:
=INDIREKT("["&RECHTS(A3;LÄNGE(A3)-FINDEN("#";WECHSELN(A3;"\";"#";LÄNGE(A3)-LÄNGE(WECHSELN(A3;"\";"")))))&"]"&B3&"!"&C3)


Mit freundlichen Grüssen
Claus Busch
--
Win XP Prof SP2 / Vista Ultimate
Office 2003 SP2 / 2007 Ultimate
Bernd P
2007-07-31 03:10:55 UTC
Permalink
Hallo Muersan,

da empfehle ich ein VBA Makro:
http://www.erlandsendata.no/english/index.php?d=envbawbreadfromclosedwb

Alle Lösungsansätze mit INDIREKT sind IMHO Murks.

Viele Grüße,
Bernd
Thomas Ramel
2007-07-31 05:16:01 UTC
Permalink
Grüezi Muersel
Post by Muersel Inan
ich möchte gerne einen Wert aus einer ungeöffneten Datei auslesen.
1. Der Pfad der Datei liegt wie folgt vor
A3: "c:.\Daten\DatenExcel\Datei1.xls"
2. Der Tabellenname liegt ebenfalls vor
B3: "Tabell1"
3. Die auszulesende Zelle ist im Feld C3 hinterlegt
"$H15"
Ich würde gern eine Mischung aus INDIREKT und SUMMENPRODUCKT
benutzen. Aber ich weiss nicht genau wie ich diese Befehle kombinieren
kannt. In den auszulesenden Felder können Zahlen aber auch Texte stehen.
P.S. Summenprodukt deshalb, weil ich gelesen habe, das dieser Befehl auch
aus ungeöffneten Dateien Werte auslesen kann.
Wie meine Vorrredner schon angeführ thaben ist dies nicht möglich - entweder
Du verwendest einen direkten Bezug zu den Daten (ohne INDIREKT), dann kannst
Du den Pfad aber nicht aus Zellen zusammensetzen oder Du musst die Werte mit
VBA holen.

Eine (weitere) Variante für VBA ist die folgende Funktion, die Du auch mit
deinen Zellbezügen kombinieren kannst:

Public Function GetDataClosedWB(SourcePath As String, _
SourceFile As String, _
sourceSheet As String, _
SourceRange As String, _
TargetRange As Range) As Boolean

'Holt einen Bereich aus einer _geschlossenen_ Arbeitsmappe
'Nur in VBA zu verwenden; nicht aus einer Tabellenzelle heraus
'© ***@mvps.org

Dim strQuelle As String
Dim Zeilen As Long
Dim Spalten As Byte

On Error GoTo InvalidInput

strQuelle = "'" & SourcePath & "[" & SourceFile & "]" & _
sourceSheet & "'!" & _
Range(SourceRange).Cells(1, 1).Address(0, 0)

Zeilen = Range(SourceRange).Rows.Count
Spalten = Range(SourceRange).Columns.Count

With TargetRange.Cells(1, 1).Resize(Zeilen, Spalten)
.Formula = "=IF(" & strQuelle & "="""",""""," & strQuelle & ")"
.Value = .Value
End With

GetDataClosedWB = True
Exit Function

InvalidInput:
MsgBox "Die Quelldatei oder der Quellbereich ist ungültig!", _
vbExclamation, "Get data from closed Workbook"
GetDataClosedWB = False
End Function

Auf deine Zellen angewandt (den Dateinamen müsstest Du dann noch in eine
eigene Zelle schreiben) würde der Aufruf dann in etwa so aussehen:

Public Sub HoleDaten3()
Dim Pfad As String
Dim Dateiname As String
Dim Blatt As String
Dim Zellen As String

Pfad = "D:\DeinPfad\"
Dateiname = "DeineDatei.xls"
Blatt = "DeinTabellenblatt"
Zellen = "B10" 'auch ein Bereich ist möglich: "B10:C20"

GetDataClosedWB(Pfad, _
Dateiname, _
Blatt, _
Zellen, _
Worksheets("Tabelle1").Range("B10"))
End Sub

Wenn Du diesen Code nun noch mit einem Change()-Ereignis des Tabellenlbattes
kombinierst wechselt der Inhalt der Zellen sobald Du einen der Quellwerte in
deinen Zellen veränderst.
--
Mit freundlichen Grüssen

Thomas Ramel (@Web-Interface)
- MVP für Microsoft-Excel -

[Win XP Pro SP-2 / xl2003]
Alexander Wolff
2007-07-31 09:45:05 UTC
Permalink
Wieviele Ostfriesen (Schildbürger) braucht es, um eine Glühlampe zu
wechseln?

Antwort: 100, denn 1 hält die Glühlampe fest, während die anderen 99 das
Haus um sie drehen.

Auf die gleiche Weise kann man feste Bezüge auf geschlossene externe Dateien
lenken. Man nehme stets einen temporären Pfad\Dateinamen, kopiere die
gewünschte Datei dorthin und aktualisiere dann die Zieldatei.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Bernd P
2007-07-31 09:56:22 UTC
Permalink
Hallo Alexander,

In welchem Umfeld würdest Du Deinen Vorschlag ernsthaft verwenden
wollen?

Viele Grüße,
Bernd
Alexander Wolff
2007-07-31 10:15:58 UTC
Permalink
Post by Bernd P
In welchem Umfeld würdest Du Deinen Vorschlag ernsthaft verwenden
wollen?
In dieser verschärften Form wohl in keinem. Deshalb ja auch der
Ostfriesenwitz vornean.

Allerdings gibt es tatsächlich Problemstellungen, wo man die abzufragende
Datei, die es in gleicher Struktur mehrfach gibt, temporär einfach an eine
fixe Quellposition kopieren|umbenennnen kann, um sich an ihr mit fixen
Verweisen zu "bedienen".

Das gilt natürlich besonders dann, wenn der Autor noch nie etwas von einer
Datenbank (oder zentralen Datentabelle) gehört hat, und entsprechende
Neuorganisation mehr Zeit braucht, als ein Dateiumkopiermakro.

Wenn Du jetzt (wieder) damit kommst, dass so ein Vorschlag von einem MVP
nicht kommen sollte: Gern. Es geht in diesem Forum nicht um saubere EDV, da
die Anwender nicht den Anspruch an eine solche erheben. Ich finde es
spannender, auch mal "verboten" zu denken - über Irrtümer oder Fehler sind
in der Geschichte häufig neue Entdeckungen gemacht worden.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Loading...