Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1108to1112
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
Inhaltsverzeichnis

Daten aus geschlossenen Mappen addieren

Daten aus geschlossenen Mappen addieren
Wolfgang
Hallo,
in einem Ordner befinden sich insgesamt 10 Excel-Mappen, alle mit dem gleichen Format. Wäre denkbar, dass ich in der aktuellen Mappe auf die geschlossenen Mappen zugreifen kann und die Werte aus jeweils C7:K23 addiert in die aktuelle Mappe -jeweils auch Tabelle "Daten"- importieren kann (alle Daten aus C7 somit in C7, C8 in C8 usw.) Schön wäre, wenn ich vorab über ein UF vorbestimmen könnte, welche Mappen in diesem Ordner angesprochen werden sollen. Ich habe versucht, unter Rechereche ähnliches zu finden, konnte aber so wirklich nicht etwas entdecken. - Danke schon jetzt für die Rückmeldungen.
Herzliche Grüße
Wolfgang
Super Josef, Danke - das ist es !
25.10.2009 08:10:25
Wolfgang
Hallo Josef,
genau das ist es. - Vielleicht noch eine Frage: lassen sich die CheckBoxes evtl. so einstellen, dass sie direkt schon beim Anzeigen das Häkchen beeinhalten? - Danke schon jetzt wieder für die Rückmeldung - insbesondere aber schon jetzt herzlichen Dank für die Überlassung der Beispielsmappe und Deine Arbeit.
Gruß - Wolfgang
Variante - Daten aus geschlossenen Mappen addieren
25.10.2009 09:51:21
fcs
Hallo Wolfgang,
hier noch eine Variante.
Die zu addierenden Dateien werden in einem Dateidialogfenster mit Multiselektion ausgewählt.
Die Berechnungsformeln werden temporär in die Zellen des Bereichsgeschrieben und die Ergebnisse in einem Array summiert und zum Schluss in den Bereich geschrieben.
Gruß
Franz
'Erstellt unter Excel 2007, Windows Vista
'fcs 2009-10-25
Sub AddierenBreich()
'Wert aus Bereich in mehreren Dateien summieren ohne Öffnen der Dateien
'Variante mit festvorgegebenem Bereich
Call DatenAddieren(BlattName:=ActiveSheet.Name, _
Bereich:=ActiveSheet.Range("C7:K23"))
'Variante mit Bereichsauswahl
'  Call DatenAddieren(BlattName:=ActiveSheet.Name, _
Bereich:=Application.InputBox( _
Prompt:="Bitte den zu summierenden Bereich selektieren", _
Title:="Daten aus mehreren Dateien addieren", _
Default:="C7:K23", _
Type:=8))
Fehler:
With Err
If .Number  0 Then
Select Case .Number
Case 424 'Bereichsauswahl wurde abgebrochen
'do nothing
Case Else
MsgBox "Fehler-Nr.:" & .Number & vbLf & .Description
End Select
End If
End With
End Sub
Sub DatenAddieren(BlattName As String, Bereich As Range)
'Summieren der Zell-Inhalte aus mehreren Dateien, _
dabei ist der Tabellenblatt-Name identisch mit dem aktiven Blatt
'BlattName  = Name des Blatts aus dem Werte eingelesen werden sollen
'Bereich    = Zellen-Bereich in dem Summen berechnet werden sollen
Dim Zelle As Range
Dim sFormel As String, iPos As Integer
Dim iI As Integer, sDateien As String, arrSummen() As Double
On Error GoTo Fehler
'Array für Summenwerte dimensionieren
With Bereich
ReDim arrSummen(.Row To .Row + .Rows.Count - 1, .Column _
To .Column + .Columns.Count - 1)
End With
'Datei-Auswahl-Dialog anzeigen
With Application.FileDialog(msoFileDialogOpen)
.Title = "Bitte zu addierende Dateien auswählen " _
& "- Mehrfachauswahl ist möglich"
.AllowMultiSelect = True
.ButtonName = "Auswählen"
.InitialView = msoFileDialogViewList
.InitialFileName = VBA.CurDir & "\*.xl*" 'Pfad ggf. anpassen
If .Show = -1 Then
Bereich.ClearContents
'Gewählte Dateien abarbeiten
For iI = 1 To .SelectedItems.Count
'einzutragende Arrayformel für Bereich ermitteln und einfügen
'Position des letzten Pfadtrennzeichens ermitteln
iPos = InStrRev(.SelectedItems(iI), Application.PathSeparator)
'"='C:\Users\Public\Test\01\[Data03.xls]Daten'!R7C3:R23C11"
sFormel = "='" & Left(.SelectedItems(iI), iPos) _
& "[" & Mid(.SelectedItems(iI), iPos + 1) & "]" _
& BlattName & "'!" & Bereich.Address(ReferenceStyle:=xlR1C1)
Bereich.FormulaArray = sFormel
Bereich.Calculate
'Formelergebnisse im Array addieren
For Each Zelle In Bereich
arrSummen(Zelle.Row, Zelle.Column) = _
arrSummen(Zelle.Row, Zelle.Column) + Zelle.Value
Next
'Ausgewählte Dateien in Variable zusammenfassen
sDateien = sDateien & vbLf & Mid(.SelectedItems(iI), iPos + 1)
Next
'Summierte Werte aus Array in Bereich eintragen
'Formellöschen
Bereich.ClearContents
'Werte aus Array mit Summen eintragen
Bereich.Value = arrSummen
MsgBox "Werte aus folgenden Dateien wurden addiert:" & vbLf & sDateien, _
vbOKOnly, "Daten aus mehreren Dateien addieren"
End If
End With
Fehler:
With Err
If .Number  0 Then
Select Case .Number
Case 13 'Typen unverträglich
MsgBox "Fehler-Nr.:" & .Number & vbLf & .Description & vbLf & vbLf _
& "In einer der selektierten Dateien steht im Bereich Text!"
Bereich.ClearContents
Case Else
MsgBox "Fehler-Nr.:" & .Number & vbLf & .Description
End Select
End If
End With
Set Zelle = Nothing
ReDim arrSummen(0, 0)
End Sub

Anzeige
AW: Variante - Daten aus geschlossenen Mappen addieren
25.10.2009 10:28:53
Wolfgang
Hallo Franz,
erneut herzlichen Dank für Deine Rückmeldung und die Codes. Ich habe sie soeben getestet und kann feststellen, dass die Abarbeitung/das Addieren doch schneller läuft, als in dem Beispiel von Josef. Ich würde nun gerne versuchen, eine Symbiose hinzubekommen. Gut gefällt mir in Josefs Vorschlag der Weg des Aufrufens der Dateien (kann hier schon direkt in den Textfenstern den Pfad bzw. Tabellenblatt etc. vorbestimmen, ggfs. aber dennoch direkt wieder ändern) gut an Deinem Code gefällt mir die Geschwindigkeit. Danke nochmals für die Rückmeldung.
Herzliche Grüße
Wolfgang
Anzeige
AW: Variante - Daten aus geschlossenen Mappen addieren
25.10.2009 12:04:37
fcs
Hallo Wolfgang,
ich hab meine Variante mal in die Userform vom Sepp integriert.
https://www.herber.de/bbs/user/65326.xls
Zusätzlich werden der Tabellenname und der Bereich in der Initialisierungs-Routine mit Werten vorbelegt.
Die Dateiauswahl in der Listbox erfolgt jetzt so wie im Windowsexplorer (Multiselect-Extended), kannst du aber unter den Eigenschaften der Listbox auch wieder auf Multiselect setzen, wenn dir das nicht gefällt.
Gruß
Franz
AW: Variante - Daten aus geschlossenen Mappen addieren
25.10.2009 12:46:22
Wolfgang
Hallo Fanz,
recht herzlichen Dank für Deine erneute Rückmeldung und Deine Ausarbeitungen, der Code läuft ja so erheblich schneller. Ich war auch schon angefangen, bin aber schon dabei auf Probleme gestossen. Vielleicht eine Bitte/Frage noch. Es wird so sein, dass überwiegend ein fester Ordner mit bestimmten Dateien vorhanden sein wird. Wäre denkbar, dass die CheckBoxes direkt schon "angehakt" sind? - Ich habe es versucht, unter Eigenschaften zu finden/klären. Danke schon jetzt wieder für Deine Rückmeldung.
Gruß - Wolfgang
Anzeige
AW: Variante - Daten aus geschlossenen Mappen addieren
25.10.2009 15:40:56
fcs
Hallo Wolfgang,
dazu muss du die Initialisierungsprozedur des UF wie folgt anpassen.
Gruß
Franz
Private Sub UserForm_Initialize()
Dim strPath As String, arrDateien
Dim objF() As Object, lngRes As Long, lngC As Long
'Startverzeichnis für Userform
Me.txtDir = "C:\Users\Public\Test\01"                         'Anpassen !!
'Liste der vorab zu markierenden Dateien
arrDateien = Array("Data01.xls", "Data02.xls", "Data03.xls")  'Anpassen !!
Me.txtTab = ActiveSheet.Name
Me.txtRng = "C7:K23"
With ListBox1
If txtDir  "" Then
.Clear
lngRes = FileSearchINFO(objF, txtDir, "*.xl*", False)
If lngRes > 0 Then
For lngC = 0 To lngRes - 1
.AddItem objF(lngC).Name
Next
End If
End If
For lngC = LBound(arrDateien) To UBound(arrDateien)
For lngRes = 0 To .ListCount - 1
If LCase(arrDateien(lngC)) = LCase(.List(lngRes, 0)) Then .Selected(lngRes) = True
Next
Next
End With
End Sub

Anzeige
Danke Franz, weitere Frage erledigt.
25.10.2009 15:25:46
Wolfgang
Hallo Franz,
bezüglich meiner weiteren Frage bin ich unter Recherche fündig geworden, so dass sich die Frage erledigt hat. Ich möchte mich an dieser Stelle nochmals recht herzlich für Deine Rückmeldungen und Ausarbeitungen bedanken ! - Einen schönen Sonntag noch.
Gruß - Wolfgang

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige