Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1172to1176
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datei speichern, Name ist Kalenderwoche

Datei speichern, Name ist Kalenderwoche
mtremer
Hallo Excel-Profis,
nun habe ich mich mühsam durch die bisherigen Beiträge zur Berechnung von der Kalenderwoche gearbeitet.
Offensichtlich ist die beliebteste Lösung die hier:

Function KALENDERWOCHE_DIN(datum As Date) As Integer
Dim t&
t = DateSerial(Year(datum + (8 - Weekday(datum)) Mod 7 - 3), 1, 1)
KALENDERWOCHE_DIN = (datum - t - 3 + (Weekday(t) + 1) Mod 7) \ 7 + 1
End Function

Allerdings scheint das icht die Lösung meines Problems zu sein. Ich brauche also wieder einmal Eure Hilfe:
Ich will, dass ich durch einen CommandButton die aktive Excel-Datei in einem bestimmten Ordner speichere.
- die Ordnerstruktur ist I:\2010\KW33\
- der Name setzt sich aus dem Inhalt der Zelle A2 und KW33 zusammen.
Die oben genannte Funktion muss dabei durch den VBA-Code im CommandButton angesprochen werden, wobei weder das Datum noch die Kalenderwoche (ob per Hand ausgeschrieben oder durch die Funktion errechnet) in einer Zelle steht. Die Berechnung muss also im Hintergrund durchgeführt werden.
Ich hoffe, ich konnte mein Problem verständlich formulieren.
Danke für Eure Unterstützung!
Viele Grüße
Marco
AW: Datei speichern, Name ist Kalenderwoche
17.08.2010 12:46:43
Hajo_Zi
Hallo Marco,
welches Datum dann Heute()?
Kalenderwoche Date

AW: Datei speichern, Name ist Kalenderwoche
17.08.2010 13:04:53
mtremer
Hallo Hajo,
was meinst Du?
Das Datum soll immer das aktuelle sein, also Heute()
Viele Grüße
Marco
AW: Datei speichern, Name ist Kalenderwoche
17.08.2010 13:11:35
Hajo_Zi
Hallo Marco,
und dafür habe ich ein Vorschlag gemacht.

AW: Datei speichern, Name ist Kalenderwoche
17.08.2010 13:59:26
mtremer
Hallo Hajo,
dann habe ich Dich tatsächlich nicht verstanden. Irgendwie hatte ich mir das schon gedacht ;-)
Gehofft habe ich, dass einen fertigen Code bekomme, den ich gleich in meine Datei einbauen kann.
Schließlich habe ich auch nicht das gewaltige Wissen, auch wenn ich schon viele Codes durch Euch zusammengeschustert habe.
Kannst Du mir da doch irgendwie helfen?
Danke.
Viele Grüße
Marco
Anzeige
AW: Datei speichern, Name ist Kalenderwoche
17.08.2010 14:00:47
mtremer
Huch, Knopf "Frage noch offen" vergessen ;-)
AW: Datei speichern, Name ist Kalenderwoche
17.08.2010 14:05:41
Hajo_Zi
Hallo Marco,
ich bin davon ausgegangen für das speichern hast Du schon einen Code, den ich nicht sehe.
Ansonsten benutze doch mal den Makrorecorder und passe den Code an, oder poste ihn hier mit Deinen Wüschen zur Veränderung.
Gruß Hajo
AW: Datei speichern, Name ist Kalenderwoche
17.08.2010 14:32:54
mtremer
OK, dann will ich das mal so formulieren:
Momentan speichere ich die aktive Datei so:
Private Sub CommandButton1_Click()
Dim Name As String
Name = ThisWorkbook.Sheets("Tabelle1").Range("A2").Value
If Dir("I:\2010\08\17", vbDirectory) = "" Then MkDir "I:\2010\08\17"
ThisWorkbook.SaveAs Name & "I:\2010\08\17" & ".xls"
End Sub
Dabei hole ich mir die Daten aus Behelfszellen, in denen ich jeweils das Jahr, den Monat und den Tag errechne. Jetzt muss ich den Speicherort und den Dateinamen so ändern, dass ich nach Kalenderwoche speichere.
So stelle ich mir das vor:
Private Sub CommandButton1_Click()
Dim Name As String
Name = ThisWorkbook.Sheets("Tabelle1").Range("A2").Value
If Dir("I:\2010\KW33", vbDirectory) = "" Then MkDir "I:\2010\KW33"
ThisWorkbook.SaveAs Name & "I:\2010\KW33" & ".xls"
End Sub
Für das Jahr und die Kalenderwoche suche also einen Code, der automatisch diese beiden Variablen errechnet und entsprechend wie folgt speichert:
Ordner: "I:\aktuelles Jahr\aktuelle KW"
Datei: "Name_aktuelle KW.xls"
Ist es so besser?
Viele Grüße
Marco
Anzeige
AW: Datei speichern, Name ist Kalenderwoche
17.08.2010 14:36:57
Hajo_Zi
Hallo Marco,
Option Explicit
Private Sub CommandButton1_Click()
Dim Name As String
Name = ThisWorkbook.Sheets("Tabelle1").Range("A2").Value
'Name = "E:\Test\"
If Dir("I:\2010\08\17", vbDirectory) = "" Then MkDir "I:\2010\08\17"
ThisWorkbook.SaveAs Name & Kalenderwoche(Date) & ".xls"
End Sub
Gruß Hajo
AW: Datei speichern, Name ist Kalenderwoche
17.08.2010 14:53:19
mtremer
Zuerst dachte ich "ui, sieht ja einfach aus". Dann dachte ich "das ist irgendwie zu wenig"
So habe ich das dann zusammengebastelt:
-------
Option Explicit
Function Kalenderwoche(datum As Date) As Integer
Dim t&
t = DateSerial(Year(datum + (8 - Weekday(datum)) Mod 7 - 3), 1, 1)
Kalenderwoche = (datum - t - 3 + (Weekday(t) + 1) Mod 7) \ 7 + 1
End Function
Private Sub CommandButton1_Click()
Dim Name As String
Name = ThisWorkbook.Sheets("Tabelle1").Range("A2").Value
If Dir("I:\2010\" & Kalenderwoche(Date), vbDirectory) = "" Then MkDir "I:\2010\" &  _
Kalenderwoche(Date)
ThisWorkbook.SaveAs Name & " " & Kalenderwoche(Date) & ".xls"
End Sub
--------
Allerdings gibt´s dann einen Laufzeitfehler ´76´ mit dem Hinweis "Pfad nicht gefunden". Markiert wird dann der Bereich MkDir "I:\2010\" & Kalenderwoche(Date)
Hab´ ich hier etwas vergessen?
Viele Grüße
Marco
Anzeige
AW: Datei speichern, Name ist Kalenderwoche
17.08.2010 14:54:59
Hajo_Zi
Hallo Marco,
ich mache jetzt Feierabend.
Der Ordner von A2 ist vorhanden?
Gruß Hajo
AW: Datei speichern, Name ist Kalenderwoche
17.08.2010 15:06:01
mtremer
na dann wünsche ich Dir einen schönen Feierabend. Ich muss noch bis halb sechs :-(
Nein, der Ordner soll ja auch nicht A2 heißen, sondern I:\2010\KW33
Die Datei soll den Wert der Zelle A2 (da steht ein "Name" drin) kombiniert mit der KW und der Endung .xls bekommen. Anders: Jahr, KW des Ordners und KW des Names soll errechnet werden. So soll das aussehen:
"I:\aktuellesJahr\aktuelleKW\Name aktuelleKW.xls"
Beispiel für diese Woche "I:\2010\KW33\Name KW33.xls"
Oh jeh, das sieht ja schon schlimmer aus, als ich zuerst annahm. Ich dachte, das sei ein einfaches Problem, das sich mit einem "plopp" einfach lösen lässt. Na dann morgen auf ein Neues.
Viele Grüße
Marco
Anzeige
AW: Datei speichern, Name ist Kalenderwoche
17.08.2010 15:58:56
Hajo_Zi
Hallo Marco,
habe ich vielleicht nicht klar gschrieben. Der Ordner der in Zelle A2 steht ist schon vorhanden?
Also in der Zelle darf nur der Ordner stehen.
Gruß Hajo
AW: Datei speichern, Name ist Kalenderwoche
17.08.2010 16:54:26
mtremer
Na dann stehe ich wirklich auf dem Schlauch.
Also, in A2 steht kein Ordner, sondern ein Name einer Person (in meinem Beispiel als "Name" deklariert).
Genau genommen müsste ich aber Deine Frage mit nein beantworten.
Der Ordner, der zum Speichern genutzt werden soll, wird an einem Montag durch den Code (siehe "MkDir") angelegt. Für den Rest der Woche wird er genutzt, indem der Code ihn sucht und eine neue Datei darin speichert. Wieder steht in A2 ein Name.
Wenn in A2 nur der Ordner stehen kann, dann brauche ich eine andere Zelle dafür. A2 ist leider vorgegeben als Name. Ich kann mir vorstellen, dass ich vielleicht M1 dafür bekommen kann, der ist nämlich frei ;-)
Wenn ich Deine Frage wieder nicht verstanden habe, bitte ich um entschuldigung. Ich bin schon ganz wuschig.
Viele Grüße
Marco
Anzeige
AW: Datei speichern, Name ist Kalenderwoche
17.08.2010 19:04:44
Hajo_Zi
Hallo Marco,
Option Explicit
Private Sub CommandButton1_Click()
Dim Name As String
Name = ThisWorkbook.Sheets("Tabelle1").Range("A2").Value
'Name = "E:\Test\"
'If Dir("I:\2010\08\17", vbDirectory) = "" Then MkDir "I:\2010\08\17"
ThisWorkbook.SaveAs " "I:\2010\08\17\" & Name & Kalenderwoche(Date) & ".xls"
End Sub
Wie Du in meinem auskommentierten Code siehst steht bei mit auf Name der Ordner.
Ich habe es jetzt nochmal versucht.
Gruß Hajo
Anzeige
AW: Datei speichern, Name ist Kalenderwoche
17.08.2010 20:39:49
mpb
Hallo Hajo,
entschuldige die Einmischung, aber der Speicherpfad soll ja gerade nicht fest verdrahtet sein. Er muss zur Laufzeit angelegt werden, sofern er nicht bereits existiert. Der Pfadname muss sich zusammensetzen aus Laufwerksbuchstabe, aktuelles Jahr und aktuelle Kalenderwoche. Vielleicht schaust Du Dir meinen Versuch mal an, ich konnte leider nicht testen.
Gruß
Martin
AW: Datei speichern, Name ist Kalenderwoche
17.08.2010 20:34:01
mpb
Hallo Marco,
leider konnte ich es nicht testen. Wenn aber Dein weiter oben gepostetes Makro mit der "festen Verdrahtung" funktioniert, dann sollte es etwa so gehen:
Private Sub CommandButton1_Click()
Dim strName As String
Dim Jahr As String
Dim KW As String
Dim Pfad As String
Dim Pfad_komplett As String
Jahr = Year(Date)
KW = CStr(KALENDERWOCHE_DIN(Date))
strName = ThisWorkbook.Worksheets("Tabelle1").Range("A2").Value
Pfad_komplett = "I:\" & Jahr & "\" & KW & "\" & strName & " KW" & KW & ".xls"
Pfad = "I:\" & Jahr & "\" & KW
If Dir(Pfad, vbDirectory) = "" Then
MkDir Pfad
End If
ThisWorkbook.SaveAs Pfad_Name
End Sub
Probier's mal aus.
Gruß
Martin
Anzeige
AW: Etwas vergessen
17.08.2010 20:41:16
mpb
Hallo Marco,
in einem "normalen" Modul mus noch folgender Code stehen, damit die KW ermittelt werden kann:
Function KALENDERWOCHE_DIN(datum As Date) As Integer
Dim t&
t = DateSerial(Year(datum + (8 - Weekday(datum)) Mod 7 - 3), 1, 1)
KALENDERWOCHE_DIN = (datum - t - 3 + (Weekday(t) + 1) Mod 7) \ 7 + 1
End Function
Gruß
Martin
AW: Etwas vergessen
18.08.2010 11:00:58
mtremer
Hallo Hajo, Hallo Martin,
danke nochmal für die neuen Codes. Aber leider hängen sich beide beim Befehl auf, wenn der neue Ordner erstellt werden soll.
Bei der festen Ordnerlogik (Hajo) und auch bei der variablen Logik (Martin) gibt´s jeweis den Laufzeitfehler 76 und den Hinweis, dass der Pfad nicht gefunden wurde. Entsprechend wurde auch der Dateiname nicht verändert.
Wie kann ich das nun wieder lösen?
Viele Grüße
Marco
Anzeige
AW: Etwas vergessen
18.08.2010 11:36:14
Hajo_Zi
Hallo Marco,
falls es unterordner sind erstellst Du jeden schon einzeln.
Also C:\Hajo\August\23
Also ich will in 23 speichern und August ist noch nicht da. Erst August anlegen, dann 23
Gruß Hajo
fast fertig
18.08.2010 12:03:59
mtremer
yuhuu, es geht!
Hajos Code habe ich grad mal angepasst: "ThisWorkbook.SaveAs Pfad_Name" in "ThisWorkbook.SaveAs Pfad_komplett" geändert, dann den Ordner des Jahres und den der KW jeweils extra angelegt. So sieht das jetzt aus (die Funktion KALENDERWOCHE_DIN ist auch dabei, lässt sich aber hier nicht zusätzlich darstellen):
Private Sub CommandButton1_Click()
Dim strName As String
Dim Jahr As String
Dim KW As String
Dim Pfad As String
Dim Pfad_komplett As String
Jahr = Year(Date)
KW = CStr(KALENDERWOCHE_DIN(Date))
strName = ThisWorkbook.Worksheets("Tabelle1").Range("A2").Value
Pfad_komplett = "I:\" & Jahr & "\KW" & KW & "\" & strName & " KW" & KW & ".xls"
Pfad = "I:\" & Jahr & "\KW" & KW
'Ordner aktuelles Jahr
If Dir("I:\" & Jahr, vbDirectory) = "" Then
MkDir "I:\" & Jahr
End If
'Ordner aktuelles Jahr UND Kalenderwoche
If Dir(Pfad, vbDirectory) = "" Then
MkDir Pfad
End If
ThisWorkbook.SaveAs Pfad_komplett
End Sub
und hier ist die Zielgerade: kann ich den Code der beiden getrennt geprüften und angelegten Ordner kürzen? Das ist auch nur das Sahnehäuptchen, der Code funktioniert jetzt aus so schon wunderprächtig!
Viele Grüße
Marco
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige