Clever-Excel-Forum

Normale Version: Formel mit Jahr und Datum automatisch ersetzen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5 6 7
Hi,

(16.12.2015, 13:28)snb schrieb: [ -> ]Man braucht nur Zelle A1:

Nicht ganz:
wenn ich es mit Deinem Makro mache, werden nur die beiden Datein vom 1.1. und vom 31.12. erstellt und nicht auch alle dazwischen, wie beim anderen Code.
Hallo Ralf,

Stimmt, Du warst nur schneller, mein Internet spinnt heute.

Weißt du was bei "If Dir(c00, 16) = "" Then MkDir c00" die 16 bedeutet, von 16 bis 23 funktioniert es auch (von 1 bis 15 funktioniert es nicht).

Gruß Willy
(16.12.2015, 16:21)WiK schrieb: [ -> ]Weißt du was bei "If Dir(c00, 16) = "" Then MkDir c00" die 16 bedeutet, von 16 bis 23 funktioniert es auch (von 1 bis 15 funktioniert es nicht).

Hallo Willy,

[attachment=3589]

Gruß Uwe
Danke Uwe,

habe sogar die Bibliothek gefunden.

Gruß Willy
Code:
Sub M_snb()
  y=[A1]
  c00 = "D:\Berichte\Bericht " & Right(y, 2)
  If Dir(c00, 16) = "" Then MkDir c00

  For j = DateSerial(y, 1, 1) To DateSerial(y, 12, 31)
    ActiveWorkbook.SaveAs c00 & "\" & Format(j, "yyyymmdd") & ".xlsx", 51
  Next
  ActiveWorkbook.Close 0
End Sub
Ist das nicht dasselbe wie:

Code:
Sub M_snb()
 y=[A1]
 c00 = "D:\Berichte\Bericht " & Right(y, 2)
 If Dir(c00, 16) = "" Then MkDir c00

 For j = Range("A1") To Range("B1")
   ActiveWorkbook.SaveAs c00 & "\" & Format(j, "yyyymmdd") & ".xlsx", 51
 Next
 ActiveWorkbook.Close 0
End Sub

? Wobei ich dieses Makro flexibler finde.
Hallo Ralf,

Hinsichtlich flexibel wäre noch was zu tun. Da sollte in der Schleife A2 und B2 stehen ... Smile
Würde ich im Prinzip auch so handhaben. Wenn mal mittendrin irgendein Fehler auftritt und schon etliche Daten erstellt sind, dann kann man in A2 ein neues Startdatum eingeben und an der Stelle weitermachen. Ich würde dazu aber noch in einer Zelle den "Iststand" ausgeben, damit ich nicht lange nach dem letzten Datum suchen muss. y hab ich rausgenommen, wegen einer Verwendung würde ich keine Variable einsetzen.

PHP-Code:
Sub M_snb()
  
Dim j%, c00$
  
c00 "D:\Berichte\Bericht " Right([a1], 2)
  If 
Dir(c0016) = "" Then MkDir c00
  
For Range("A2"To Range("B2")
    
ActiveWorkbook.SaveAs c00 "\" & Format(j, "yyyymmdd") & ".xlsx", 51
    Cells(2, 3) = ActiveWorkbook.name
  Next
  ActiveWorkbook.Close 0
End Sub 
Hallo Andre,

Wenn ich "Dim j%, c00$" verwende, ist "For j = Range("A2") To Range("B2")" gelb hinterlegt.
Nehme dafür aber "Dim c00 As String und Dim j As Long" läuft der Code durch.

@snb

Bei deinen Code, habe ich noch "Dim y As String" eingefügt, sonst bleibt der Code bei "y = [A1]" hängen und y ist blau hinterlegt.

Diesen Makro finde ich auch besser  ( flexibler ). Es brauch nur was in A2 und B2 geändert werden und nicht im Makro.
Code:
c00 = "D:\Berichte\Bericht " & Right([a1], 2)
 If Dir(c00, 16) = "" Then MkDir c00
 For j = Range("A2") To Range("B2")
Gruß Willy
Hi André,

(17.12.2015, 09:14)schauan schrieb: [ -> ]Hinsichtlich flexibel wäre noch was zu tun. Da sollte in der Schleife A2 und B2  stehen ... Smile

ja, klar.
Ich wußte, ich wollte vor dem posten noch was ändern.
Zu diesem Zweck braucht man weder ein Arbeitsblatt, noch 'option explicit'

Code:
Private sub Workbook_open()
   c00 = "D:\Berichte\Bericht " & Right(year(date), 2)

   If Dir(c00, 16) = "" Then
      MkDir c00

      For j = 1 to 365
        ThisWorkbook.SaveCopyAs c00 & "\" & Format(dateserial(year(date),1,j), "yyyymmdd") & ".xlsx"
     Next
  end if
End Sub
Seiten: 1 2 3 4 5 6 7