Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
804to808
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
804to808
804to808
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Daten aus verschiedenen geschlossenen Dateien imp.

Daten aus verschiedenen geschlossenen Dateien imp.
24.09.2006 21:38:08
Peter
Guten Abend
Dieses Forum half mir mit meiner ursprünglichen Problemstellung:
Ich importiere aus einer Vielzahl geschlossener Tabellen (die während der Bearbeitung auch geschlossen bleiben) jeweils die gleichen Zellen in eine Auswertungsdatei.
In Spalte A (ab Zeile 5) der Auswertungsdatei steht der Quellpfad der Dateien aus welchen ein Import erfolgen soll, in Spalte B jeweils, aus welcher Datei importiert werden soll.
Die Daten werden jeweils in die entsprechende Zeile (ab Spalte K) geschrieben. Im Bereich K3: ?3 steht die Zelle, aus der jeweils importiert werden soll.
So steht beispielsweise in K3: S3; in L3: AE3 in M3: BA3 und in N3: A3.
Nun zur erweiterten Problemstellung:
Ich möchte nun in der Zeile 3 der Auswertungsdatei (ab Spalte K) nur noch die Spalte der zu importierenden Zelle (resp. des Inhalts) angeben und die Zeile jeweils in Spalte C vermerken.
Das heisst, auf das obige Beispiel bezogen, würde in K3 nur noch S, in L3 nur noch AE, in M3 nur noch BA und in N3 nur noch A stehen. Die Zeilennummer 3 würde dann in Spalte C der entsprechenden Zeile stehen.
Um die zu importierende Zelle zu berechnen, muss der Code dann deshalb die Zelladresse aus der Spaltenbezeichnung in Zeile 3 und der Zeilenbezeichnung in Spalte C zusammensetzen.
Mir ist leider nicht ganz klar, wie ich das im bestehenden Code umsetze.
Kann mir da jemand weiterhelfen?
Vielen Dank!
Peter
Option Explicit
Sub DatenEintragen()
ThisWorkbook.Activate
Dim Bereich As Range, Feld As Range
Dim QArea As Range, QCell As Range
Dim p$, f$, r$, n%, s$, m%
Dim Anzahl$
Dim aktSheet$
aktSheet = ActiveSheet.Name
s = "Tabelle1"
n = Cells(65536, 1).End(xlUp).Row 'ermittelt letzten Eintrag in Spalte A (Pfad)
m = Cells(3, 256).End(xlToLeft).Column 'ermittelt letzten Eintrag in Zeile 3 (Ref zu Import)
r = Range("K3") 'legt ersten Eintrag in Zeile 3 fest (Ref zu Import)
Set Bereich = Range("A5:A" & n) 'Bereich = alle Zellen mit Pfadangabe
Set QArea = Range(Cells(3, 11), Cells(3, m)) 'Bereich K3 : ?3 = alle Zellen mit Ref Angabe zu Import
Anzahl = 0
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)
Application.StatusBar = "Daten werden importiert aus " & p & f & " - Eintrag in Zeile " & Anzahl + 5
Next
Anzahl = Anzahl + 1
Next
End Sub

Private Function getvalue(path, File, sheet, ref)
'retrieves a value from a closed workbook
Dim arg As String
'make sure the file exists
If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & File) = "" Then
getvalue = "File not found"
Exit Function
End If
'create the argument
arg = "'" & path & "[" & File & "]" & sheet & "'!" & _
Range(ref).Range("A1").Address(, , xlR1C1)
''Debug.Print arg
'execute an xlm macro
getvalue = ExecuteExcel4Macro(arg)
End Function

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus verschiedenen geschlossenen Dateien
24.09.2006 21:46:50
Matthias
Hallo Peter,
das müsste eigentlich so gehen:

For Each QCell In QArea
r = QCell.Value & Cells(QCell.Row,3).Value

Gruß Matthias
AW: Daten aus verschiedenen geschlossenen Dateien
24.09.2006 22:07:53
Peter
Hallo Matthias
Dein Beitrag hat mich auf die Sprünge gebracht. Zwar funktionierte die Ergänzung des Codes nicht auf Anhieb und als ich mir den Wert von r mittels debug.print anzeigen liess, merkte ich, dass er nur die Spaltenbezeichnung aus Zeile 3 nahm. Irgendwie hat er aus "Cells(QCell.Row,3).Value" nichts gemacht (weshalb ist mir leider nicht klar).
Doch nun habe ich mittels einer weiteren Variable Zeile den Zellwert mit Feld:offset (0,2) abgefragt.
Im Ergebnis funktioniert es. Wenn für die klar ist, weshalb "Cells(QCell.Row,3).Value
" nicht funktioniert hast, würde mich das noch interessieren, doch Hauptsache, es funktioniert nun.
Herzlichen Dank, Peter
p = Feld.Value
f = Feld.Offset(0, 1)
zeile = Feld.Offset(0, 2)
For Each QCell In QArea
r = QCell.Value & zeile
Anzeige

152 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige