4.2k Aufrufe
Gefragt in Tabellenkalkulation von finger59 Experte (1.3k Punkte)
Hallo Excel-Fan-Gemeinde,

ich habe ein Problem, dass ich einen variablen Dateinamen (durch die Kalenderwochen bedingt) habe und aus diesen variablen Dateien einen bestimmten Teil von Daten in eine andere Datei kopieren möchte.

Es geht darum, dass es eine Vorlage gibt und anhand des nachstehenden Makros werden dann die Daten als Datei wie folgt abgespeichert werden:

Dim strDateiname As String
Dim strAntwort As String

strDateiname = "Grp. " & Range("b3").Value & "KW " & Range("P3").Value & ".XLS"

ActiveWorkbook.SaveAs ("G:\Fertigung\Tischplattenfertigung\Gruppen\Gruppe 02\Lohnabrechnung\2010\" & strDateiname)

Der Dateiname sieht dann z.B. so aus: Gruppe 02KW 9,3 aus.

*******************************************************

Dann habe ich einen Code zum Übertragen der Daten von dem Hajo erhalten, der mit einem feststehenden Dateinamen auch funktioniert:

Dim loletzte As Long
loletzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
Workbooks.Open Filename:= _
"G:\Fertigung\Abrechnung zusätzliche Akkordminuten 2010\Akkordminuten.xls"
With Workbooks("Akkordminuten").Sheets("Daten")
loletzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, .Rows.Count)
Workbooks("Vorlage für Gruppe 02a2test1ka").Sheets("Gruppe").Range("fa1:fm50").Copy
.Cells(loletzte + 1, 1).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False

Das Problem ist hier die feste Zuordnung:
Workbooks("Vorlage für Gruppe 02a2test1ka").Sheets("Gruppe").Range("fa1:fm50").Copy


Frage: Gibt es da auch die Möglichkeit den Dateinamen abzufragen und anstelle von
Workbooks("Vorlage für Gruppe 02a2test1ka") einzusetzen?

Falls es wissentlich nicht gehen sollte, so wäre ich auch für einen entsprechenden Hinweis dankbar.
Dann müsste ich mir die Arbeit machen für rund 40 Gruppen alle 52 Kalenderwochen vorzubereiten
und dann jeweils den Code entsprechend anpassen, was natürlich nicht toll wäre.

Ich bedanke mich bei allen Interessierten und wünsche noch einen schönen Abend… Gruß Helmut

6 Antworten

0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Helmut,

ich weiß jetzt nicht, ob ich Dich richtig verstanden habe, weil ich nicht so genau weiß, was Du mit

Frage: Gibt es da auch die Möglichkeit den Dateinamen abzufragen und anstelle von
Workbooks("Vorlage für Gruppe 02a2test1ka") einzusetzen?

genau meinst. An was willst Du denn den Dateinamen abfragen? Oder ist Deine Abfrage bereits

Dim strDateiname As String
Dim strAntwort As String

strDateiname = "Grp. " & Range("b3").Value & "KW " & Range("P3").Value & ".XLS"

