# Exceltabelle am Monatsende automatisch speichern, schließen und leere Vorlage öffnen



## PHW (1 November 2010)

Hallo,

Nachdem ich nicht nur das Forum hier, sondern auch andere durchforscht und studiert habe, bin ich leider noch nicht auf die Lösung meines Problems gestoßen!
Ich hoffe das mir hier jemand weiterhelfen kann!

Zu meiner Frage etwas Hintergrundwissen 

Ich protokolliere mithilfe einer Exceldatei den Zustand einer bzw. mehrerer Variablen in WinCC. Das ganze basiert auf einer OPC-DA Verbindung und funktioniert auch sehr gut. Beim Öffnen der Exceldatei wird automatisch der OPCClient gestartet (VBA Skript) und schreibt die Zustände der Variablen mit.
Die aufgezeichneten Daten werden dann als Kreisdiagramm graphisch dargestellt.

Zur eigentlichen Frage:

Ich möchte die Datei am Monatsende automatisch abspeichern (z.B. unter C:\Zielordner\Oktober) und dann eine neue vorbereitete Exceldatei öffnen. Bei der würde ja dann die Aufzeichung wieder automatisch starten.
Am Monatsende wieder automatisch speichern (dann unter C:\Zielordner\November) und wieder die leere Datei öffnen, usw.

Mein Wissen was Hochsprachen angeht ist leider sehr beschränkt und komme hier einfach nicht weiter!
Wär nett wenn mir jemand einen Lösungsvorschlag machen könnte, bzw. mir irgendwie weiterhelfen kann.

Danke schonmal für die Mühe und schöne Grüße
Philipp


----------



## jack911 (1 November 2010)

Hallo,

Bei Monatsende per VBA liefert Google einiges...

z.B:

http://www.spotlight-wissen.de/archiv/message/228783.html 

dann

ActiveWorkbook.SaveAs Filename:=""
ActiveWorkbook.Close (False)
Workbooks.Open Filename:=""


----------



## PHW (1 November 2010)

Super Danke!
Vielleicht hab ich auch einfach nur nach dem falschen gesucht...excel schließen neu öffnen vba..bla bla bla

Manchmal sieht man den Wald vor lauter Bäumen nicht!
Danke, ich meld mich wenn ich erfolgreich war!

Grüße

Edit: Wobei diese verlinkte Funktion ja "nur" ermittelt wieviele Tage der Monat hat und diese als Fenster ausgibt!
        Die Datei speichern tut es so auch, wenn auch nicht mir dem aktuellen Monatsnamen. Aber ich denke das bekomm ich hin! 
        Aber die Folgedatei wird bei mir so nicht geöffnet!


----------



## Larry Laffer (1 November 2010)

Hallo,
das bekommst du doch mittels Funktion "ActiveWorkbook.SaveAs " quasi schon geliefert. Damit hast du die Datei mit dem "neuen" Namen ...

Gruß
Larry


----------



## PHW (1 November 2010)

Jap, da hast du Recht!

Aber ich möchte das ja in Verbindung mit dem Monatswechsel.

D.h. wenn ein neuer Monat beginnt die Datei abspeichern und eine neue Datei öffnen! Komm einfach nicht klar damit!

Ich bekomm ein Makro hin das eine atei unter einem gewissen Namen speichert, aber dann hört es leider auf mit meinen geistigen Ergüssen  Mit "ActiveWorkbook.SaveAs" kann ich zwar speichern, aber der Sinn besteht ja darin das automatisch zu machen, ohne manuell noch eingreifen zu müssen!

Wenn ich das Skript habe das eben so funktioniert kann ich den Rest noch anpassen...Dateinamen etc. Aber soweit komm ich leider nicht!

Die oben genannte Monatsende-Funktion bringt mir leider auch nichts!


----------



## Matze001 (1 November 2010)

Ich würd es ganz einfach lösen.

Immer wenn Tag des Monats 1 ist (flanke Positiv) mache dein Prozedere.

MfG

Marcel


----------



