Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 3 von 5 ErsteErste 12345 LetzteLetzte
Ergebnis 21 bis 30 von 45

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

  1. #21
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von PHW Beitrag anzeigen
    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:

    Code:
    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?
    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
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  2. #22
    PHW ist offline Benutzer
    Themenstarter
    Registriert seit
    02.08.2010
    Beiträge
    32
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Alles klar, Danke!

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

  3. #23
    PHW ist offline Benutzer
    Themenstarter
    Registriert seit
    02.08.2010
    Beiträge
    32
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Funktioniert leider nicht

    Code:
    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 "Auto_Open" nicht ausgeführt wird, wenn ich die Datei mit
    Code:
    Workbooks.Open pfad & "Vorlage.xlsm"
    öffne!
    Muss nachdem es das erste mal funktioniert hat immer wieder manuell gestartet werden. Ich verstehs nicht

  4. #24
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Dann speicher die aktuelle mappe mit saveas lass sie offen und lösche den inhalt!
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  5. #25
    Registriert seit
    17.09.2003
    Beiträge
    31
    Danke
    1
    Erhielt 5 Danke für 4 Beiträge

    Standard

    Wenn die Datei geöffnet bleibt, dann ist die Methode "Auto_Open" 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.

  6. #26
    PHW ist offline Benutzer
    Themenstarter
    Registriert seit
    02.08.2010
    Beiträge
    32
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Guten Morgen,

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

    Das in "Diese Arbeitsmappe"
    Code:
    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"

    Code:
    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 Auto_Open 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

  7. #27
    Registriert seit
    17.09.2003
    Beiträge
    31
    Danke
    1
    Erhielt 5 Danke für 4 Beiträge

    Standard

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

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

  8. Folgender Benutzer sagt Danke zu pm für den nützlichen Beitrag:

    Paule (03.11.2010)

  9. #28
    PHW ist offline Benutzer
    Themenstarter
    Registriert seit
    02.08.2010
    Beiträge
    32
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

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

    Code:
     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?
    Geändert von PHW (03.11.2010 um 11:32 Uhr)

  10. #29
    PHW ist offline Benutzer
    Themenstarter
    Registriert seit
    02.08.2010
    Beiträge
    32
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Habs rausgefunden:

    Code:
    Application.DisplayAlerts = False
    'Dann speichern
    Code:
    Application.DisplayAlerts = True


    Allerdings versteh ich noch nicht warum er mir im ersten tabellenblatt nur die ersten paar Zeilen löscht...
    Geändert von PHW (03.11.2010 um 12:10 Uhr)

  11. #30
    Registriert seit
    17.09.2003
    Beiträge
    31
    Danke
    1
    Erhielt 5 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    probiers mal damit... Vielleicht mag er das "Selection.End(xlDown)" nicht
    Code:
        For Each sh In ThisWorkbook.Sheets
            sh.Range("B2:D65536").ClearContents
        Next

Ähnliche Themen

  1. Garagentor automatisch schließen
    Von swimma im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 09.10.2011, 13:42
  2. Seiten nicht automatisch speichern
    Von P_Achtler im Forum E-CAD
    Antworten: 4
    Letzter Beitrag: 14.03.2011, 17:49
  3. wo muss Bedienstelle für Tür öffnen/schließen plaziert sein?
    Von demerzel im Forum Maschinensicherheit - Normen und Richtlinien
    Antworten: 7
    Letzter Beitrag: 27.03.2009, 11:56
  4. Antworten: 6
    Letzter Beitrag: 03.03.2009, 17:43
  5. Dateien automatisch öffnen, speichern und wieder schließen
    Von CrazyCat im Forum PC- und Netzwerktechnik
    Antworten: 2
    Letzter Beitrag: 20.02.2006, 15:13

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •