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

Werte aus andere Excel datei

Werte aus andere Excel datei
22.02.2007 11:12:08
Ralf
Hallo
Kann mir einer von euch profis helfen ? und zwar habe ich hier ein makro in einer arbeitsmappe Das zellen ausliest und dann werte kopiert. Jetzt möchte ich, das dieses makro auch auf eine oder mehrere Excel Dateien zugreift und die ausliest zB Dennis.xls

Sub Auswertung()
Dim ws1 As Worksheet
Set ws1 = Worksheets("Auswertung")
Set ws2 = Worksheets("Daten")
For i = 1 To Sheets.Count
If Sheets(i).Name <> "Daten" And Sheets(i).Name <> "Auswertung" And Sheets(i).Name <> "Monatsblatt" Then
ws2.Cells(i, 1).Value = Sheets(i).Name
End If
Next i
f = 0
anz = ws2.Cells(65356, 1).End(xlUp).Row
anz2 = ws1.Cells(65356, 3).End(xlUp).Row
ws1.Range("C4:C" & anz2 + 1).ClearContents
For z = 1 To anz
If ws2.Cells(z, 1) <> "" Then
tabe = ws2.Cells(z, 1)
Set ws3 = Worksheets(tabe)
For z1 = 8 To 100
f = 0
If ws3.Cells(z1, 3) <> "" Then
anz1 = ws1.Cells(65356, 2).End(xlUp).Row
For z2 = 4 To anz1
If ws1.Cells(z2, 2) <> "" Then
If ws1.Cells(z2, 2) = ws3.Cells(z1, 3) Then
ws1.Cells(z2, 3) = ws1.Cells(z2, 3) + ws3.Cells(z1, 4)
f = 1
End If
End If
Next z2
If f = 0 Then
ws1.Cells(z2, 2) = ws3.Cells(z1, 3)
ws1.Cells(z2, 3) = ws1.Cells(z2, 3) + ws3.Cells(z1, 4)
End If
End If
Next z1
End If
Next z
End Sub

MfG Ralf

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

