bei Button klick Variable in Excel Zellen abspeichern.

  • VB.NET

Es gibt 45 Antworten in diesem Thema. Der letzte Beitrag () ist von fichz.

    bei Button klick Variable in Excel Zellen abspeichern.

    Guten Morgen alle zusammen.

    Wenn ein Button gedrückt wird, soll dieser Auslösen, bestimmte Variablen in einem Excel File abzulegen.

    Bisher bin ich wie folgt vorgegangen:

    VB.NET-Quellcode

    1. Private Sub Button_IO_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_IO.Click
    2. Dim xlApp As Microsoft.Office.Interop.Excel.Application
    3. Dim xlWorkbook As Microsoft.Office.Interop.Excel.Workbook
    4. Dim xlWorksheet As Microsoft.Office.Interop.Excel.Worksheet
    5. Dim misValue As Object = System.Reflection.Missing.Value ' Für was steht diese Zeile den?
    6. xlApp = New Microsoft.Office.Interop.Excel.ApplicationClass ' Hier meckert er rum: Der Interoptyp "ApplicationClass" kann nicht eingebettet werden. Verwenden Sie stattdessen die entsprechende Schnittstelle.
    7. xlWorkbook = xlApp.Workbooks.Add(misValue)
    8. xlWorksheet = xlWorkbook.Sheets("Blendenauswertung")
    9. xlWorksheet.Cells(4, 2) = "test" 'Wird die position so angegeben?
    10. MsgBox("File created !")



    Wo liegen Fehler? Woran liegt der Fehler, welchen ich kommentiert habe?

    danke für eure Vorschläge schonmal im voraus.

    gruß andy
    Bin jetzt auf .txt umgestiegen, doch da hab ich auch problem.

    VB.NET-Quellcode

    1. Dim file As System.IO.StreamWriter
    2. file = My.Computer.FileSystem.OpenTextFileWriter("C:\Users\montageU\Dekstop\MontageU_Application1\MontageU_Application1\BlendeData00000000.txt", True) 'Der Dateiname soll allerdings immer automatisch um 1 Steigen
    3. file()
    4. file.WriteLine("Glanzstellen")
    5. file.Close()


    Er erstellt keine Datei.
    und dahaben wir dich wieder xD


    schreib halt den text zeilenweise....

    über for schleifen

    VB.NET-Quellcode

    1. Dim savef As New System.IO.StreamWriter("C:\Users\montageU\Dekstop\MontageU_Application1\MontageU_Application\BlendeData00000000.txt", True)
    2. savef.Writeline("einezeile nurschreiben")
    3. savef.write("ohne zeilenumbruch schreiben")
    4. for zeilen in temparray 'temparray wo dein text zum beispiel drine steht ;-)
    5. savef.writline(zeilen)
    6. next
    7. savef.close



    hoffe des hiloft dir weiter ^^


    daumen hoch

    lg :thumbsup:


    @edit was die datei angeht ist doch des leichteste hoff ich mal :| mach dir nen zähler der + steigt und dann ne do schleife die dann die datei pro durchlauf steigen lässt

    lg =)
    ich hätte es jetzt so gemacht

    VB.NET-Quellcode

    1. Dim nr As Integer = 0
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. Dim filepath As String = String.Format("C:\Users\montageU\Dekstop\MontageU_Application1\MontageU_Application1\BlendeData{0:00000000}.txt", nr)
    4. Dim filestream As IO.FileStream = New IO.FileStream(filepath, IO.FileMode.Create)
    5. Dim filewriter As IO.StreamWriter = New IO.StreamWriter(filestream)
    6. filewriter.WriteLine("Glanzstellen")
    7. nr += 1
    8. filewriter.Close()
    9. filestream.Close()
    10. End Sub
    @datsspeed

    VB.NET-Quellcode

    1. for zeilen in temparray 'temparray wo dein text zum beispiel drine steht ;-)
    2. savef.writline(zeilen)

    for zeilen in temparray meckert er ...
    (zeilen) is bei mir nich deklariert... als was soll ich das deklarieren? für was steht das wort in der klammer überhaupt?

    EDIT:

    mit folgendem code passiert nichts:

    VB.NET-Quellcode

    1. Dim savef As New System.IO.StreamWriter("C:\Users\montageU\Dekstop\MontageU_Application1\MontageU_Application\BlendeData00000000.txt", True)
    2. savef.Writeline("einezeile nurschreiben")
    3. savef.close


    @xtts02
    deine Lösung funktioniert auch nicht.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „a.setzer“ ()

    Um die Sache jetzt noch einfacher zu machen ( da danach noch eine weitere Herausforderung folgt)

    Hab ich mir das jetzt so gedacht.

    Wenn der NIO Button geklickt wird, soll in eine Variable 0 reingeschrieben werden. Wird er nochmal gedrückt, wird nochmal eine 0 reingeschrieben. dann steht 00 drin :) wird der IO Button geklickt wird eine 1 in die variable geschrieben dann steht 001 drin.

    dazu hab ich eine Variable angelegt.

    VB.NET-Quellcode

    1. Public auswertung As Integer


    zum Button habe ich hinzugefügt:

    VB.NET-Quellcode

    1. auswertung += "0"


    Wie kann ich im Debug Modus sehen was in meiner variable Auswertung drin steht?
    Hab ne textbox zusätzlich als Hilfe angebracht, im code steht

    VB.NET-Quellcode

    1. textbox_auswertung = auswertung


    auswertung wird mir aber blau unterstrichen.

    VB.NET-Quellcode

    1. auswertung += "0"

    wird nicht gehen
    hast du in der ersten Zeile Option Strict On stehen?

    du deklarierst "auswertung" als integer und rechnest mit += "0" (string)
    mach die "" weg dann sollte es auch funken ;)
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    wie kann ich den variableninhalt anschauen?
    muss doch eine möglichkeit geben über den debugger, oder?


    Ich raste gleich aus.. und das früh am morgen.
    Der Code

    VB.NET-Quellcode

    1. TextBox_auswertung.Text += "0"

    funktioniert auf meiner ersten Form.
    jetzt verwende ich das Prinzip wieder in ner anderen Form..
    er schreibt in die TextBox zwar eine 0 hin, aber beim 2.ten Klick nicht mehr, da steigt er aus dem debugger aus.

    EDIT: Fehlermeldung NullReferenceException wurde nicht behandelt

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „a.setzer“ ()

    hüpf mit einzelschritt (standardmässig F8) bis du zu dem wo der variable ein wert zugewisen wird (oder mit haltepunkt links in die Zeile setzen. Ist so ein roter Punkt dann).
    sobald die zeile fertig "gedebuggt" worden ist hat die variable einen wert (Einfach mit der Maus drüberfahren)
    Oder im Debuggen Pause drücken und unten im Überwachungsfenster den Variablennamen reinschreiben

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    so guten morgen erstmal ^^

    a.setzer schrieb:


    @datsspeed

    for zeilen in temparray meckert er ...
    (zeilen) is bei mir nich deklariert... als was soll ich das deklarieren? für was steht das wort in der klammer überhaupt?

    andy hast du den temparray als array oder liste deklaiert? die muss als liste oder array deklairt sein damit meine llösung funktioniert
    und in der muss dann jeder wert drin stehn von array bzw listen zelle 0 bis n in der reinfolge wie du sie drin haben willst...

    zeilen muss eig. nicht deklaiert werden wird automatisch deklairt eig.




    was dan den savef block angeht ... warum geht das nicht? wird die datei nicht angelegt oder was geschieht nicht?



    lg :sleeping:
    Wie gesagt ich versuch jetzt anders vorzugehen.
    Ich sammel erst meine Daten, nacher geb ich sie als Datei aus.

    VB.NET-Quellcode

    1. TextBox_auswertung.Text += "0"


    wenn ich den code 2mal ausführe kommt die Fehlermeldung. Wie unlogisch is das den eigentlich...
    Ich klicke auf den Button, er schreibt mir eine 0 rein... ich klicke nochmal drauf... er bringt ne Fehlermeldung.
    mach die "" weg
    am anfang is die variable leer dann funktioniert += 0 scheinbar noch
    nur du kannst keinen string addieren dann kommt fehler

    VB.NET-Quellcode

    1. Public auswertung as Integer
    2. auswertung += 0
    3. textbox_auswertung = CStr(auswertung)


    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten

    VB.NET-Quellcode

    1. Dim auswertung as Integer
    2. auswertung += 1
    3. Textbox_auswertung.Text = cStr(auswertung)


    muss gehen

    lg

    EDIT: willst du eigentlich mit auswertung rechnen oder soll er immer die Zahl 1 weiter reinschreiben?
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    wenn du weiterschreiben willst nimm keinen Integer sondern einen String

    VB.NET-Quellcode

    1. dim auswertung as string
    2. auswertung &= "1" 'nicht += sondern &=
    3. Textbox_auswertung.Text = auswertung


    dachte du wolltest rechnen ;)

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten