Microsoft Excel

Herbers Excel/VBA-Archiv

kopieren, sheet benennen, automatisch speichern

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

  

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.


  

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


  

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


  

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


  

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


 

Beiträge aus den Excel-Beispielen zum Thema "kopieren, sheet benennen, automatisch speichern"