Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
692to696
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
692to696
692to696
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Schleiffe einbauen - Werte von Variablen ändern

Schleiffe einbauen - Werte von Variablen ändern
09.11.2005 09:50:51
Variablen
Guten Tag
Ich will aus verschiedenen Dateien (die ich nicht öffne), Werte in eine Datei übernehmen.
In Spalte Spalte B steht ab Zeile 6 der jeweilige Pfad (es sind nicht alle Dateien im gleichen Verzeichnis gespeichert) und in Spalte C in der gleichen Zeile der Dateiname (die Anzahl Pfade mit Dateien ist variabel).
Die Zellbezüge in den geschlossenen Dateien, aus denen ich die Werte entnehmen will, stehen in Zeile 4, ab Spalte E (z.B. F3, G3, P3 ... - Anzahl Einträge in Zeile 4 ist variabel).
Diese Werte möchte ich jeweils auf der entsprechenden Zeile (beginnend mit Zeile 6) in der jeweiligen Spalte, wo die Zellbezüge gemäss Zeile 4 stehen, einfügen.
Mit meinem Makro (aus verschiedenen Einträgen zusammengesucht) habe ich es geschafft, den ersten Wert aus einer geschlossenen Datei abzuholen. Nun muss ich eine Schleiffe integrieren, die alle Einträge abarbeitet. Da bin ich etwas hilflos. Kann mir jemand weiterhelfen?
Besten Dank, Peter
Mein Makro sieht wie folgt aus:
Sub DatenEintragen()
Dim p as String 'Pfad
Dim f as string 'File
Dim s as string 'Sheet
Dim r as string 'zelle
ThisWorkbook.Activate
Range("E6").Select 'E6 ist immer Startposition der Einträge
p = Range ("B6").Value 'Pfad im aktiven Sheet in Spalte B, ab Zeile 6
f = Range ("C6").Value 'Dateiname im aktiven Sheet in Sp C, ab Zeile 6
s = Range = "Tabelle1" 'Sheet in Quelldateien heisst immer "Tabelle1"
r = Range ("E4").Value 'Zelle im aktiven Sheet in Zeile 4, ab Spalte E
ActiveCell.Value = getvalue(p, f, s, r)
End Sub

Private Function getvalue(path, file, sheet, ref)
'holt einen Wert aus geschlossener Datei
Dim arg as String
'sicherstellen, dass das File existiert
If Right(path, 1) <> "\" then path = path & "\"
If Dir(path & file) = "" Then
getvalue = "File not found"
Exit Function
End if
'Wert holen und arg zuweisen
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Range("A1").Address(, , xlR1C1)
getvalue = ExecuteExcel4Macro(arg)
End Function

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleiffe einbauen - Werte von Variablen ändern
09.11.2005 13:53:07
Variablen
Hallo Peter,
zum Verständnis:
dein abzuarbeitender Zeilenbereich geht von B6 bis z.B. C20;
die Rangeangabe zu Zeile 6 ist in E4, zu Zeile 7 in F4 usw. abgelegt?
Liessen sich die Rangeangaben in der gleichen Zeile platzieren?
fG
Rolf
AW: Schleiffe einbauen - Werte von Variablen ändern
09.11.2005 14:25:33
Variablen
Hallo Rolf
Nein der Range ist immer auf Zeile 4 enhalten, da aus allen verschlossenen Dateien die gleichen Zellwerte abgefragt werden.
Die Idee ist, dass alle externen Daten pro Quelldatei in einer Zeile in verschiedenen Spalten abgefüllt werden.
Beispielsweise Zeile 6, hier ist in Spalte B der Pfad, in Spalte C der Name der ersten Datei enthalten, die Spalte D hat überhaupt keine Werte und ab Spalte E werden dann die externen Werte eingetragen. Welche Zellreferenzen dies in den geschlossenen Dateien betrifft, ist in Zeile 4 ersichtlich.
Bei Zeile 7 ist wieder die gleiche Anordnung, das heisst in Spalte B ein anderer Pfad, in Spalte C ein anderer Dateiname, D ist leer und ab Spalte E sind wiederum die externen Werte eingetragen. Auch aus der zweiten geschlossenen Datei werden die Werte der Zellbezüge gemäss Zeile 4 herausgelesen.
Die Anzahl Dateien, aus denen herausgelesen wird als auch die Anzahl der Zellreferenzen, aus welchen Werte interessieren, können sich verändern (= zunehmen).
Freundlicher Gruss
Peter
Anzeige
AW: Schleiffe einbauen - Werte von Variablen ändern
09.11.2005 14:41:10
Variablen
Hallo Peter,
wenn ich dich richtig verstanden habe,
müßte das gehen.
fG
Rolf

Sub daten_holen()
Dim Bereich As Range, Feld As Range
Dim p$, f$, r$, n%
Const s$ = "Tabelle1"
n = Cells(65536, 2).End(xlUp).Row
r = Range("E4")
Set Bereich = Range("B6:B" & n)
For Each Feld In Bereich
p = Feld.Value
f = Feld.Offset(0, 1)
Feld.Offset(0, 3) = getvalue(p, f, s, r)
Next
End Sub

AW: Schleiffe einbauen - Werte von Variablen ändern
09.11.2005 15:16:36
Variablen
Hallo Rolf
Das ist Klasse. Jetzt hat es mir die Spalte E abgefüllt. es handelt sich um sämtliche gewünschten Werte aus den verschiedenen Quell-Dateien mit dem Zellbezug, der in E4 enthalten ist. Ich habe allerdings auch in F4, G4 und H4 je einen Zellbezug drin, was zu Einträgen in den Spalten F, G und H führen sollte. Später kommen weitere Zellbezüge in den Zellen I4, J4 ...
Kannst du mir auch hier noch weiterhelfen?
Herzlichen Dank
Peter
PS.: Ich melde mich dann morgen wieder, da ich bald das Büro verlassen muss
Anzeige
Daten aus geschlossenen Dateienholen
09.11.2005 16:11:03
Rolf
Hallo Peter,
dein Wunsch ist mir Befehl.
hG
Rolf
Option Explicit

Sub daten_holen()
Dim Bereich As Range, Feld As Range
Dim QArea As Range, QCell As Range
Dim p$, f$, r$, n%, m%
Const s$ = "Tabelle1"
n = Cells(65536, 2).End(xlUp).Row
m = Cells(4, 256).End(xlToLeft).Column
Set Bereich = Range("B6:B" & n)
Set QArea = Range(Cells(4, 5), Cells(4, m))
For Each Feld In Bereich
p = Feld.Value
f = Feld.Offset(0, 1)
For Each QCell In QArea
r = QCell.Value
Cells(Feld.Row, QCell.Column) = getvalue(p, f, s, r)
Next
Next
End Sub

AW: Daten aus geschlossenen Dateienholen
10.11.2005 14:08:20
Peter
Hallo Rolf
Ich bin sprachlos - und sehr dankbar. Es funktioniert tadellos!
Freundlicher Gruss
Peter
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige