6.8k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

vielleicht kann mir ja jemand helfen...
in der A-Spalte stehen die jeweiligen Dokumentennamen auf die zugeriffen werden soll,
um dann die bestimmte Zelle D6 des jeweiligen Dokuments auszulesen und diese auf
Spalte B zu übertragen. Kann mir da wer helfen? Existiert evtl. ein Excel-Befehl?

Lieben Gruß

Benny

19 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Benny,

schreibe ib B1

=INDIREKT("'"&A1&"'!D6")

und ziehe nach Bedarf nach unten.

Gruß
Rainer
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Benny,

die Formellösung von Rainer mit INDIREKT funktioniert nur bei geöffneter Arbeitsmappe. Siehe hierzu auch die Hilfe zur Funktion von INDIREKT:

Verweist bezug auf eine andere Arbeitsmappe (ein externer Bezug) muss diese Arbeitsmappe geöffnet sein. Ist die Quellarbeitsmappe nicht geöffnet, gibt die INDIREKT-Funktion den Fehlerwert #BEZUG! zurück.


Eine automatiserte Lösung mit Verknüpfungen zu geschlossenen Arbeitsmappen wirst du nur per VBA hinbekommen. Dazu braucht man aber auch den Pfad, wo die jeweilige Mappe liegt und neben dem Namen der Arbeitsmappe ggf. auch den des Arbeitsblatts, falls die angesprochenen Mappen mehrere Arbeitsblätter haben.

Gruß

M.O.
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo noch mal,

die Frage ist zweideutig gestellt.

In der Überschrift wird von Dateien gesprochen und in der Beschreibung von Dokumenten.

Da beides für Excel eigentlich nicht zutrifft, es gibt da nur Arbeitsmappen und Arbeitsblätter, nahm ich an, dass Arbeitsblätter gemeint sind.
Ansonsten hätte ich die Formel nicht gepostet,

Gruß
Rainer
0 Punkte
Beantwortet von
Hallo!

Danke euch für eure Antworten!
Das hast du richtig angenommen :D
Leider muss ich das dann wohl mit VBA machen...kenn mich da nicht
aus. Mal sehen wie ich das meister. Kann jemand mir das
einigermaßen (für einen Neuling) erklären?

Lieben Dank!

Gruß Benny
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Benny,

mit wem sprichst Du jetzt?

Wenn Du mich meinst und Deine Aussage...
Das hast du richtig angenommen

...stimmt, dann brauchst Du kein VBA, dann funktioniert meine Formel.

Andernfalls solltest Du Dich so ausdrücken, wie Du es auch meinst.

Gruß
Rainer
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Benny,

und wenn du dich auf meine Antwort beziehst, dann steht da schon alles drin, was man noch wissen muss umd dir ggf. helfen zu können:

[list]- Gibt es in den Arbeitsmappen, für die du die Verknüpfung willst nur ein Arbeitsblatt oder mehrere Arbeitsblätter und falls es mehrere Arbeitsblätter gibt, zu welchem Blatt in der jeweiligen Arbeitsmappe soll die Verknüpfung erstellt werden?

- Liegen alle Arbeitsmappen im selben Verzeichnis? Falls das nicht so ist, müsstest du für jede Mappe individuell den Pfad hinterlegen.

- Und soll immer eine Verknüpfung zur selben Zelle hergestellt werden?[/list]

Ohne die Angaben kann man dir kein Makro erstellen.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo,

also bedanken wollt ich mich bei beiden. Rainer das was du mir erläutert hast ist leider nicht meine Lösung. Ich meinte damit Mo. Leider war ich ein wenig im Stress...sry

Also ich versuch es besser zu erklären:

Ich habe eine Arbeitsmappe (Formel.xlsx) im Pfad "Eigene Dateien"
Im gleichen Pfad befinden sich 300 weitere Arbeitsmappen, bei denen ich jeweils Zelle B2, B3, F6 und F7 in die Spalte der Arbeitsmappe A4,A5, A6, A7 übertragen möchte. Die Dateinamen sind beispielsweise 1456-2012-12.xlsx, 3456-2012-12.xlsx usw. Diese Dateien haben jeweils nur ein Arbeitsblatt (Sheet1).

Ich hoffe ich habe jetzt alle Informationen?!?

Lieben Gruß und nochmals Danke im Voraus!

Bennnny
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

ein ansatz

gruss nighty

ob die excel4funktion allerdings mit deiner excelvariante geht ,bin ich ueberfragt

Sub DateienLesen()
Dim AusgabeZeile As Long
Dim AusgabeSpalte As Long
AusgabeZeile = 1
AusgabeSpalte = 1
For ZellPos2 = 1 To 2
For Each ZellPos In Array("b2", "b3")
AusgabeSpalte = AusgabeSpalte + 1
Cells(AusgabeZeile, AusgabeSpalte) = ExecuteExcel4Macro("'C:\Temp\" & "[" & Cells(ZellPos2, 1) & "]Tabelle1" & "'!" & Range("" & ZellPos).Address(, , xlR1C1))
Next ZellPos
AusgabeSpalte = 1
AusgabeZeile = AusgabeZeile + 1
Next ZellPos2
End Sub
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

in diesem beispiel werden 2 dateien ausgelesen ,aus dem vorgegebenen pfad

a1 + a2 sind die dateinamen

b2 + b3 werden aus geschlossenen dateiengelesen

ausgabe zeilenorientiert

gruss nighty
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Benny,

ich habe dir auch mal ein Makro geschrieben. Die Verknüpfungen werden in die selbe Zeile geschrieben, in der die Dateinamen stehen. Ich hoffe, ich habe dich richtig verstanden.

Das Makro musst du in ein Standard-Modul der Arbeitsmappe kopieren, in der die Verknüpfungen
erstellt werden sollen.

Sub verknuepfungen()

Dim zeile As Long
Dim pfad As String

'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False

'Pfad festlegen = Pfad der aktuellen Arbeitsmappe
pfad = ThisWorkbook.Path

'Schleife für das Erstellen der Verknüpfungen
'Beginnt ab Zeile 1 bis zur letzten beschriebenen Zeile
For zeile = 1 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
'Falls Zelle nicht leer ist, werden die Verknüpfungen eingefügt
If IsEmpty(Cells(zeile, 1)) = False Then
ActiveSheet.Cells(zeile, 4).FormulaLocal = "='" & pfad & "\[" & Cells(zeile, 1).Text & "]Sheet1'!B$2"
ActiveSheet.Cells(zeile, 5).FormulaLocal = "='" & pfad & "\[" & Cells(zeile, 1).Value & "]Sheet1'!B$3"
ActiveSheet.Cells(zeile, 6).FormulaLocal = "='" & pfad & "\[" & Cells(zeile, 1).Value & "]Sheet1'!F$6"
ActiveSheet.Cells(zeile, 7).FormulaLocal = "='" & pfad & "\[" & Cells(zeile, 1).Value & "]Sheet1'!F$7"
End If

Next zeile

'Bildschirmaktualisierung einschalten:
Application.ScreenUpdating = True

End Sub


Gruß

M.O.
...