Herbers Excel-Forum - das Archiv

kopieren, sheet benennen, automatisch speichern

Bild

Betrifft: kopieren, sheet benennen, automatisch speichern
von: Bastian Eberl

Geschrieben am: 19.07.2008 11:34:23

Guten Morgen,
ich habe mit der archivsuche mehrere Beispiele gefunden, aber leider nichts, was dem was ich suche wirklich entspricht.
Ich bin auf der Suche nach einem Makro, welches mir folgendes ermöglicht.
Inhalte eines bestimmten sheets (z.b. "Data") in eine neue Datei kopieren und das Sheet nach der Kalenderwoche vor der aktuellen (heute ist z.B. der 19.Juli, also Kalenderwoche 29 also soll das Sheet "28_KW" heissen).
Jetzt soll diese File in einem Bestimmten Ordner (z.B. c.\daten\archiv) als 28_KW.xls abgespeichert werden.
Und das alles soll ohne jegliche Useraktivitiät geschehen. Also möchte ich, dass der User dsa Makro ausführt ... und fertig.
Ich habe mal mit dem Makroeditor rumgespielt, damit geht es aber nicht.
Dann habe ich wie gesagt schon gegoogelt und im archiv geschaut, aber nur schnipsel wie:
-------------------
ActiveWorkbook.SaveAs Filename:=datname, FileFormat:=xlNormal, Password:="", _
WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
datname = "daten" & Str(Year(Date)) & Str(Month(Date)) & ".xls"
----------------------
gefunden.
Aber daraus werde ich auch nicht so richtig schlau....
Könnt ihr mir helfen?
Danke und ein schönes Wochenende
Bastian

Bild

Betrifft: AW: kopieren, sheet benennen, automatisch speichern
von: Daniel

Geschrieben am: 19.07.2008 11:59:00
Hi
zur berechnung der Kalenderwoche schreibst du diese Formel in irgendeine freie Zelle deiner Datei (nicht im Sheet "Daten")

=KÜRZEN((HEUTE()-WOCHENTAG(HEUTE();2)-DATUM(JAHR(HEUTE()+4-WOCHENTAG(HEUTE();2));1;-10))/7) -1


die Formel hab ich von WWW.excelformeln.de
zum Daten kopiern und Speichern nimmst du dieses Makro:

Sub Kopieren_und_Speichern()
Dim Dateiname As String
Dateiname = "c:\daten\archiv\" & Sheets("Tabelle1").Range("A1").Value & "_KW.xls"
ThisWorkbook.Sheets("Daten").Copy
ActiveWorkbook.SaveAs Dateiname
ActiveWorkbook.Close
End Sub


den Zellbezug für die berechnung des Dateinamens musst du noch anpassen, entsprechend dahin, wo deine Formel für die Berechnung der Kalenderwoche steht.
Gruß, Daniel
ps: die Funktion, die Excel für die Berechnung der KW bereitstellt, rechnet nach amerikanischer Norm, die von der deutschen abweicht. Daher muss man diese Formel verwenden.

Bild

Betrifft: AW: kopieren, sheet benennen, automatisch speichern
von: Bastian Eberl
Geschrieben am: 19.07.2008 12:10:36
Hallo Daniel,
danke für die schnelle Antwort.
Aber wo in dem Makro lege ich fest, wie der Dateiname sein soll und dass er sich die Informaton aus der Datei sucht.
Viele Grüsse
Bastian

Bild

Betrifft: AW: kopieren, sheet benennen, automatisch speichern
von: Daniel
Geschrieben am: 19.07.2008 12:21:27
Hi
in dieser Zeile:
Dateiname = "c:\daten\archiv\" & Sheets("Tabelle1").Range("A1").Value & "_KW.xls"
Gruß, Daniel

Bild

Betrifft: AW: Vor-Kalenderwoche
von: Erich G.

Geschrieben am: 19.07.2008 12:24:26
Hallo Bastian und Daniel,
bei der Berechnung der Vorwoche empfehle ich, das Jahr hinzuzunehmen.
Außerdem kann man wohl nicht einfach 1 von der KW abziehen - das gäbe am 4.1. oft eine Null...
Besser ist es wohl, die KW ausgehend von HEUTE()-7 zu bestimmen.
Hier ein paar Beispiele:
 ABC
3DatumKWVor-KW
403.01.20042004w12003w52
503.01.20052005w12004w53
603.01.20062006w12005w52
703.01.20072007w12006w52
803.01.20082008w12007w52
903.01.20092009w12008w52
1003.01.20102009w532009w52
1103.01.20112011w12010w52

Formeln der Tabelle
ZelleFormel
B4=MIN(JAHR(A4-1-REST(A4-2;7)+4); JAHR(A4-REST(A4-1;7)+4))&"w"&KÜRZEN((A4-DATUM(JAHR(A4+3-REST(A4-2;7)); 1;REST(A4-2;7)-9))/7)
C4=MIN(JAHR(A4-8-REST(A4-9;7)+4); JAHR(A4-7-REST(A4-8;7)+4))&"w"&KÜRZEN((A4-7-DATUM(JAHR(A4-4-REST(A4-9;7)); 1;REST(A4-9;7)-9))/7)

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Bild

Betrifft: AW: Vor-Kalenderwoche
von: Daniel

Geschrieben am: 19.07.2008 12:37:55
HI
nja, in der KW1 bin ich normalerweise im Urlaub, bzw haben wir Betriebsruhe, da stellt sich dann das Problem nicht ;-)
der einfachste Weg wäre vielleicht, in der Formel HEUTE()-7 anstelle von HEUTE() zu verwenden.
dann sollte das Berechnen der VOR-Kalenderwoche auch beim Jahreswechsel kein Problem mehr darstellen
(das -1 am Ende muss dann natürlich entfallen)
Gruß, Daniel

 Bild
Excel-Beispiele zum Thema "kopieren, sheet benennen, automatisch speichern"
Datei kopieren, wenn noch nicht vorhanden Passwortgeschützte Mappe öffnen, Daten kopieren, schliessen
Auswahl in andere Arbeitsmappe kopieren, speichern, schließen Solange kopieren, wie ein Wert in einer Spalte vorkommt
Werte solange kopieren, wie Ganzzahl in Spalte A Zeile kopieren, wenn Wert in Spalte Q
Tabellenblätter kopieren, wenn Email-Adresse vorhanden Automatische Datumformatierung unterdrücken
Automatisch Sicherungsdatei erstellen Automatisches Komplettieren einer Zelleingabe