## PHW (1 November 2010)

Das wär natürliche auch eine Lösung. Habs eigentlich mehr mit SPS-Programmierung, da sind mir Flanken geläufig^^

Wie kann ich das mit VBA realisieren?


----------



## Rainer Hönle (2 November 2010)

Alten Tag merken und wenn Alter Tag <> Neuer Tag und Neuer Tag = 1, dann ist die Flanke da.


----------



## Larry Laffer (2 November 2010)

Hallo,
wenn der Rechner wirklich immer durchläuft dann ginge es so, wie von Rainer beschrieben. Ist er aber irgendwann einmal aus (vielleicht über den Monatswechsel) so könnte man auf gleichem Weg auch den Monat vergleichen - allerdings mit einem in der Tabelle abgespeicherten Wert.

Gruß
Larry


----------



## PHW (2 November 2010)

Und wie sieht das dann in VBA aus?


----------



## Larry Laffer (2 November 2010)

Und - wie sieht das in VBA aus, was du aktuell schon hast ?


----------



## volker (2 November 2010)

zum ausführen zu einem bestimmten zeitpunkt kannst du das objekt OnTime benutzen


----------



## pm (2 November 2010)

Hallo,

ich würde das z.B. so lösen:


```
Private Sub Workbook_Open()
    Dim datum As String
    Const pfad As String = "C:\Zielordner\"
    
    datum = Format(Now, "mmmm")
    
    If Dir(pfad & datum & "*") = "" Then
        ThisWorkbook.SaveAs pfad & datum & ".xls"
        Workbooks.Open pfad & "Vorlage.xls"
        ThisWorkbook.Close False
    End If

End Sub
```
Falls es nicht beim Öffnen passieren soll, kannst Du auch diese beiden
Subs nehmen:

```
Private Sub Workbook_BeforeClose(Cancel As Boolean)
End Sub
```
oder


```
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
End Sub
```


----------



## PHW (2 November 2010)

Dankeschön, das sieht genau nach dem aus was ich brauche!

Mein Stand ist gerade folgender:


```
Sub Test()


    Dim aktDate As Date   'aktuelles Datum
    Dim endDate As Date  'Monatsende
      
    aktDate = Day(Now()) & "." & Month(Now()) & "." & Year(Now())
    
    endDate = DateSerial(Year(aktDate), Month(aktDate) + 1, 1) - 1
     
    If (aktDate = endDate) Then
    ActiveWorkbook.SaveAs Filename:="C:\Users\Administrator\Desktop\Verfügbarkeit_" & endDate & ".xlsm"
    
    End If
    
End Sub
```

Also das speichern funktioniert, allerdings müsste ich so ja dann das Problem haben, dass es eben 24h immer wiederholt wird?
das aktDate= endDate ist ja 24h "true"...aber vielleicht kann ich das ja mit der Uhrzeit noch erschlagen!


----------



## Jochen Kühner (2 November 2010)

PHW schrieb:


> Dankeschön, das sieht genau nach dem aus was ich brauche!
> 
> Mein Stand ist gerade folgender:
> 
> ...




Application.OnTime now + timevalue("24:00:00"), "test"


----------



## Larry Laffer (2 November 2010)

PHW schrieb:


> Also das speichern funktioniert, allerdings müsste ich so ja dann das Problem haben, dass es eben 24h immer wiederholt wird?
> *das aktDate= endDate ist ja 24h "true"...*aber vielleicht kann ich das ja mit der Uhrzeit noch erschlagen!


 
... wie ich schon geschrieben habe ... ich würde mir irgendwo an nicht relevanter Stelle im Sheet das ablegen, dass ich schon gearbeitet habe und dies als zusätzliche Bedingung mit einbauen - vielleicht so :
	
	



```
If (aktDate = endDate) and ([A1]=0) Then
    ActiveWorkbook.SaveAs ...
    [A1]=1
else
   [A1]=0
End If
```
Gruß
Larry


----------



## pm (2 November 2010)

Wie wäre es damit?


```
Private Sub Workbook_Open()
    Dim aktDate As Date   'aktuelles Datum
    Dim endDate As Date  'Monatsende
    Const pfad As String = "C:\Users\Administrator\Desktop\Verfügbarkeit_"
      
    aktDate = Format(Now(), "dd.mm.yyyy")
    
    endDate = DateSerial(Year(aktDate), Month(aktDate) + 1, 1) - 1
     
    If Dir(pfad & endDate & "*") = "" Then
        If (aktDate = endDate) Then
            ActiveWorkbook.SaveAs Filename:=pfad & endDate & ".xlsm"
        End If
    End If
End Sub
```


----------



## PHW (2 November 2010)

Top Sache  Vielen Dank für die Hilfe, auch an die natürlich, die sich mit meinem Problem beschäftigen!

So siehts jetzt aus!


```
Sub Workbook()
    Dim aktDate As Date   'aktuelles Datum
    Dim endDate As Date   'Monatsende
    Const pfad As String = "C:\Users\Administrator\Desktop\Verfügbarkeit_"
      
    aktDate = Format(Now(), "dd.mm.yyyy")
    
    endDate = DateSerial(Year(aktDate), Month(aktDate) + 1, 1) - 1
     
    If Dir(pfad & endDate & "*") = "" Then
        If (aktDate = endDate) Then
            ActiveWorkbook.SaveAs Filename:=pfad & endDate & ".xlsm"
            Workbooks.Open pfad & "Vorlage.xlsm"
            ThisWorkbook.Close False
        End If
    End If
End Sub
```

Wenn ich diese Zeile richtig verstehe wird die Datei innerhalb der 24h nur einmal abgespeichert. Nähmlich dann, wenn die Datei noch NICHT existiert. Nachdem sie das erste mal abgespeichert wurde springt er aus der if-Anweisung wieder raus. Nur das ich das richtig verstanden habe


----------



## PHW (2 November 2010)

Noch ein Frage:

Wo genau muss ich das Skript einbinden das es beim öffnen automatisch gestartet wird?

Habs jetzt mit Private Sub Workbook_Open()
in Modul 1 eingebunden?

edit: habs gefunden...diese Arbeitsmappe wars


----------



## PHW (2 November 2010)

Und das nächste Problem:

Habs um zu testen mal mit meiner PC Uhr simuliert, dabei ist mir folgendes Problem aufgefallen:

Beim Start wird die ganze Prozedur gestartet:

wenn das "aktDate <> endDate" ist, passiert nichts (ist ja auch gut so).

wenn sich dann das Datum so ändert, dass "aktDate = endDate" ist passiert auch nichts 

Wenn allerdings das "aktDate = endDate" ist und erst dann die Datei geöffnet wird, dann funktioniert es.

Hab meins zur Vorsicht nochmals angehängt:


```
Sub Workbook_Open()
    Dim aktDate As Date   'aktuelles Datum
    Dim endDate As Date   'Monatsende
    Const pfad As String = "C:\Users\Administrator\Desktop\Verfügbarkeit_"
      
    aktDate = Format(Now(), "dd.mm.yyyy")
    
    endDate = DateSerial(Year(aktDate), Month(aktDate) + 1, 1) - 1
        
    If Dir(pfad & endDate & "*") = "" Then
        If (aktDate = endDate) Then
            ActiveWorkbook.SaveAs Filename:=pfad & endDate & ".xlsm"
            Workbooks.Open pfad & "Vorlage.xlsm"
            ThisWorkbook.Close False
        End If
    End If
    
End Sub
```
Muss man da mit einer Schleife arbeiten?
Denn jetzt wird das gestartet beim Öffnen...wenn die Bedingung nicht erfüllt ist, also "endDate <> aktDate" ist, dann ist das ja für das Programm erledigt und es kommt ja gar nicht mehr an den Anfang des if-Blocks?


----------



## Jochen Kühner (2 November 2010)

PHW schrieb:


> Und das nächste Problem:
> 
> Habs um zu testen mal mit meiner PC Uhr simuliert, dabei ist mir folgendes Problem aufgefallen:
> 
> ...



Ja, du musst das script immer wieder aufrufen, documentopen sagt ja schon, das wird nur beim öffnen gemacht. Das zyklische aufrufen kannst du bspw mit Application.OnTime now + timevalue("24:00:00"), "test"
Machen


----------



## PHW (2 November 2010)

Alles klar, Danke!

und wo genau muss ich das einbinden? bekomm je nachdem wo ich es einfüge unterschiedliche fehlermeldungen!


----------



## PHW (2 November 2010)

Funktioniert leider nicht :-(


```
Sub Auto_Open()

    Dim aktDate As Date   'aktuelles Datum
    Dim endDate As Date   'Monatsende
    Const pfad As String = "C:\Users\Administrator\Desktop\Verfügbarkeit_"
      
    aktDate = Format(Now(), "dd.mm.yyyy")
    
    endDate = DateSerial(Year(aktDate), Month(aktDate) + 1, 1) - 1
   
    If Dir(pfad & endDate & "*") = "" Then
        If (aktDate = endDate) Then
            ActiveWorkbook.SaveAs Filename:=pfad & endDate & ".xlsm"
            Workbooks.Open pfad & "Vorlage.xlsm"
            ThisWorkbook.Close False
        End If
    End If
    
    Application.OnTime Now + TimeValue("00:00:10"), "Auto_Open"
    
    
End Sub
```

Dieser Code wurde im Modul1 eingefügt. Wenn er unter "Diese Arbeitsmappe" gespeichert wird kann er nicht auf das Makro zugreifen. Wie ich bis jetzt raus gefunden habe, muss es eben in einem Modul stehen!

Wenn ich dann die Exceldatei öffne funktioniert es, dann änder ich das Datum auf den Monatsletzten, dann wird die Datei gespeichert und die Vorlage geöffnet...Funktioniert alles gut bis dahin:

Dann hab ich festgestellt das "Autpen" nicht ausgeführt wird, wenn ich die Datei mit 
	
	



```
Workbooks.Open pfad & "Vorlage.xlsm"
```
 öffne!
Muss nachdem es das erste mal funktioniert hat immer wieder manuell gestartet werden.  Ich verstehs nicht


----------



## Jochen Kühner (2 November 2010)

Dann speicher die aktuelle mappe mit saveas lass sie offen und lösche den inhalt!


----------



## pm (3 November 2010)

Wenn die Datei geöffnet bleibt, dann ist die Methode "Autpen" natürlich nicht die Lösung. Wie sieht denn das "OPC"-Makro aus, da kannst Du vielleicht die Abfrage einbauen bzw. den Aufruf mit "Call Makroname" machen.


----------



## PHW (3 November 2010)

Guten Morgen,

ich hab jetzt alles so gelöst, und es funktioniert auch...fast 

Das in "Diese Arbeitsmappe"

```
Private Sub Workbook_Open()
     'When the Workbook is opened the timer is activated to run MyMacro at one second past midnight
     Application.OnTime TimeValue("00:00:01"), "MonatlichSpeichern"
End Sub
```

Das in "Modul1"


```
Sub MonatlichSpeichern()

    'the timer is reactivated to run MyMacro again tomorrow at one second past midnight
    Application.OnTime TimeValue("00:00:01"), "MonatlichSpeichern"

    Dim aktDate As Date   'aktuelles Datum
    Dim endDate As Date   'Monatsende
    Const pfad As String = "C:\Users\Administrator\Desktop\Verfügbarkeit_"
      
    aktDate = Format(Now(), "dd.mm.yyyy")
    
    endDate = DateSerial(Year(aktDate), Month(aktDate) + 1, 1) - 1
   
        If (aktDate = endDate) Then
        'save the current file to another location
        ActiveWorkbook.SaveAs ("C:\Users\Administrator\Desktop\Verfügbarkeit_" & endDate & ".xlsm")
        
        'Delete all data from the range A1:D10
        Range("B2:D10").ClearContents
        
        End If
    
End Sub
```

Die Funktion ist so wie ich zufrieden bin: Am Monatsende wird die Datei unter dem Monatsletzten gespeichert ("Verfügbarkeit_Datum.xlsm").
aber das löschen der Zellen funktioniert noch nicht!

Ich habe 15 Tabellenblätter in der Exceldatei und in allen möchte ich nachdem die Datei gespeichert wurde die Spalte B,C,D von B3/C3/D3 bis nach Unten löschen. Kann mir da vielleicht noch jemand helfen?

@pm

Das OPC Makro ist ein Client der mir dauernd den Zustand einer Variablen abfragt und mir den aktuellen Status mit Zeitstempel der Zustandänderung in eine Zeile schreibt! So kann ich mir die Anlagenverfügbarkeit aufzeichnen und graphisch darstellen!
Z.B. Maschine xy lief letzten Monat 30% auf Vollast, 50% auf Teillast und 20% Störungen. War das eigentliche Thema meiner Technikerarbeit und funktioniert einwandfrei...Als kleines Zusatzding hab ich mir dieses Thema hier noch einfallen lassen. War nicht gefordert, aber man lernt ja immer für sich selbst 

Das Makro ist in jedem Tabellenblatt gespeichert und wird beim öffnen automatisch gestartet! Hab dazu ein Autpen in Modul1 eingefügt, das mir jedes Makro im jeweiligen Tabellenblatt startet!

Aber wie gesagt, das einbinden werd ich hinbekommen...nur eben noch die Funktion mit den Zellen löschen...

Danke nochmals

Grüße Phil


----------



## pm (3 November 2010)

in jedem Blatt Bereich B3:C3 bis nach unten löschen...


```
For Each sh In ThisWorkbook.Sheets
        sh.Select
        Range("B3:D3").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.ClearContents
    Next
```


----------



## PHW (3 November 2010)

Danke, funktioniert bis auf Tabellenblatt1, Da werden nur die erste 5 Zeilen gelöscht?


```
If (aktDate = endDate) Then
        'save the current file to another location
        ActiveWorkbook.SaveAs ("C:\Users\Administrator\Desktop\Verfügbarkeit_" & endDate & ".xlsm")
        
        'Delete all data from the range B3:D3
        For Each sh In ThisWorkbook.Sheets
        sh.Select
        Range("B3:D3").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.ClearContents
        Next
        
        'Resave

        ActiveWorkbook.SaveAs ("C:\Users\Administrator\Desktop\Verfügbarkeit_Vorlage" & ".xlsm")

        End If
```

Ich speicher mir die Datei wieder unter Vorlage, da sonst die monatlich gespeicherte Datei zur weiteren Aufzeichnung verwendet wird. Kann ich das so Programmieren das die Meldung "Datei gibt es schon, soll ersetzt werden? nicht kommt, bzw. mit "Ja" beantwortet wird?


----------



## PHW (3 November 2010)

Habs rausgefunden:



```
Application.DisplayAlerts = False
'Dann speichern
```


```
[FONT=Arial][SIZE=2][COLOR=#000000]Application.DisplayAlerts = True[/COLOR][/SIZE][/FONT]
```


Allerdings versteh ich noch nicht warum er mir im ersten tabellenblatt nur die ersten paar Zeilen löscht...


----------



## pm (3 November 2010)

probiers mal damit... Vielleicht mag er das "Selection.End(xlDown)" nicht

```
For Each sh In ThisWorkbook.Sheets
        sh.Range("B2:D65536").ClearContents
    Next
```


----------



## Paule (3 November 2010)

pm schrieb:


> probiers mal damit... Vielleicht mag er das "Selection.End(xlDown)" nicht





pm schrieb:


> ```
> [COLOR=black][FONT=Verdana]  For Each sh In ThisWorkbook.Sheets[/FONT][/COLOR]
> [COLOR=black][FONT=Verdana]      sh.Range("B2:D65536").ClearContents[/FONT][/COLOR]
> [COLOR=black][FONT=Verdana]  Next[/FONT][/COLOR]
> ```


Bei der Variante werden halt auch unnötige Zeilen markiert und gelöscht.

Ich habe das bisher immer so gelöst:

```
[COLOR=black][FONT=Verdana]Dim ZeileEnd[/FONT][/COLOR]
[FONT=Verdana][COLOR=black]  Selection.SpecialCells(xlLastCell).Activate[/COLOR][/FONT]
[FONT=Verdana][COLOR=black]          ZeileEnd = Selection.Row[/COLOR][/FONT]
[FONT=Verdana][COLOR=black]  Range(Cells(3, 2), Cells(ZeileEnd, 4)).Select[/COLOR][/FONT]
[FONT=Verdana][COLOR=black]  Selection.ClearContents[/COLOR][/FONT]
```
@PM: Allerdings gefällt mir Deine erste Variante viel besser und bei einem kurzen Test hat sie auch funktioniert, darum ein dickes


----------



## PHW (3 November 2010)

Die erste Lösung wär sicher die sauberste und eleganteste Lösung gewesen, funktioniert eigentlich auch.
Aber immer im ersten Tabellenblatt funktioniert sie eben nicht?
Weiß auch nicht warum aber es werden immer unterschiedlich zwischen 5 und 12 zeilen gelöscht!

Naja, mit der anderen lösung gehts ja jetzt 

habs nochmal mit "Selection.End(xldown)" versucht, klappt als "einfaches Makro" in einer anderen Tabelle hervorragend, aber bei mir mit eingebunden eben nicht perfekt!


----------



## Paule (3 November 2010)

PHW schrieb:


> habs nochmal mit "Selection.End(xldown)" versucht, klappt als "einfaches Makro" in einer anderen Tabelle hervorragend, aber bei mir mit eingebunden eben nicht perfekt!


Hast es schon mal mit dem 
(xlLastCell) probiert?


----------



## PHW (4 November 2010)

Ne, hab ich noch nicht!
Aber ich werd es bei Gelegenheit testen.

Habs heute mal im Geschäft umgesetzt und funktioniert bis jetzt super!
Das es in der anderen Lösung immer die komplette Spalte löscht stört mich eigentlich recht wenig...muss ja nicht ich sondern das Programm arbeiten 

Jetzt muss ich nur noch rausfinden wie ich die Datei so abspeicher, das diese beim Öffnen die Makros nicht mehr ausführen will, bzw die Makros nicht mehr drin sind...aber mal schaun was Dr.Google so weiß!


----------



## Oberchefe (4 November 2010)

> Jetzt muss ich nur noch rausfinden wie ich die Datei so abspeicher, das  diese beim Öffnen die Makros nicht mehr ausführen will, bzw die Makros  nicht mehr drin sind...aber mal schaun was Dr.Google so weiß!



Shifttaste drücken beim Öffnen ist warscheinlich keine Lösung?

ohne dass ich den kompletten Thraed durchgelesen hätte: eine andere Möglichkeit wäre evtl. dass das Ding mit dem Makro beim Speichern eine Seite markiert, in ein neues Sheet kopiert und dieses dann jeweils abspeichert.


----------



## Larry Laffer (5 November 2010)

In dem Fall fällt mir da auch nur die Lösung von Oberchefe ein ... "Inhalte kopieren"

Gruß
Larry


----------



## PN/DP (5 November 2010)

*Werte auslagern in csv-Datei*

Wäre es nicht einfacher, statt am Monatsende die gesamte Excel-Datei umständlich speichern/wieder öffnen ...
nur die aufgezeichneten Werte per Script in eine csv-Datei zu schreiben?

Harald


----------



## PHW (5 November 2010)

Hi,

ich habs doch abgeändert. Ich speicher die Datei, lösch dir Daten raus und speicher die leere Datei nur nochmals zur Sicherheit. 
Also quasi Speichern, leeren, speichern....

Das Ganze muss als Exceldatei gespeichert werden, da sich in der Datei Diagramme etc. befinden. Wenn sich derjenige, der sich für die Daten interessiert das in ner csv-Datei hat, muss er sich die Daten ja erstmal wieder importieren!

@ Oberchefe

1. Nein, Shifttaste drücken beim Öffnen ist keine Lösung 

2. eine andere Möglichkeit wäre evtl. dass das Ding mit dem Makro beim Speichern eine Seite markiert, in ein neues Sheet kopiert und dieses dann jeweils abspeichert.

Eigentlich würde es reichen wenn ich ein Diagramm mit den dazugehörigen Zellen G1:J2 speichern würde (*15 Tabellenblätter)...

Aber wie stell ich das an?
Wenn ich das auswähle und dann speicher, werden dann nicht die makros auch abgespeichert?


----------



## Larry Laffer (5 November 2010)

PHW schrieb:


> Eigentlich würde es reichen wenn ich ein Diagramm mit den dazugehörigen Zellen G1:J2 speichern würde (*15 Tabellenblätter)...
> 
> Aber wie stell ich das an?
> Wenn ich das auswähle und dann speicher, werden dann nicht die makros auch abgespeichert?


 
Nein, dann kann du erreichen, dass du nur die Inhalte kopierst (ohne die Logik).
Das kannst du am Besten ausprobieren, wenn du das Ganze handisch machst und währenddessen ein Makro aufzeichnest und das dann editierst ...

Gruß
Larry


----------



## pm (5 November 2010)

Kopiere einfach die Blätter die du brauchst und dann speichern...

z.B

```
Sheets(Array("Tabelle1", "Tabelle2", "Tabelle3")).Copy
ActiveWorkbook.SaveAs ("C:\Users\Administrator\Desktop\Verfügbarkeit_Vorlage" & ".xlsm")
```


----------



## PHW (5 November 2010)

@pm

dann wird die Datei aber immer noch mit Makros gespeichert!


----------



## pm (5 November 2010)

PHW schrieb:


> dann wird die Datei aber immer noch mit Makros gespeichert!



Da habe ich wahrscheinlich was falsch verstanden, dachte die "Ursprungsdatei" bleibt immer erhalten und jeden Monat wird etwas abgespeichert?


----------



## PHW (5 November 2010)

Ich glaub wir schreiben gerade aneinander vorbei 

Die Datei "Vorlage" (mit makros) wird einmal am Monatsende gespeichert ("Monatsdatei"), anschließend die Zellen gelöscht, dann wieder als "Vorlage" gespeichert und am Monatsende wieder von Vorne!

In der "Monatsdatei" möchte ich keine Makros haben...das soll dann einfach nur die stinknormale Exceldatei mit ein paar ausgefüllten Zellen und einem Diagramm sein.

So einen Befehl von wegen Workbook.SaveAsOhneMakros gibts ja wohl leider nicht oder?

Ist übrigens 2003er Excel...

Danke


----------



## Larry Laffer (5 November 2010)

PHW schrieb:


> So einen Befehl von wegen Workbook.SaveAsOhneMakros gibts ja wohl leider nicht oder?
> 
> Ist übrigens 2003er Excel...


 
Die Excel-Version spielt dafür keine Rolle.

Wie es geht ist ja mitltlerweile schon *ein paar Mal* genannt worden ...


----------



## PHW (5 November 2010)

Ruhig Blut....

Habs hinbekommen, hab nur noch einmal nachgefragt, da ich diverse Fehlermeldungen bekam wenn ich das Skript aufgerufen habe! (bzgl. Dateiformat, etc).
Teste das ganze bei mir mit Excel 2007 und da wird zwischen Arbeitsmappe (xls) und Arbeitsmappe mit Makro (xlsm) unterschieden.
Also spielt die Version sehr wohl eine Rolle!

Trotzdem Danke nochmals an alle.

Werde das Skript, wenn ich alles sauber auskommentiert habe mit einer kleinen Beschreibung reinsetzen.
Falls mal jemand nach solch einer Lösung suchen sollte!

Schönen Abend noch!


----------

