Automatische Mengenerfassung

Hallöchen,

ich habe da ein Problem, bin aber nicht gerade sehr wissend in VBA.
Ich suche schon die ganze Zeit in Büchern und Foren, aber irgendwie habe ich noch nicht das Richtige gefunden.
Das Problem ist folgendes:

VBA-Version 6.0

Ich habe einen Ordner x in dem weitere Ordner mit den Namen 2000, 2001, 2002, 2003… bis 2008 sind.
Es soll immer mit dem aktuellen Ordner gearbeitet werden, in diesem Falle jetzt 2008. In diesem Ordner sind einige Excel-Arbeitsmappen.
Sie enthalten folgende, für mich wichtige Information:
In diesen Mappen gibt es immer jeweils ein Tabellenblatt für einen Monat die auch danach benannt sind. Ich interessiere mich immer für die jeweils aktuelle Monatstabelle.
Von Zelle AN23 bis Zelle AO78 sind Erkennungsnummern(für verschiedenes Tierfutter) a, b, c bei denen entweder nur in einer der drei Zellen eine Nummer hineingeschrieben wurde oder auch in mehreren. Es ist aber nicht in alle Zeilen etwas hineingeschrieben worden und die Eintragungen unterscheiden sich auch von Arbeitsmappe zu Arbeitsmappe.
In der Spalte AR steht die jeweilige Anzahl der vorhandenen Futtermenge zu denen die Erkennungsnummern gehören. Ich möchte nun dass es in dem Ordner x einen weiteren Ordner Test gibt der eine Arbeitsmappe Test hat welche mir im ersten Tabellenblatt folgende Information liefert:
Von Zelle „A5“ bis Zelle „C unendlich“ sollen die Erkennungsnummern unter a, b, c hineingeschrieben werden. Dieses soll für den jeweiligen Monat angegeben werden. Wenn nun bei einem Tierfutter a und b ausgefüllt sind, sollen diese nicht wieder nebeneinander geschrieben werden sondern als zwei Punkte behandelt werden. Wenn jetzt z.B. ein Gegenstand eine a und eine c Nummer hat, soll einmal in einer Zeile meiner Testdatei des ersten Tabellenblattes die Nummer a und darunter in der nächsten Zeile die Nummer c stehen. Auch soll es so sein, dass wenn in einer der Arbeitsmappen (aus dem jetzigen Ordner 2008) die selbe Erkennungsnummer steht, diese nicht noch einmal in die Tabelle geschrieben werden soll. Als nächstes sollen die Arbeitsmappennamen des aktuellen Jahres, angefangen bei D4 und in Richtung E4…, aufgelistet werden, außer die Arbeitsmappe mit dem Namen „NN“. Wenn eine neue Arbeitsmappe erscheint, soll deren Name und ihre Erkennungszahlen (außer sie sind schon einmal in einer anderen Arbeitsmappe aufgetaucht) automatisch in der Testdatei aufgelistet werden. Danach sollen die Anzahl des Tierfutters (Spalte AR) zu den jeweiligen Erkennungsnummern unter den jeweiligen Arbeitsmappennamen hineingeschrieben werden. In der selben Zeile wie die der Arbeitsmappennamen soll im Anschluss das Wort „Summe“ stehen (welches sich mitbewegt sobald ein neuer Name hinzukommt) und darunter immer die Summe der Anzahl des Tierfutters der jeweiligen Erkennungsnummern. Zum Schluss soll nach dem Wort „Summe“ das Wort „Soll“ stehen. Darunter kommt dann eine Zahl die aus einer ganz anderen Arbeitsmappe kommt. Sie ist in einem anderen Verzeichnis und der Dateiname lautet „Richtlinien“. Für jedes der Erkennungsnummern gibt es dort einen Richtlinienwert der mit der selben Nummer gekennzeichnet ist. Diese Zahl soll jedenfalls durch 12 geteilt werden und in meiner „Testarbeitsmappe“ unter Soll für jede einzelne Erkennungsnummer(Tierfutter) stehen. Dies soll alles automatisch geschehen, d.h. wenn es 2009 wird, soll es automatisch die Informationen aus dem Ordner 2009 seine Informationen holen und wenn der Monat sich ändern, dann soll auch da die Information vom nächsten Monat genommen werden. Das Gleiche möchte ich auf dem zweiten Tabellenblatt haben, nur dass es dann die ganze Information bis zum jeweiligen Monat beinhaltet. Es soll also anstatt der Anzahl des Tierfutters im Monat z.B. Mai, alle Informationen bis zum aktuellen Monat also Januar bis Mai vorhanden sein (die Summe aller Werte) und bei dem Sollwert sollte dann nicht nur durch 12 geteilt werden, sondern auch mit dem jeweiligen Monat multipliziert werden, also in diesem Beispiel Zahl (x/12)*5. Auch dieses soll voll automatisch funktionieren. Die Tabellen die ich dazu auch noch automatisch erhalten möchte würde ich glaube ich sogar noch selber hinkriegen, auch der Button der dies alles auslöst schaffe ich noch (einfach Makro zuweisen, oder?). Für das andere bin ich allerdings noch nicht soweit. Ist dies so zu realisieren oder bin ich jetzt größenwarnsinnig?

Danke schon mal,
Christine

Hi Christine,

VBA-Version 6.0

welche Excelversion?

Ich habe einen Ordner x in dem weitere Ordner mit den Namen
2000, 2001, 2002, 2003… bis 2008 sind.
Es soll immer mit dem aktuellen Ordner gearbeitet werden, in
diesem Falle jetzt 2008. In diesem Ordner sind einige
Excel-Arbeitsmappen.
Sie enthalten folgende, für mich wichtige Information:
In diesen Mappen gibt es immer jeweils ein Tabellenblatt für
einen Monat die auch danach benannt sind.

Wieso nicht 12 Blätter=12 Monate pro Mappe?

Von Zelle AN23 bis Zelle AO78 sind Erkennungsnummern(für
verschiedenes Tierfutter) a, b, c bei denen entweder nur in
einer der drei Zellen eine Nummer hineingeschrieben wurde oder
auch in mehreren.

AN bis AO sind aber nur 2 Spalten, meinst du AM24:AO78 ?

Es ist aber nicht in alle Zeilen etwas
hineingeschrieben worden und die Eintragungen unterscheiden
sich auch von Arbeitsmappe zu Arbeitsmappe.
In der Spalte AR steht die jeweilige Anzahl der vorhandenen
Futtermenge zu denen die Erkennungsnummern gehören.

Sieht das dann so aus:

Tabellenblatt: H:\[kwsvwerweis14.xls]!Aug 08
 │ AM │ AN │ AO │ AP│ AQ│ AR │
───┼──────┼──────┼──────┼────┼────┼────────┤
22 │ Erk1 │ Erk2 │ Erk3 │ │ │ Anzahl │
───┼──────┼──────┼──────┼────┼────┼────────┤
23 │ a │ │ c │ │ │ 23 │
───┼──────┼──────┼──────┼────┼────┼────────┤
24 │ │ b │ │ │ │ 34 │
───┼──────┼──────┼──────┼────┼────┼────────┤
25 │ │ b │ c │ │ │ 56 │
───┼──────┼──────┼──────┼────┼────┼────────┤
26 │ a │ b │ c │ │ │ 93 │
───┼──────┼──────┼──────┼────┼────┼────────┤
27 │ │ │ c │ │ │ 12 │
───┴──────┴──────┴──────┴────┴────┴────────┘
AM22:AR27
haben das Zahlenformat: Standard

Tabellendarstellung erreicht mit dem Code in FAQ:2363

Woher weiß ich dann wieviele a und wieviel c zusammen die 56 in
AR25 ergaben, wenn man die nachher in A5:Cx untereinanderschreiben soll?

Bastle mal eine Beispielmappe und lade die hoch bei http://www.hostarea.de o.ä.

Gruß
Reinhard

Hi Christine,

VBA-Version 6.0

welche Excelversion?

ich habe Excel 2002

Ich habe einen Ordner x in dem weitere Ordner mit den Namen
2000, 2001, 2002, 2003… bis 2008 sind.
Es soll immer mit dem aktuellen Ordner gearbeitet werden, in
diesem Falle jetzt 2008. In diesem Ordner sind einige
Excel-Arbeitsmappen.
Sie enthalten folgende, für mich wichtige Information:
In diesen Mappen gibt es immer jeweils ein Tabellenblatt für
einen Monat die auch danach benannt sind.

Wieso nicht 12 Blätter=12 Monate pro Mappe?

ich habe mich falsch ausgedrückt, du hast recht, ich habe in jeder Mape 12 Tabellenblätter (also jede enthält Jahresinformationen)