ActiveWorkbook.SaveAs ("G:\Fertigung\Tischplattenfertigung\Gruppen\Gruppe 02\Lohnabrechnung\2010\" & strDateiname)

Wenn Du damit Deine Abfrage meinst, dann würde Deine Zeile

Workbooks("Vorlage für Gruppe 02a2test1ka").Sheets("Gruppe").Range("fa1:fm50").Copyso aussehen:

Workbooks(strDateiname).Sheets("Gruppe").Range("fa1:fm50").CopyWenn Du das nicht meinst, dann erklär mal genauer, wie Du das mit dem Auslesen des Dateinamens meinst.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Hallo Oliver,
vielen Dank für Deine Antwort.

Anhand Deines Vorschlages habe ich den zweiten Code wie folgt geändert:
Unterhalb von Dim loletzte…. habe ich Dim strDateiname as String gesetzt.

Dann in der Zeile anstelle meines festen Dateinamens es in
Workbooks(strDateiname).Sheets("Gruppe").Range("fa1:fm50").Copy
geändert.

Mit der DIM-Zuweisung kam die Fehlermeldung: Typen unverträglich
und ohne die Dim-Zuweisung lautete es: Index außerhalb des gültigen Bereichs

Zum besseren Verständnis meine aktuelle Situation:
Es gibt rund 40 Akkordgruppen, die ein eigenes Gruppenvorlagenblatt haben, deren
Aufbau identisch ist.
Innerhalb der Vorlage gibt es ein Auswahlfeld für die Kalenderwoche, dessen Auswahl dann in dem Feld P3 abgelegt wird.
Die jeweilige Gruppen-Nr. steht im Feld B3
Wenn die täglichen Eintragungen erfolgt sind, dann soll der Dateiname aus der Akkord-Grp und der Kalenderwoche zusammensetzen, so daß ich pro Gruppe 52 Dateien im Laufe des Jahres in dem entsprechenden Verzeichnis stehen habe.

Jetzt sind die ursprünglichen einzutragenen Informationen erweitert worden (um den Bereich fa1:fm50), deren
Inhalt jedoch an eine andere Datei übergeben werden soll - die Zieldatei für diese Daten lautet: Akkordminuten

Die Übergabe der Akkordminuten erfolgt immer erst, nachdem die Datei über den 1.Code gespeichert wurde.
d.h. mal heißt die Datei dann Grp. 02KW 6, dann Grp. 02KW 7, Grp. 02 KW 8 usw. je nachdem wie die Wochen-Nr. lautete.

Eigentlich hatte ich gehofft, dass Dein Vorschlag schon die Lösung wäre, da sie mir auch plausibel erschien, aber wie gesagt, ich erhalte je nachdem wie ich es eintrage leider die Fehlermeldungen.

In der Hoffnung das Du doch noch einen Lösungsansatz für mich hast und natürlich auch alle anderen Interessierten verbleibe ich schon mal mit einem vielen Dank und
wünsche allen noch einen schönen Tag…. Gruß Helmut
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Helmut,

die Zeile

strDateiname = "Grp. " & Range("b3").Value & "KW " & Range("P3").Value & ".XLS"hast Du aber auch mit in Deinen Code aufgeführt oder? Wenn nicht, dann muss diese Zeile auch noch in Deinen Code. Wenn Du das aber gemacht hast, dann führe hier bitte nochmal Deinen jetzigen Code auf, da wir alle hier keine Hellseher sind.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Hallo Oliver,

vielen vielen Dank für Deine Unterstützung.

Ihr seid echt Helden für uns, die im Dunklen tappern und Ihr uns dann mit der Taschenlampe (Schritt für Schritt) ins Licht zurück führt ;-).

Nochmals vielen Dank (auch noch mal an Hajo für seine Vorarbeit).

In diesem Sinne... have a nice Day... Gruß Helmut
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Helmut,

gerne geschehen. Freut mich, dass alles funktioniert. Danke auch für die Rückmeldung.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Nachtrag zu der Lösung.

Nachdem das Makro bei mir am Arbeitsplatz zum Laufen kam, dank den Helfern, musste ich jedoch feststellen, dass verschiedene Personen, die mit diesem Makro gearbeitet haben, immer wieder an der gleichen Stelle, einen Abbruch bekamen.

Für den Fall das jemand diese Lösung nachgebaut hat und dabei ebenfalls einen Fehler erhalten hat, dann kann das folgende Ursache haben:

"G:\Fertigung\Abrechnung zusätzliche Akkordminuten 2010\Akkordminuten.xls"
With Workbooks("Akkordminuten").Sheets("Daten")


In meinem Makro sollte in dem o.g. Verzeichnis die Datei Akkordminuten geöffnet werden und anschließend sollten in diese Datei Daten reinkopiert werden.

Der Fehler bei den Mitarbeitern kommt daher, daß es anstelle von
With Workbooks("Akkordminuten").Sheets("Daten")
es so aussehen muss:
With Workbooks("Akkordminuten.xls").Sheets("Daten")

Diese .xls wird bei den anderen Mitarbeitern benötigt, da bei denen die Einstellungen in dem Explorer unter
Extras - Ordneroptionen - Ansicht der Haken bei
Erweiterungen bei bekannten Dateitypen ausblenden nicht gesetzt
war, so dass er die Endung .xls im Makro dann benötigt wird.

In der Hoffnung damit jemand anderes noch geholfen zu haben, der evtl. ähnliche Probleme schon mal hatte, warum funktioniert es bei mir, aber bei dem Anderen nicht - dieses könnte eine mögliche Ursache sein.

In diesem Sinne... have a nice Day... Gruß Helmut
...