Klick auf Button zählen

  • Sonstige

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Gast.

    Klick auf Button zählen

    hallo zusammen,
    da ich ein neuling bin, suche ich nach einer möglichkeit eigentlich für euch bestimmt eine Leichtigkeit eine Abfrage zu starten und zwar habe ich 2 Buttons "erstellt" und "geschlossen" und sobald auf einen dieser Button geklickt wird soll dieses mit dem aktuelle Datum und Time gezählt und in einer liste im hintergrund abgelegt werden.Danach möchte ich diese liste mit Excel auswerten.

    Vielleicht hat einer von euch eine Lösung

    Danke schon mal im Vorraus

    Gruß

    Jan
    Hallo jan65,

    du schreibst nicht, unter welcher Anwendung deine beiden Buttons erstellt wurden (da du deine Nachricht im Datenbankforum hinterlassen hast, nehme ich an Access?). Wo soll die Information gespeichert werden, in einer Datenbank oder in einem Excel-Sheet?

    Gruß Markus
    Hallo Markus,

    eigentlich ist es egal ob Excel o.Datenbank.Jetzt habe ich schon mal angefangen und noch habe ich einige Probleme.Das Datum wird in Excel übertragen leider überschreibt er mir ständig die Datumszeile und fragt mich am ende ob die Datei Test11.xls übeschreiben werden soll.Natürlich aber ohne zu Fragen automatisch.Meinen Versuch habe ich u.aufgeführt.

    Private Sub CommandButton1_Click()

    Dim xlsApp As Excel.Application
    Dim xlsWb As Excel.Workbook
    Dim xlsWs As Excel.Worksheet

    Dim Datum As Date

    Datum = Now()
    '
    Dim Zeile As Long
    Dim Spalte As Long
    Dim Wert As Variant
    Dim Wert1 As Variant
    '
    '
    '

    '

    Set xlsApp = CreateObject("Excel.Application")
    'Set xlsWb = xlsApp.Workbooks.Open("d:\VB-Projekte\test1")
    Set xlsWb = xlsApp.Workbooks.Add("D:\VB-Projekte\Test1")

    Set xlsWs = xlsWb.Worksheets("Tabelle1")
    xlsWs.Cells(1, 2) = "Neuer Wert"

    'Excel öffnen/sichtbar machen(Test ergebniss)
    'xlsApp.Visible = True

    '

    With xlsWs

    ' Reportübersicht
    '
    Zeile = 1
    .Cells(Zeile, 1) = "Datum"
    Zeile = 2
    .Cells(Zeile, 1) = Datum
    Zeile = 1
    .Cells(Zeile, 2) = "Geschlossen"
    Zeile = 2
    .Cells(Zeile, 2) = Geschlossen

    xlsWb.Save
    xlsWb.Close
    xlsApp.Quit


    End With
    End Sub



    Gruß

    Jan
    Hallo jan65,

    so klappt das nicht, ich brauche einfach einem Rahmen in dem ich meinen Quelltext erstelle. Wenn ich dich frage, hast du die Buttons in Access erstellt, wäre es sehr hilfreich, wenn ich eine Antwort bekäme.
    Für meinen Lösungsvorschlag ist es eben nicht egal ob die Daten in Access oder Excel gespeichert werden.
    Handelt es sich um eine fortlaufende Datenaufzeichnung ("For Append") oder wird jedesmal eine neue Datei erstellt die dann seperat ausgewertet wird (evtl. mit entsprechenden Performance-Einbußen, da viele Dateien geöffnet werden müssen)
    Versuche doch bitte Sinn und Zweck des Zeit-Stempels zu erläutern, dann kann ich die auch sinnvoll helfen.

    Gruß Markus
    Hallo Markus,

    danke schon mal im vorraus für die schnelle Bemühung.Also die Button habe ich in Access erstellt.Es sollte schon eine fortlaufende aufzeichnung sein, die jedesmal in einen Exceldatei in eine neue zeile mit Datum eingetragen wird.

    Gruß

    Jan

    und nochmals Danke
    Hallo jan65,

    da ich leider immer noch keine detaillierte Info bekommen habe,
    X(
    -Wie sollen die Zeitstempel formatiert sein?
    -Sollen die Zeitstempel aus verschiedenen Quellen in demselben Worksheet abgespeichert werden...usw.

    bekommst du nun einfach eine Lösung:
    Es gibt eine Initialisierungs-Prozedur, um die Variablen modulweit zur Verfügugn zu stellen und entsprechend eine Unload-Prozedur, in der du sicher den Speicher wieder freigibst. Diese beiden Prozeduren musst du sinnvoll in deine Datenbank einbauen, damit die Excel-Instanz auch wieder zerstört wird. Es wäre natürlich sehr viel performanter, wenn du diese Zeitstempel in der Datenbank verwalten würdest, da du mir den Sinn der Anwendung nicht erläutert hast, beschränke ich mich hier auf die Excel-Variante.

    Bei jedem neu gesetzten Stempel wird eine neue Zeile in dem Worksheet erzeugt, das war eben die schnellste Methode :]

    Hier der Quelltext (unter Einbindung der Microsoft Excel Object Library):

    Option Explicit
    Dim xlApp As Excel.Application
    Dim wbk As Workbook
    Dim wks As Worksheet
    Dim strWksPath As String
    Dim strWksName As String

    Sub initExcel()
    strWksPath = "D:\BeispielDatei.xls"
    strWksName = "Zeitstempel"
    Set xlApp = New Excel.Application
    With xlApp
    .Visible = True
    On Error Resume Next
    Set wbk = .Workbooks.Open(strWksPath)
    'Falls Datei noch nicht existiert wird sie erzeugt**********
    If Err.Number = 1004 Then
    Set wbk = .Workbooks.Add
    Set wks = wbk.Worksheets(1)
    wks.Name = strWksName
    With wks
    .Cells(1, 1).Value = "Geöffnet"
    .Cells(1, 2).Value = "Geschlossen"
    End With
    '************************************************************
    Else
    Set wks = wbk.Worksheets(strWksName)
    End If
    Err.Clear
    End With
    End Sub

    Sub cmdOpen()
    writeTimeStamp 1
    End Sub

    Sub cmdClose()
    writeTimeStamp 2
    End Sub

    Sub writeTimeStamp(lngColumn As Long)
    Dim lngRow As Long
    lngRow = wks.Cells.SpecialCells(xlCellTypeLastCell).Row + 1
    wks.Cells(lngRow, lngColumn) = Now
    End Sub

    Sub unloadExcel()
    xlApp.DisplayAlerts = False
    wbk.SaveAs strWksPath
    xlApp.DisplayAlerts = True
    wbk.Close
    xlApp.Quit
    Set wks = Nothing
    Set wbk = Nothing
    Set xlApp = Nothing
    End Sub

    Ich hoffe, das hilft dir.

    Gruß Markus
    Hallo Markus,

    danke für Deine Hilfsbereitschaft,Deine Lösung ist sehr gut, aber leider habe ich mich doch noch etwas reingekniet und bin mit Excel auf eine lösung in dem ich in einer Tabelle 2 Button erstellt habe gekommen und den folgenden Code geschrieben habe der auch wunderbar funktioniert.

    Private Sub CommandButton1_Click()

    Dim xlsApp As Excel.Application
    Dim xlsWb As Excel.Workbook
    Dim xlsWs As Excel.Worksheet

    Dim Datum As Date


    Datum = Now()
    '
    Dim Zeile As Long
    Dim Spalte As Long
    Dim Wert As Variant
    Dim Wert1 As Variant
    '

    Set xlsApp = CreateObject("Excel.Application")
    Set xlsWb = xlsApp.Workbooks.Open("d:\VB-Projekte\test2")

    Set xlsWs = xlsWb.Worksheets("Tabelle1")


    With xlsWs

    ' Reportübersicht
    '
    Zeile = 1
    Do While .Cells(Zeile, 1) <> ""
    Zeile = Zeile + 1
    Loop


    .Cells(Zeile, 1) = Datum



    xlsWb.Save
    xlsWb.Close
    xlsApp.Quit


    End With
    End Sub


    Private Sub Geschlossen_Click()

    Dim xlsApp As Excel.Application
    Dim xlsWb As Excel.Workbook
    Dim xlsWs As Excel.Worksheet

    Dim Datum As Date

    Datum = Now()
    '
    Dim Zeile As Long
    Dim Spalte As Long
    Dim Wert As Variant
    Dim Wert1 As Variant
    '
    '
    Set xlsApp = CreateObject("Excel.Application")
    Set xlsWb = xlsApp.Workbooks.Open("d:\VB-Projekte\test2")

    Set xlsWs = xlsWb.Worksheets("Tabelle1")
    xlsWs.Cells(1, 2) = "Geschlossen"


    With xlsWs

    Zeile = 2
    Do While .Cells(Zeile, 2) <> ""
    Zeile = Zeile + 1
    Loop

    .Cells(Zeile, 2) = Datum


    xlsWb.Save
    xlsWb.Close
    xlsApp.Quit

    End With
    End Sub

    Aber ich finde es super das man sich hier so wunderbar Erfahrungen austauschen kann und dadurch nur lernt.Du hast mir auf jedefall sehr geholfen weiter so TOP TOP TOP.

    Gruß

    Jan :P