Von Zelle AN23 bis Zelle AO78 sind Erkennungsnummern(für
verschiedenes Tierfutter) a, b, c bei denen entweder nur in
einer der drei Zellen eine Nummer hineingeschrieben wurde oder
auch in mehreren.

AN bis AO sind aber nur 2 Spalten, meinst du AM24:AO78 ?

Es beginnt bei AN und geht bis AP,
auch habe ich mich bei den Zeilen vertan, es fängt schon bei der Zeile 5 an

Es ist aber nicht in alle Zeilen etwas
hineingeschrieben worden und die Eintragungen unterscheiden
sich auch von Arbeitsmappe zu Arbeitsmappe.
In der Spalte AR steht die jeweilige Anzahl der vorhandenen
Futtermenge zu denen die Erkennungsnummern gehören.

Hier ist der Link zur Beispieldatei:
http://www.hostarea.de/server-05/Mai-d1d0c2eaa2.xls

Ich danke dir für deine Bemühungen,

Christine

Hallöchen Reinhard,

könnest du mir sagen ob es so wie ich möchte überhaubt verwirklicht werden kann?

könnest du mir sagen ob es so wie ich möchte überhaubt
verwirklicht werden kann?

Hi Christine,

schwer zu sagen, für dich mag ja dein Ausgangsbeitrag klar und übersichtlich zu sein, für mich ist er erstmal erschreckend groß, wenn ich beim Durchlesen unten angelangt bin habe ich schon vergessen was oben stand usw. :smile:
Aber ich sehs wie Toyota, nichts ist unmöglich *gg*

Im Klartext, erst wenn ich im Gesamten verstanden habe was du eigentlich alles willst könnte ich ggfs. die Frage ob es möglich ist dies auch zu tun beantworten.

Gruß
Reinhard

Hallo Christine,

ich denke das ist alles möglich… Du wirst allerdings viel Spaß am Programieren haben.
Ich versuche mal ein paar Anhaltspunkte zu geben und hoffe das hilft dir weiter:

Ich habe einen Ordner x in dem weitere Ordner mit den Namen
2000, 2001, 2002, 2003… bis 2008 sind.
Es soll immer mit dem aktuellen Ordner gearbeitet werden, in
diesem Falle jetzt 2008. In diesem Ordner sind einige
Excel-Arbeitsmappen.

Prinzipiell musst du also dem Programm sagen welche Datei er öffnen soll. (Ich weiß nicht ob du eine Arbeitsmappe öffnen musst um sie auszulesen, oder ob das auch so geht!?!)
Dazu baut man einen Text (String) auf, der den kompletten Pfad der Datei enthält. Also das Ziel ist erstmal:
Zieldatei = „C:\MeinHungrigerHund\2008\Excel1.xls“
jetzt machen wir das flexibel um immer ins aktuelle Jahr zu gehen:
Zieldatei = „C:\MeinHungrigerHund“ & year(Date) & „\Excel1.xls“
(Date gibt 26.05.2008 … year(Date) macht dann „2008“)

Nun die Frage wie die Exceldateien im Ordner benannt sind und welche du davon benutzen willst.
Lass dein Programm alle Dateinamen einlesen und dann ggf. Filtern.

Sie enthalten folgende, für mich wichtige Information:
In diesen Mappen gibt es immer jeweils ein Tabellenblatt für
einen Monat die auch danach benannt sind. Ich interessiere
mich immer für die jeweils aktuelle Monatstabelle.

Wenn du eine Datei geöffnet hast kannst du nun das gewünschte Tabellenblatt öffnen. Das dürfte soweit ich weiß auch über einen String funktionieren. ZielTabellenblatt = „Monat“ & month(Date)
( month(Date) liefert „05“ )

Von Zelle AN23 bis Zelle AO78 sind Erkennungsnummern(für
verschiedenes Tierfutter) a, b, c bei denen entweder nur in
einer der drei Zellen eine Nummer hineingeschrieben wurde oder
auch in mehreren. Es ist aber nicht in alle Zeilen etwas
hineingeschrieben worden und die Eintragungen unterscheiden
sich auch von Arbeitsmappe zu Arbeitsmappe.
In der Spalte AR steht die jeweilige Anzahl der vorhandenen
Futtermenge zu denen die Erkennungsnummern gehören. Ich möchte
nun dass es in dem Ordner x einen weiteren Ordner Test gibt
der eine Arbeitsmappe Test hat welche mir im ersten
Tabellenblatt folgende Information liefert:
Von Zelle „A5“ bis Zelle „C unendlich“ sollen die
Erkennungsnummern unter a, b, c hineingeschrieben werden.
Dieses soll für den jeweiligen Monat angegeben werden. Wenn
nun bei einem Tierfutter a und b ausgefüllt sind, sollen diese
nicht wieder nebeneinander geschrieben werden sondern als zwei
Punkte behandelt werden. Wenn jetzt z.B. ein Gegenstand eine a
und eine c Nummer hat, soll einmal in einer Zeile meiner
Testdatei des ersten Tabellenblattes die Nummer a und darunter
in der nächsten Zeile die Nummer c stehen. Auch soll es so
sein, dass wenn in einer der Arbeitsmappen (aus dem jetzigen
Ordner 2008) die selbe Erkennungsnummer steht, diese nicht
noch einmal in die Tabelle geschrieben werden soll. Als
nächstes sollen die Arbeitsmappennamen des aktuellen Jahres,
angefangen bei D4 und in Richtung E4…, aufgelistet werden,
außer die Arbeitsmappe mit dem Namen „NN“. Wenn eine neue
Arbeitsmappe erscheint, soll deren Name und ihre
Erkennungszahlen (außer sie sind schon einmal in einer anderen
Arbeitsmappe aufgetaucht) automatisch in der Testdatei
aufgelistet werden. Danach sollen die Anzahl des Tierfutters
(Spalte AR) zu den jeweiligen Erkennungsnummern unter den
jeweiligen Arbeitsmappennamen hineingeschrieben werden. In der
selben Zeile wie die der Arbeitsmappennamen soll im Anschluss
das Wort „Summe“ stehen (welches sich mitbewegt sobald ein
neuer Name hinzukommt) und darunter immer die Summe der Anzahl
des Tierfutters der jeweiligen Erkennungsnummern. Zum Schluss
soll nach dem Wort „Summe“ das Wort „Soll“ stehen. Darunter
kommt dann eine Zahl die aus einer ganz anderen Arbeitsmappe
kommt. Sie ist in einem anderen Verzeichnis und der Dateiname
lautet „Richtlinien“. Für jedes der Erkennungsnummern gibt es
dort einen Richtlinienwert der mit der selben Nummer
gekennzeichnet ist. Diese Zahl soll jedenfalls durch 12
geteilt werden und in meiner „Testarbeitsmappe“ unter Soll für
jede einzelne Erkennungsnummer(Tierfutter) stehen. Dies soll
alles automatisch geschehen, d.h. wenn es 2009 wird, soll es
automatisch die Informationen aus dem Ordner 2009 seine
Informationen holen und wenn der Monat sich ändern, dann soll
auch da die Information vom nächsten Monat genommen werden.
Das Gleiche möchte ich auf dem zweiten Tabellenblatt haben,
nur dass es dann die ganze Information bis zum jeweiligen
Monat beinhaltet. Es soll also anstatt der Anzahl des
Tierfutters im Monat z.B. Mai, alle Informationen bis zum
aktuellen Monat also Januar bis Mai vorhanden sein (die Summe
aller Werte) und bei dem Sollwert sollte dann nicht nur durch
12 geteilt werden, sondern auch mit dem jeweiligen Monat
multipliziert werden, also in diesem Beispiel Zahl (x/12)*5.

Also das ist eine ganze Menge Überprüfungs-/Fallunterscheidungsarbeit. Alles kein Problem, aber viel Programmieraufwand…

Auch dieses soll voll automatisch funktionieren. Die Tabellen
die ich dazu auch noch automatisch erhalten möchte würde ich
glaube ich sogar noch selber hinkriegen, auch der Button der
dies alles auslöst schaffe ich noch (einfach Makro zuweisen,
oder?). Für das andere bin ich allerdings noch nicht soweit.
Ist dies so zu realisieren oder bin ich jetzt
größenwarnsinnig?

Wieviel Erfahrung hast du in VB-Programmierung? Als Anfänger hast du dir da schon was schönes vorgenommen :smile:. Nette Beschäftigung an sonnigen Tagen… :smiley:

Ich hoffe ich konnte dir etwas helfen… Viel Spaß und Erfolg

Hallo Christoph,

ich bin leider Anfänger,
aber du hast mir ja schon Anhaltspunkte geliefert.
Dankeschön