Betreff
Datum
Anwender
Anzeige
AW: Werte aus andere Excel datei
22.02.2007 22:42:26
fcs
Hallo Ralf,
prinzipiell kann man entsprechende Workbook-Objektvariablen für die beiden Arbeitsmappen (Ausweredatei bzw. Quelldaten-Datei deklarieren und dann auch jeweils die Anwisungen für das Setzen der Worksheets-Objektvariablen entsprechend anpassen. Die Quellsaten-Datei wird über einen Dialog ausgewählt.
Da ich ich nicht weiss welche Tabellen-Blätter in der Auswertedatei bzw. der Quelldatei enthalten sind konnte ich den Code nicht komplett umstricken. Hier muss du noch ein paar Anpassungen machen.
Gruss
Franz
Sub Auswertung()
Dim wbThis As Workbook, wbQuelle As Workbook, strQuelle
Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet
Set wbThis = ThisWorkbook
Set ws1 = wbThis.Worksheets("Auswertung")
'Arbeitsmappe mit den Quelldaten auswählen
strQuelle = Application.GetOpenFilename(FileFilter:="Excel (*.xls),*.xls", Title:="Quelldatei auswählen", _
MultiSelect:=False)
If strQuelle = False Then Exit Sub
Set wbQuelle = Application.Workbooks.Open(FileName:=strQuelle, ReadOnly:=True)
'nach dieser Zeile muss bei allen Verweisen auf Sheets und Worksheets-Objekten auch immer das _
das entsprechende Workbook (wbThis oder wbQuelle) mit angegeben werden bzw. mit entsprechenden _
With-...-End With Anweisungen gearbeitet werden. Ich hab mal provisorisch wbXXX eingetragen, da _
ich nicht immer erkennen konnte, welche Tabellen in dieser Arbeitsmappe sein werden und welche in der Quell-Arbeitsmappe
Set ws2 = wbXXX.Worksheets("Daten")
With wbXXX
For i = 1 To .Sheets.Count
If .Sheets(i).Name <> "Daten" And .Sheets(i).Name <> "Auswertung" And .Sheets(i).Name <> "Monatsblatt" Then
ws2.Cells(i, 1).Value = .Sheets(i).Name
End If
Next i
End With
f = 0
anz = ws2.Cells(65356, 1).End(xlUp).Row
anz2 = ws1.Cells(65356, 3).End(xlUp).Row
ws1.Range("C4:C" & anz2 + 1).ClearContents
For z = 1 To anz
If ws2.Cells(z, 1) <> "" Then
tabe = ws2.Cells(z, 1)
Set ws3 = wbXXX.Worksheets(tabe)
For z1 = 8 To 100
f = 0
If ws3.Cells(z1, 3) <> "" Then
anz1 = ws1.Cells(65356, 2).End(xlUp).Row
For z2 = 4 To anz1
If ws1.Cells(z2, 2) <> "" Then
If ws1.Cells(z2, 2) = ws3.Cells(z1, 3) Then
ws1.Cells(z2, 3) = ws1.Cells(z2, 3) + ws3.Cells(z1, 4)
f = 1
End If
End If
Next z2
If f = 0 Then
ws1.Cells(z2, 2) = ws3.Cells(z1, 3)
ws1.Cells(z2, 3) = ws1.Cells(z2, 3) + ws3.Cells(z1, 4)
End If
End If
Next z1
End If
Next z
wbQuelle.Close savechanges:=False
End Sub

Anzeige
AW: Werte aus andere Excel datei
23.02.2007 10:12:48
Ralf
Hallo Franz
Habe versucht Die formel so umzustellen Wie Du es Beschrieben hast aber Das Funktioniert nicht so richtig bei mir. Bin auch ganz ehrlich habe nicht so ganz verstanden was Du wolltest.
Also ich habe in Reihe 7 von oben den namen der Quelldatei eingegeben also wo Du das * hattest habe ich dann Dennis.Xls eingetragen.
und wo Du wbxxx habe ich dann auch Dennis eingetragen.
Oder habe ich da etwas falsch gemacht ?
Also Die Datei die ausgelesen werden soll ist Dennis.xls
Und dort wo die Auswertung statfinden soll ist Auswertung.xls
sorry bin kein profi
MfG
Ralf
Anzeige
AW: Werte aus andere Excel datei
24.02.2007 07:49:16
fcs
Hallo Ralf,
das Problem ist, dass ich nicht weiss welche der Tabellen in der Auswertedatei "Auswertung.xls" sind und welche Tabellen sich in der Quelldaten-Datei (z.B. Denis.xls) befinden.
Das Makro selber muss du in der Datei "Auswertung.xls" einrichten. Alle Tabellenblätter, die sich in der Datei "Auswertung.xls" befinden kannst du dann über die Objekt-Variable "wbThis" ansprechen - z.B.: wbThis.Worksheets("Auswertung").
Die Datei aus der die Daten eingelesen werden sollen wird nach der Dateiauswahl via Dateidialog der Objektvariablen "wbQuelle" zugewiesen. Die Zeile 7, mit der der Dateidialog angezeigt wird, solltes du nur ändern, wenn du die angeszeigte Dateiauswahlliste einschränken möchtest. Mit "*.xls" werden alle Exceldateien des gewählten Verzeichnisses angezeigt.
Das "wbXXX" in meinem Makro-Vorschlag muss du jetzt entweder durch "wbThis" oder "wbQuelle" ersetzen, je nachdem in welcher Datei sich die Tabellenblätter befinden, in denen bzw. mit denen die jeweiligen Aktionen stattfinden sollen.
Ich hab das Makro jetzt so angepasst, dass sich in der Datei "Auswertung.xls" die Tabellenblätter "Auswertung" und "Daten" befinden.
Gruss
Franz
Sub Auswertung()
Dim wbThis As Workbook, wbQuelle As Workbook, strQuelle
Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet
Set wbThis = ThisWorkbook
Set ws1 = wbThis.Worksheets("Auswertung")
'Arbeitsmappe mit den Quelldaten auswählen
strQuelle = Application.GetOpenFilename(FileFilter:="Excel (*.xls),*.xls", Title:="Quelldatei auswählen", _
MultiSelect:=False)
If strQuelle = False Then Exit Sub
Set wbQuelle = Application.Workbooks.Open(FileName:=strQuelle, ReadOnly:=True)
Set ws2 = wbThis.Worksheets("Daten")
'vorhandene Tabellenblatt-Namen in Spalte A im Blatt "Daten" löschen
ws2.Columns(1).ClearContents
'Tabellenblatt-Namen aus der Datendatei auslesen und in Spalte A im Blatt "Daten" eineintragen
With wbQuelle
For i = 1 To .Sheets.Count
If .Sheets(i).Name <> "Daten" And .Sheets(i).Name <> "Auswertung" And .Sheets(i).Name <> "Monatsblatt" Then
ws2.Cells(i, 1).Value = .Sheets(i).Name
End If
Next i
End With
f = 0
'Letzte Zeile mit eingelesenen Tabellenblattnamen ermitteln
anz = ws2.Cells(65356, 1).End(xlUp).Row
'alte Daten in Auswertung Spalte C ab Zeile 4 löschen
anz2 = ws1.Cells(65356, 3).End(xlUp).Row
ws1.Range("C4:C" & anz2 + 1).ClearContents
'Tabellen der Quelldatei auswerten
For z = 1 To anz
If ws2.Cells(z, 1) <> "" Then
tabe = ws2.Cells(z, 1)
Set ws3 = wbQuelle.Worksheets(tabe)
For z1 = 8 To 100
f = 0
If ws3.Cells(z1, 3) <> "" Then
anz1 = ws1.Cells(65356, 2).End(xlUp).Row
For z2 = 4 To anz1
If ws1.Cells(z2, 2) <> "" Then
If ws1.Cells(z2, 2) = ws3.Cells(z1, 3) Then
ws1.Cells(z2, 3) = ws1.Cells(z2, 3) + ws3.Cells(z1, 4)
f = 1
End If
End If
Next z2
If f = 0 Then
ws1.Cells(z2, 2) = ws3.Cells(z1, 3)
ws1.Cells(z2, 3) = ws1.Cells(z2, 3) + ws3.Cells(z1, 4)
End If
End If
Next z1
End If
Next z
'Quelldaten-Datei wieder schließen ohne Spicherung von Änderungen
wbQuelle.Close savechanges:=False
End Sub

Anzeige
AW: Werte aus andere Excel datei
24.02.2007 12:49:56
Ralf
Hallo Franz
Jetzt habe ich verstanden wie Du es gemeint hast.
Aber so ganz ist es leider noch nicht was ich wollte vielleicht kannst Du mir ja noch einmal helfen.
Ich erkläre Dir mal Meine Ausgangslage.
Ich versuche Die Stundenzettel ( hier Dennis ) mit einer extra excel Datei auszuwerten.
Ich habe eine Excel Datei namens Auswertung und 3 - 4 andere Dateien mit den Namen meiner Mitarbeiter wie beim Beispiel Dennis.
Die Datein meiner Mitarbeiter werden jetzt von Ihnen selber ausgefüllt und mir per eMail zugesendet.
Jetzt möchte ich, Das ich mit der Datei Auswertung die Dateien meiner Mitarbeiter auslese und die Werte
in die Datei Auswertung einfüge.
Oder gibt es da noch eine andere Lösung ?
https://www.herber.de/bbs/user/40651.xls ( Auswertung )

Die Datei https://www.herber.de/bbs/user/40652.xls wurde aus Datenschutzgründen gelöscht

( Dennis )
Anzeige
AW: Werte aus andere Excel datei
24.02.2007 18:28:42
fcs
Hallo Ralf,
im Blatt Auswertung war das falsche Makro dem Button zugewiesen. Dies hab ich korrigiert und das Makro noch ein wenig verfeinert.
Du kann jetzt zu Beginn der Auswertung entscheiden, ob die vorhandenen Stunden in Spalte C gelöscht werden sollen. Dies ist dann interessant, wenn du nicht alle Stunden der Mitarbeiter in einer Sitzung auswerten willst/kannst.
Danach kannst du in einer Schleife die Dateien aller Mitarbeiter auswerten. Nach jedem Mitarbeiter wird eine Message-Box angezeigt.
In den Stundendateien der Mitarbeiter kann das ausgeblendete Blatt "Daten" gelöscht werden. Im VBA-Editor der Stundendateien solltest du die Module1 und 2 entfernen. Sie sind überflüssig.
https://www.herber.de/bbs/user/40659.xls (Auswertung.xls)
Gruss
Franz
Anzeige
AW: Werte aus andere Excel datei
25.02.2007 18:51:48
Ralf
Hallo Fraanz
Das ist ja eine super sache viel besser als ich mir es vorgestellt habe
Danke Dir dafür
MfG
Ralf Gerdes

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige