Dateinamen und Artikelanzahl in eine Datei ausgeben
Hallo an alle! Ich bin hier neu, es ist mein erster Schrei nach Hilfe. Ich fange gerade an, VBA für die Arbeit zu lernen. Leider habe ich niemanden der mir helfen kann, wenn ich nicht weiter komme. Bei Excel selber bin ich sehr gut und helfe gerne meinen Kollegen. Bei VBA brauche ich noch so viel Hilfe!
Wir bekommen demnächst 39 Dateien, die z.B. Auflistung von Artikeln beinhalten (ich glaube die Artikelnummer steht gleich in der Spalte A). Ich möchte in einer anderen Datei alle Dateinamen und die entsprechende Artikelanzahl bekommen. Erste Spalte Dateiname (ohne den Pfad), nächste Spalte Anzahl von Artikeln. (Jede Datei wird bestimmt eine Überschriftszeile haben, falls man die Zeilen zählen soll) Die Dateien würde ich in einem bestimmten Ordner speichern. Dort kann auch die Ergebnisdatei gespeichert werden. Brauche ich dafür ein Makro.
Wir bekommen demnächst 39 Dateien, die z.B. Auflistung von Artikeln beinhalten (ich glaube die Artikelnummer steht gleich in der Spalte A). Ich möchte in einer anderen Datei alle Dateinamen und die entsprechende Artikelanzahl bekommen. Erste Spalte Dateiname (ohne den Pfad), nächste Spalte Anzahl von Artikeln. (Jede Datei wird bestimmt eine Überschriftszeile haben, falls man die Zeilen zählen soll) Die Dateien würde ich in einem bestimmten Ordner speichern. Dort kann auch die Ergebnisdatei gespeichert werden. Brauche ich dafür ein Makro.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 296045
Url: https://administrator.de/forum/dateinamen-und-artikelanzahl-in-eine-datei-ausgeben-296045.html
Ausgedruckt am: 15.05.2025 um 22:05 Uhr
13 Kommentare
Neuester Kommentar
Hallo @Heiltor, Willkommen auf Administrator.de!
Kein Problem und schnell gemacht.
Speichere den Code in einem Excel-Sheet und speichere es mit der Endung *.xlsm. Dann packst du alle deine *.xlsx Dateien deren Artikel du in Spalte A zählen willst in den selben Ordner. Dann kannst du den Code im Makrosheet ausführen.
Weitere Kommentare findest du im Code für die essentiellen Codezeilen):
Grüße Uwe
Kein Problem und schnell gemacht.
Speichere den Code in einem Excel-Sheet und speichere es mit der Endung *.xlsm. Dann packst du alle deine *.xlsx Dateien deren Artikel du in Spalte A zählen willst in den selben Ordner. Dann kannst du den Code im Makrosheet ausführen.
Weitere Kommentare findest du im Code für die essentiellen Codezeilen):
Sub ListAndCountProducts()
Dim strPath As String, ws As Worksheet, cFile As String, lngArtikel As Long
Application.DisplayAlerts = False
Application.ScreenUpdating = False
'Pfad in dem die Dateien liegen (Default ist hier der Pfad in dem diese Datei liegt)
strPath = ThisWorkbook.Path
'Alle *.xlsx Dateien suchen
cFile = Dir(strPath & "\*.xlsx")
With ActiveSheet
'Überschriften setzen
With .Range("A1:B1")
.Value = Array("Dateiname", "Artikel")
.Font.Bold = True
End With
'Jede *.xlsx Datei im aktuellen Verzeichnis öffnen und Artikel zählen
Do While cFile <> ""
'Datei öffnen und erstes Sheet referenzieren
Set ws = GetObject(strPath & "\" & cFile).Sheets(1)
'Anzahl an Artikeln ermitteln (Überschrift abziehen)
lngArtikel = (ws.Cells(Rows.Count, "A").End(xlUp).Row) - 1
'Dateiname und Anzahl Artikel in nächte freie Zeile schreiben
.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Resize(1, 2).Value = Array(cFile, lngArtikel)
'Datei wieder schließen
ws.Parent.Close False
'nächste Datei holen
cFile = Dir
Loop
'Spaltenbreiten der Liste anpassen
.Range("A:B").EntireColumn.AutoFit
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
' Fertig
MsgBox "Alle Dateien wurden eingelesen", vbInformation
End Sub
Hallo Heiltor,
, wie immer hier ...
Eine Frage: In den Dateien der Gesellschaften, wo steht dort die Nummer der Filiale und die Artikel (Artikel in Spalte A und Filialnummer in Spalte B ?). Ich interpretiere also das in jedem Sheet die Artikel aller Filialen dieser Gesellschaft untereinander aufgelistet sind, ist das Korrekt?
Am einfachsten du postest einfach mal ein Demo-Sheet, oder nutzt die vielfältigen Formatierungsmöglichkeiten hier im Forum. Merci.
Aber der Grund warum du die Filialen und deren Artikel erneut auflisten willst erschließt sich mir nicht, wenn sie doch schon im ersten Sheet stehen und sich alle Artikel einer Filiale mit dem AutoFilter komfortabel auswählen lassen. Außerdem geht sowas auch mit einer Matrix-Formel
Mit diesen Dateien wird man weitere Sachen machen müssen.
ja ja, kaum reicht man einem den Finger nehmen sie immer gleich die ganze Hand Eine Frage: In den Dateien der Gesellschaften, wo steht dort die Nummer der Filiale und die Artikel (Artikel in Spalte A und Filialnummer in Spalte B ?). Ich interpretiere also das in jedem Sheet die Artikel aller Filialen dieser Gesellschaft untereinander aufgelistet sind, ist das Korrekt?
Am einfachsten du postest einfach mal ein Demo-Sheet, oder nutzt die vielfältigen Formatierungsmöglichkeiten hier im Forum. Merci.
Aber der Grund warum du die Filialen und deren Artikel erneut auflisten willst erschließt sich mir nicht, wenn sie doch schon im ersten Sheet stehen und sich alle Artikel einer Filiale mit dem AutoFilter komfortabel auswählen lassen. Außerdem geht sowas auch mit einer Matrix-Formel
Zitat von @Heiltor:
Es geht darum, dass es 39 Dateien sind, jede für eine Ges., dort stehen aber nicht die Filialen.
Das ist schon klar, die stehen in der Stammdatei, aber wie sind die Daten in den Sheets der Gesellschaften organisiert, also nicht die neu zu schreibenden Daten sondern die vorhandenen ? das war meine eigentlich Frage. Stehen dort die Artikel in Spalte A und die Filialen in Spalte B, oder umgekehrt?Es geht darum, dass es 39 Dateien sind, jede für eine Ges., dort stehen aber nicht die Filialen.
Na ja egal, das kannst du ja in der unten verlinkten Demo selber anpassen.
Hier mal ein Demo-Package nach deiner Beschreibung
demo_package_296045.zip
Benötigst du noch mehr Hilfestellung kannst du mich gerne via PM kontaktieren. Dieser Support ist dann jedoch nicht mehr kostenlos.
Viel Erfolg
Grüße Uwe
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci.
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Im Ordner Daten sind zwei Ges.-Dateien, aber warum stehen da schon die Filialen? Das ist das Problem.
Versteh dich leider immer noch nicht. Naja man hätte auch einfach mal ein zwei Demo-Sheets posten können dann wäre das Missverständnis erledigt gewesen..Als Ergänzung die Referenzen zu den verwendeten Funktionen:
VBA/VBS/WSH/Office Developer Referenzen
- Visual Basic-Referenz
- Windows Script Host -Referenz
- Office 2010 Developer References
- Office 2013 Developer References
- Bücher zu VBA
Grüße und viel Erfolg beim Lernen
Uwe
Die Artikel die in der Ges.-Datei stehen müssen mit den Filialen der entsprechenden Ges. aus der Stammdatei gepaart werden.
Wird ja im Makro gemacht. Also bitte wenn du was lernen willst dann musst du auch was dafür tun, von selbst kommt da nichts, sorry. Das ist hier ja kein Wunschkonzert. Und so am Ende stand es für eine Filiale dass es keine Artikel dort gibt
Das ist ja auch laut den Demo-Artikeldaten korrekt Ciao.
Die Artikel die in der Ges.-Datei stehen müssen mit den Filialen der entsprechenden Ges. aus der Stammdatei gepaart werden
Aber anhand welchen Merkmals ?????? Wenn ich 4 Filialen in einer Gesellschaft habe zu welcher soll dann ein Artikel zugeordnet werden???In meinem Code siehst du wie in ein Dictionary die Stammdaten eingelesen werden und zwar für jede Gesellschaft werden alle Filialen zugeordnet. Jetzt fehlt ja der Zusammenhang der Artikel zu den Filialen, alsomalles ziemlich wirr beschrieben.
Warum steht sie bei Dir schon da?
Weil ich diese Information zum Zeitpunkt der Erstellung noch nicht hatte, das hatte ich ja extra gefragt !Also letzte Chance von meiner Seite: Stell deine Sheets zusammen im Ursprungszustand und im Sollzustand und stell sie zum Download dann sind Fehlinterpretationen und fehlende Informationen ausgeschlossen. Ich mach das für dich ja auch, und etwas mehr Mühe schadet hier nicht wenn du hier schon kostenlose Hilfe bekommst
Bedenke immer das wir hier nur mit den Informationen arbeiten können die du uns lieferst und wenn da halt essentielle Teile fehlen die wir hier nicht sehen können, klappt das nicht.
Also DANKE für eine eindeutige und unmissverständliche Beschreibung.
Schönen Abend und bis morgen.