Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Übertragung multipler Daten aus einer Datei in andere Dateien
#11
(02.05.2024, 10: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.

Ciao, Ralf

Antworten Top
#12
Hallöchen,

Zitat:Heißt, ein Ordner (ggf. mit Unterordnern)
Hm Confused
"C:\Users\xxxxx\xxxxx\xxxxxxxxxx\"

Ok, Unterordner ziemlich weit hinten Smile Ist halt' die normale Windows-Struktur Sad .
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 17
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#13
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.

VG Dschissl
Antworten Top
#14
Hallöchen,

also, für mehrere User solltest DU, wie Ralf schrieb, Arrays nehmen.

Code:
arrPfade=Array("C:\xxx","C:\yyy","C:\zzz")
arrNamen=Array("Alex","Klaus","Dieter")
arrDateien=Array(...)
arr... = Array(...)

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 Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#15
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.
Antworten Top
#16
(11.05.2024, 20: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.  Shy

(11.05.2024, 19:30)schauan schrieb: Hallöchen,

also, für mehrere User solltest DU, wie Ralf schrieb, Arrays nehmen.

Code:
arrPfade=Array("C:\xxx","C:\yyy","C:\zzz")
arrNamen=Array("Alex","Klaus","Dieter")
arrDateien=Array(...)
arr... = Array(...)

Dann kannst Du mit einer Schleife arbeiten und brauchst den Teil nicht 3x

-->das werde ich auf jeden Fall testen, danke dir  Smile

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  Sadsmiley

Ü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 Smile

-->Ja genau, spielt bei  mir zum Glück keine Rolle, weil ich immer nur Mo-Fr betrachten muss  Wink

Danke auch dir für das konstruktive Feedback. Ich nehme alles dankbar an, wenn es hilft zu einer zufriedenstellenden Lösung zu gelangen  Shy

VG Dschissl
Antworten Top
#17
(11.05.2024, 17: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.

Ciao, Ralf

Antworten Top
#18
Hallöchen,

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)
Antworten Top
#19
Hallo

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.

mfg Gast 123


Angehängte Dateien
.xls   Testmappe_Test_Forum.xls (Größe: 286,5 KB / Downloads: 2)
Antworten Top
#20
Hallöchen gast,

ich hab da nix eigenes, habe nur ein paar Tipps zu möglichen Anpassungen zu Deinem Code gegeben Wink
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste