Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

vba, in Mappen, Text zählen

vba, in Mappen, Text zählen
20.01.2019 11:15:45
Fred
Guten Tag Excelenten,
ich möchte aus einer Mappe herraus Text zählen, welcher in 3 anderen Mappen vorhanden ist. Ich selbst bekomme dieses vba leider nicht gebacken.
Näheres:
1) 3 geschlossene Mappen mit gleicher Anzahl von Blättern,- im Aufbau identisch. Die Mappen befinden sich im Unterordner "Auswertung".
2) Die Mappen haben jeweils 11 Arbeitsblätter wobei in den Blättern mit Blattnamen 1, 2, 3, 4, 5, 6, 7, 8 und 9 der gesuchte Text - dieser befindet sich jeweils in der Spalte 2 gezählt werden soll.
3) Von meinem ausführenden Tabellenblatt möchte ich den Text, der in H5 steht, nun von den genannten Mappen/Tabellenblättern gezählt bekommen. Die Anzahl soll in A1 ausgegeben werden.
Wohl auch relevant: In den zu durchsuchenden Arbeitsblättern/ der zu durchsuchenden Spalte 2 stehen die Daten jeweils in einer gefilterten Tabelle.
Kann sich einer von den Excel-Experten vielleicht die Mühe machen, mir passende Lösung zu schreiben ?
Mit freundlichen Gruß
Fred Neumann

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Danke Franz !
20.01.2019 18:58:39
Fred
Hallo Franz,
vielen vielen Dank für deine Mühe mit dem vba.
Genau richtig!!!
Eine ganz große Hilfe für mich!
Super! wie du relevantes im Makro so toll kommentiert hast.
Mit freundlichen Gruß
Fred Neumann
vba- Mappe öffnen & aktualisieren
21.01.2019 09:03:27
Fred
Guten Morgen Excel-Profis,
Franz hat mir am Sonntag ein vba geschrieben, welches auch wunderbar funktioniert.
Es werden im Ordner "Auswertung" Mappen geöffnet und aus den Blättern 1-9 bestimmte Daten gezählt ....

Sub Zaehlen_H5_extern_visible()
'sichtbare Zellen in Zellbereich in externen Dateien auswerten
Dim varSuch, dblZaehler As Double
Dim wkb As Workbook, wks As Worksheet
Dim rngCount As Range, Zelle As Range, rngResult As Range
Dim varFiles(), varFile, strPath, intF As Integer
Dim StatusCalc As Long
With ActiveSheet
Set rngResult = .Range("A1") 'Ergebnis-Zelle
varSuch = .Range("H5").Value 'Suchwert
End With
'makrobremsen lösen
With Application
.EnableEvents = False
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
'Verzeichnis mit zu durchsuchenden Zellen
strPath = ActiveWorkbook.Path & "\Auswertung"
'Excel-Dateien im Verzeichnis suchen
varFile = VBA.Dir(strPath & "\*.xls*")
intF = 0
Do Until varFile = ""
intF = intF + 1
ReDim Preserve varFiles(1 To intF)
varFiles(intF) = strPath & "\" & varFile
varFile = Dir
Loop
If intF = 0 Then
MsgBox "Keine Excel-Dateien in Verzeichnis" & vbLf & strPath
GoTo Beenden
End If
dblZaehler = 0
'Dateien abarbeiten
For intF = 1 To UBound(varFiles)
Set wkb = Application.Workbooks.Open(varFiles(intF), ReadOnly:=True)
For Each wks In wkb.Worksheets
Select Case wks.Name
Case "1", "2", "3", "4", "5", "6", "7", "8", "9"
'auszuwertender Zellbereich
With wks
'wenn Daten in 2. Spalte einer Tabelle (Listobject) stehen
Set rngCount = .ListObjects(1).DataBodyRange.Columns(2)
'Alternative, wenn Daten in Spalte B des Tabellenblatts stehen
'                    Set rngCount = .Range(.Cells(1, 2), .Cells(.UsedRange.Row + .UsedRange. _
Rows.Count - 1, 2))
End With
'sichtbare Zellen im Bereich auswerten
For Each Zelle In rngCount.Cells
If Zelle.EntireRow.Hidden = False Then
If Zelle.Value Like varSuch Then
dblZaehler = dblZaehler + 1
End If
End If
Next
End Select
Next
'Datei wieder schliessen
Set rngCount = Nothing
Set wks = Nothing
wkb.Close savechanges:=False
Set wkb = Nothing
Next
rngResult.Value = dblZaehler
Erase varFiles
Beenden:
'makrobremsen zurücksetzen
With Application
.EnableEvents = True
.Calculation = StatusCalc
.ScreenUpdating = True
End With
End Sub

Im nachhinein hat sich allerdings ein wohl kleineres Problem herraus gestellt.
Die im Ordner "Auswertung" zu öffnenden Mappen bzw. Arbeitsblätter beinhalten Tabellen die in Verbindung einer Datenbank stehen.
Habe ich also nicht zuvor die Mappen geöffnet und aktualisiert, sucht das Makro in nicht aktuellen Daten. (obwohl bei Verbindungen, Eigenschaften "Daten beim öffnen der Datei aktualisieren" angekreuzt ist)
Ich weis nicht, wo und was ich an dem vba ändern muss, damit es beim öffnen aktualisiert.
Irgendwo ein "refresh", "Application.AskToUpdateLinks = True" rein, oder im anderen Modus öffnen?
Kann mir jemand vielleicht einen Tip geben!?
Mit freundlichen Gruß
Fred Neumann
Anzeige
AW: vba- Mappe öffnen & aktualisieren
21.01.2019 23:44:34
fcs
Hallo Fred,
grundsätzlich kann man Verknüpfungen und Datenverbindungen wie folgt aktualisieren. Zusätzlich evtl. noch eine Neuberechnung machen
        Set wkb = Application.Workbooks.Open(varFiles(intF), ReadOnly:=True, UpdateLinks:=True)
wkb.RefreshAll
Application.Calculate

Es kann aber sein, das die Aktualisierung der Datenverbindungen nicht abgeschlossen ist, bevor das Makro fortgesetzt wird.
Ich meine es gibt eine Einstellung, die das verhindert, hab sie aber nicht gefinden.
Evtl. muss man mit OnTime arbeiten um Zeit zu lassen für die Aktualiserung.
Bei mehreren Dateien wird dies aber kompliziert.
LG
Franz
Anzeige
AW: vba- Mappe öffnen & aktualisieren
22.01.2019 11:34:48
Fred
Hallo Franz,
danke für deine Antwort!
Eine Aktualisierung der Datenverbindungen wird leider dennoch nicht abgeschlossen.
Ich werde wohl vor deinen Makro ein anderes setzen, welches die Dateien (3) einzeln aufruft, aktualisiert (RefreshAll) und nach gewisser Zeit (OnTime) speichert und schließt.
Mit freundlichen Gruß
Fred Neumann
AW: vba- Mappe öffnen & aktualisieren
22.01.2019 23:39:51
fcs
Hallo Fred,
ich hab die Ontime-Funktion jetzt integriert. Dazu waren etliche Anpassungen erforderlich.
https://www.herber.de/bbs/user/127013.xlsm
LG
Franz
AW: vba- Mappe öffnen & aktualisieren
23.01.2019 09:59:18
Fred
Hallo Franz,
herzlichen Dank für deine kompetente Arbeit!
Mein Arbeitsablauf ist ja der, dass ich einmal die Woche ca. 400 Datensätze eingebe. Nach Eingabe & Speichern benötige ich zusätzlich den „Zählwert“,- welcher durch weitere Access,- Excel Dateien ermittelt wird und nachgetragen wird,- bevor es zum nächsten DS geht .
Ich hatte ja gestern ein Makro geschrieben, welches vor deiner ersten Version ausgeführt wird, gewünschte Dateien öffnet, aktualisiert und speichert. Liegt schon wieder im Papierkorb!
Mit deiner zweiten Version (Datenaktualisierung und überhaupt diesen Wert zu ermitteln) spare ich mal richtig an Zeit und Aufwand,- ein wahrer Mehrwert!
Nochmals vielen Dank und Verneigung :-)
Mit freundlichen Gruß
Fred Neumann
Anzeige

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige