06.05.2024, 14:14 (Dieser Beitrag wurde zuletzt bearbeitet: 06.05.2024, 14:14 von Ralf A.)
(02.05.2024, 11:03)Dschissl schrieb: ... Dazu habe ich noch eine Frage an Gast123. Wenn nun die einzelnen Stundennachweise an verschiedenen Orten auf dem Laufwerk liegen, muss ich dann einfach nur im Header mehrere neue Variablen z.B. Const MyPfad2 = "C:\Users\xxxxx\xxxxx\xxxxxxxxxx\" Const MyPfad3 = "C:\Users\xxxxx\xxxxx\xxxxxxxxxx\" Const MyPfad4 = "C:\Users\xxxxx\xxxxx\xxxxxxxxxx\" festlegen? Und ebenso weitere Variablen Const x = "Stundennachweis - xxxx.xlsx" Const y = "Stundennachweis - yyyy.xlsx" Const z = "Stundennachweis - zzzz.xlsx"
ich bin zwar nicht Gast123, das spielt in diesem Zusammenhang aber auch keine Rolle. Wenn Du schon mehrere Pfade nutzt, dann fasse die in einem Array zusammen, statt für jeden einzelnen eine eigene Variable. Aber noch besser wäre natürlich eine vorausschauende Planung. Heißt, ein Ordner (ggf. mit Unterordnern) statt wildes Durcheinander.
Zu den 5 Wochen: Die Auswertung nicht nach Anzahl der Wochen vornehmen, sondern monatsweise...
Da Du aber auf Deiner suboptimalen Datenhaltung bestehst, verspüre ich kein Bedürfnis, Dich in Deiner Chaosforschung unterstützen zu wollen.
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Ok, Unterordner ziemlich weit hinten Ist halt' die normale Windows-Struktur . Man könnte das auch reduzieren, mit entsprechend differenzierten Zugriffsrechten: C:\Anwesenheit\xxx C:\Anwesenheit\yyy C:\Anwesenheit\zzz (oder irgendwo auf einem Server) Die zwei Ebenen werden aus Datenschutzgründen nötig sein.
Dschissel, bist Du eigentlich Admin auf dem Rechner dass Du in die Userverzeichnisse kommst? Eigentlich hat da, abgesehen von Ausnahmefällen, außer dem betreffenden User keiner was verloren.
Aber der Dateiaufbau ist auch nicht von schlechten Eltern
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
11.05.2024, 18:45 (Dieser Beitrag wurde zuletzt bearbeitet: 11.05.2024, 20:30 von schauan.
Bearbeitungsgrund: Vollzitate entfernt
)
Hallo Ralf,
danke für deine konstruktiven Hinweise. Leider habe ich, in der originalen Datenstruktur, wo das Ganze am Ende zur Anwendung kommen soll, keine Freigabe zur Änderung der vorhandenen Ordnerstrukturen. Ich könnte es tun, die Rechte dafür habe ich, jedoch ist es, aus Gründen, nicht gewünscht. Jeder Klient hat seinen eigenen Ordner in der Gesamtstruktur, ich welchem die Abrechnungsdatei für ihn liegt. Das soll auch so bleiben. Die Datei für die Planung der Mitarbeiter liegt nun mal woanders. Diese Ordnerstruktur soll leider beibehalten werden, ist sie doch aber nicht das Hauptproblem oder?
zu den 5 Wochen: Wenn es eine Möglichkeit gibt, gleich alle 5 Wochen auf einmal mit VBA auszuwerten, wie lautet der Code dafür? Eine KI spuckt mir dazu das hier aus
Code:
' Durchlaufe die verschiedenen Wochen und übertrage die Daten For Each Sht In ThisWorkbook.Sheets(Array("Woche 1", "Woche 2", "Woche 3", "Woche 4")) Debug.Print "Aktuelles Blatt: " & Sht.Name StundenÜbertragen Sht, ShtX, Klient Next Sht
Das hat aber nicht wirklich funktioniert. Wenn du mich in meiner Forschung nach der Lösung nicht unterstützen möchtest, ist das natürlich dein gutes Recht. Danke dir trotzdem für alles.
VG Dschissl
Hallo schauan,
ich teste das Ganze auf meinem Privatrechner zu Hause, nicht auf dem Server der Firma. Dort soll es nur am Ende zur Anwendung kommen, sobald eine Lösung gefunden wurde.
Dann kannst Du mit einer Schleife arbeiten und brauchst den Teil nicht 3x
Code:
For iCnt=0 to 2 '2 hier bei 3 Inhalten Workbooks.Open Filename:=arrPfade(iCnt) & arrNamen(icnt) Set WbEx = ActiveWorkbook Set ShtX = WbEx.Sheets(1) Klient = arrNamen(icnt): GoSub Liste Next
Bei den Blättern könntest Du auch eine Schleife nehmen,
Code:
For iCnt2 = 1 to 5 With ThisWorkbook.Worksheets("Woche " & iCnt2) ... End With Next
Wenn Du das in unterschiedliche Spalten oder Zeilen eintragen musst, dann schaue Dir mal Offset an.
Probiere mal in einem anderen Makro folgendes: Msgbox Range("A1").Address Msgbox Range("A1").Offset(1,2).Address Msgbox Range("A1:B10").Address Msgbox Range("A1:B10").Offset(3,4).Address
usw. Mit ein bisschen Überlegung kannst Du das dann in den Code einbauen.
Übrigens, ein Monat, der Sonntag anfängt, tut auch 6 KW beinhalten. (Ausgenommen Februar) Bei Samstag sollte der Monat 31 Tage haben, dann sind es auch 6 KW. Spielt aber bei Dir keine Rolle, da es nur um Mo-Fr geht
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
11.05.2024, 21:22 (Dieser Beitrag wurde zuletzt bearbeitet: 11.05.2024, 21:27 von Gast 123.)
Hallo
ich war eine Zeitlang privat beschäftigt und hatte diesen Thread nicht weiter verfolgt.
Frage: was ist denn aus meiner Idee mit meiner Beispiel Testmappe geworden?? Die Pfade für die Mitarbeiter kann man ja in Const als PfadAlex, PfadRich, PfadMirko, PfadManu festlegen Durch das GoSub Unterprogramm können dann die Daten für alle MTA ausgewertet und kopiert werden. Das beeinträchtigt deine Ordnerstruktur auf keinen Fall. Willst du da evtl. weitermachen?? Ich warte mal ab.
mfg Gast 123 @Ralf ich kann verstehen, das du am liebsten Dateien optimieren willst. Der Gedanke ist durchaus überlegenswert. Tatsache ist aber, das Menschen gerne an gewohnten Systemen festhalten. Darauf muss man Rücksicht nehmen. Meine Spezialität ist der amüsante Versuch, in ein Chaos eine möglichst sinnvolle Ordnung hineinzubringen.
11.05.2024, 23:41 (Dieser Beitrag wurde zuletzt bearbeitet: 11.05.2024, 23:48 von Dschissl.)
(11.05.2024, 21:22)Gast 123 schrieb: Hallo
ich war eine Zeitlang privat beschäftigt und hatte diesen Thread nicht weiter verfolgt.
Frage: was ist denn aus meiner Idee mit meiner Beispiel Testmappe geworden?? Die Pfade für die Mitarbeiter kann man ja in Const als PfadAlex, PfadRich, PfadMirko, PfadManu festlegen Durch das GoSub Unterprogramm können dann die Daten für alle MTA ausgewertet und kopiert werden. Das beeinträchtigt deine Ordnerstruktur auf keinen Fall. Willst du da evtl. weitermachen?? Ich warte mal ab.
mfg Gast 123 @Ralf ich kann verstehen, das du am liebsten Dateien optimieren willst. Der Gedanke ist durchaus überlegenswert. Tatsache ist aber, das Menschen gerne an gewohnten Systemen festhalten. Darauf muss man Rücksicht nehmen. Meine Spezialität ist der amüsante Versuch, in ein Chaos eine möglichst sinnvolle Ordnung hineinzubringen.
Hallo Gast123, deine Mappe war sehr hilfreich. Ich habe sie genommen, angepasst und etwas herumexperimentiert (siehe mein letzter Post auf Seite 1). Das hat alles super funktioniert, genau so wie ich es mir vorgestellt habe, auch für 4 oder mehr Mitarbeiter. Bei der Adaption auf die Originaldatei jedoch, ergaben sich Hürden, welche ich vorher nicht bedacht hatte, welche da wären (kopiert aus meinem letzten Post auf Seite 1).
1. In der Originaldatei, sowie auch in der Testdatei, gibt es drei farblich (grün) markierte Zeilen bei jedem Mitarbeiter. Diese dienen dazu, dass der Mitarbeiter dort einträgt, bei wem er wirklich an dem Tag gewesen ist, denn es kann durchaus passieren, dass Mitarbeiter aus Gründen nicht zum geplanten Klienten, sondern zu einem anderen Klienten gehen müssen. Um das nachvollziehen zu können, sind die ersten 5 Zeilen sozusagen die Sollstunden und die 3 farblichen Zeilen die Ist-Stunden wo er wirklich war. Und NUR diese 3 Zeilen sollen am Ende pro Mitarbeiter ausgewertet werden. Die Originaldatei ist aus Sicherheitsgründen so konfiguriert, dass die ersten 5 Zeilen eines jeden Mitarbeiters gesperrt sind. Sie können nur in den 3 farblichen Zeilen Änderungen vornehmen und ihre Zeiten eintragen. Das zum Hintergrund.
2. Außerdem soll nicht nur eine Woche ausgewertet werden, sondern der ganze Monat, also 5 Wochen. Dazu habe ich versucht den Code anzupassen, sodass alle Wochen ausgewertet werden. Leider scheiterte dieses Vorhaben an meinen VBA-Kenntnissen. Auch die Unterstützung durch KI brachte keinen Erfolg, diese veränderte den Code immer weiter, passte ihn zwar an, doch es schlichen sich auch hier Fehler ein, welche ich nicht zu korrigieren vermag.
3. Des Weiteren soll das Einfügen der Daten in den original Stundenabrechnungen erst ab Zeile 18 passieren. Ich denke jedoch, dass das erstmal keine große Priorität hat.
Und um deine Frage zu beantworten. Ja, genau da möchte ich weitermachen und hoffe du kannst mir dabei helfen auch diese Hürden zu lösen.
(11.05.2024, 20:30)schauan schrieb: Hallöchen,
also, für mehrere User solltest DU, wie Ralf schrieb, Arrays nehmen.
Dann kannst Du mit einer Schleife arbeiten und brauchst den Teil nicht 3x
-->das werde ich auf jeden Fall testen, danke dir
Code:
For iCnt=0 to 2 '2 hier bei 3 Inhalten Workbooks.Open Filename:=arrPfade(iCnt) & arrNamen(icnt) Set WbEx = ActiveWorkbook Set ShtX = WbEx.Sheets(1) Klient = arrNamen(icnt): GoSub Liste Next
Bei den Blättern könntest Du auch eine Schleife nehmen,
Code:
For iCnt2 = 1 to 5 With ThisWorkbook.Worksheets("Woche " & iCnt2) ... End With Next
Wenn Du das in unterschiedliche Spalten oder Zeilen eintragen musst, dann schaue Dir mal Offset an.
Probiere mal in einem anderen Makro folgendes: Msgbox Range("A1").Address Msgbox Range("A1").Offset(1,2).Address Msgbox Range("A1:B10").Address Msgbox Range("A1:B10").Offset(3,4).Address
usw. Mit ein bisschen Überlegung kannst Du das dann in den Code einbauen.
-->Ja danke dir, aber ich glaube dafür sind meine VBA-Kenntnisse nicht ausreichend genug
Übrigens, ein Monat, der Sonntag anfängt, tut auch 6 KW beinhalten. (Ausgenommen Februar) Bei Samstag sollte der Monat 31 Tage haben, dann sind es auch 6 KW. Spielt aber bei Dir keine Rolle, da es nur um Mo-Fr geht
-->Ja genau, spielt bei mir zum Glück keine Rolle, weil ich immer nur Mo-Fr betrachten muss
Danke auch dir für das konstruktive Feedback. Ich nehme alles dankbar an, wenn es hilft zu einer zufriedenstellenden Lösung zu gelangen
12.05.2024, 00:29 (Dieser Beitrag wurde zuletzt bearbeitet: 12.05.2024, 00:32 von Ralf A.)
(11.05.2024, 18:45)Dschissl schrieb: ... Leider habe ich, in der originalen Datenstruktur, wo das Ganze am Ende zur Anwendung kommen soll, keine Freigabe zur Änderung der vorhandenen Ordnerstrukturen. Ich könnte es tun, die Rechte dafür habe ich, jedoch ist es, aus Gründen, nicht gewünscht. Jeder Klient hat seinen eigenen Ordner in der Gesamtstruktur, ich welchem die Abrechnungsdatei für ihn liegt. Das soll auch so bleiben. Die Datei für die Planung der Mitarbeiter liegt nun mal woanders. Diese Ordnerstruktur soll leider beibehalten werden, ist sie doch aber nicht das Hauptproblem oder?
Wo die Dateien gespeichert werden und ob Freigaben bestehen oder nicht, ist mir persönlich egal. Bestehende Freigabenrichtlinien sollten aber niemals in Stein gemeißelte Dogmen sein, wenn es vernünftige Argumente dagegen gibt. Aber das ist, wie Du richtig erkannt hast, nur das sekundäre Problem. Primär ist die Datenstruktur der Tabellen das Problem. Aber das hatte ich ich schon im Post #3 vom 29.1. gesagt und am 20.4. dann eine entsprechende Beispielmappe angehängt, die aber offensichtlich nicht Deinen Vorstellungen entsprach...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
ich bin da nach wie vor bei Ralf, was die Datenstruktur in Deinen Dateien betrifft. Wenn Du was verbessern und beschleunigen willst, solltest Du auf eine Vereinfachung der Datenhaltung schauen und im Step 2 auf eine "hübsche" Präsentation. Wenn Du den Beteiligten dann zeigst, dass da was schon bei der Datenerfassung einfacher und schneller geht, bekommst Du da schon sicher Zustimmung.
Ansonsten, beim unteren Teil für die Übertragung musst Du schauen, wie Du bei den Folgewochen in die richtige Zeile kommst, also, wie Du die Startzeile z verrechnest. z = 6 ' 1.Zeile in Stundenabrechnung musst Du vielleicht vor die vorgeschlagene Schleife setzen oder, wie bei lz1, innerhalb der Schleife berechnen
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
vielleicht ist das Makro von Schauen inzwischen schon erfogreich am laufen? Trotzdem hier meine Lösung.
Ich habe mir auch Gedanken gemacht den Code zu optimieren. Mal schauen wie gut er geworden ist? In der Woche 1 findest du im Bereich W2 - Y4 eine Liste wieviele Daten kopiert wurden. Inclusive Überlauf! Mir fiel auf, das bei Alex und Richard die 32 Zeilen zum auflisten nicht ausreichen! Die brauchen mehr Zeilen.
Das Makro beendet das auflisten ab Zeile 32 und zählt die überlaufenden Daten als fehlende Zeilen. Werden ins Sheet weitere Zeilen eingefügt listet das Makro alle Daten bis zur Zelle mit der Summenformel auf.
Das Makro listet alle 5 Wochen auf. Man braucht also nicht mehr für jede Woche einen Button. Aufgelistet werden die Daten im markierten Bereich, unabhängig davon wer in der oberen Zeile steht. s. A2
Frage: bei der Beispielmappe war ich mir nicht sicher ob beide Werte aufgelistet werden müssen?? Der Name und die Zeiten in der oberen Zeile wo der Patientenname steht. UND die 5. markierte Zeile? Oder NUR die 5. markierte Zeile, ohne die obere wo in A2 "Maik" steht? Das müssten wir noch klären.
Ich bitte mal zum Testen die Daten in der markierten Zeile gegenüber der oberen Zeile zu ändern. Letzte Frage, soll das Stundenabrechnungs Sheet nach dem Speichern geschlossen werden? Geändert habe ich das mein Makro bei einer bereits geöffneten Datei keine Fehlermeldung ausgibt.