Über VB nächste freie Zeile in Excel füllen

  • VB6

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Über VB nächste freie Zeile in Excel füllen

    Hallo,

    ich bin recht neu was VB angeht. Ich habe eine Eingabemaske gebaut und dort sind 5 Felder enthalten. Wenn ich nun auf den Button speichern klicke, so sollen diese Daten in die nächste freie Zeile in einer definierten Excel Tabelle abgespeichert werden.

    Mit einer festen Zuordnung habe ich es bereits hinbekommen, aber dynamisch, dass er immer die nächste Zeile füllt, habe ich nicht hinbekommen

    Visual Basic-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim oExcel As Object
    3. Dim oBook As Object
    4. Dim oSheet As Object
    5. oExcel = CreateObject("Excel.Application")
    6. oBook = oExcel.Workbooks.Open("C:\Users\derneke\Desktop\Vorlagen\Book3.xls")
    7. oSheet = oBook.Worksheets(1)
    8. oSheet.Range("A7").Value = TextBox2.Text
    9. oSheet.Range("B7").Value = TextBox1.Text
    10. oSheet.Range("C7").Value = TextBox3.Text
    11. oSheet.Range("D7").Value = TextBox4.Text
    12. oSheet.Range("E7").Value = TextBox5.Text
    13. oSheet.Range("G7").Value = TextBox6.Text
    14. oExcel.DisplayAlerts = False
    15. oBook.SaveAs("C:\Users\derneke\Desktop\Vorlagen\Book3.xls")
    16. oExcel.DisplayAlerts = True
    17. oExcel.Quit()
    18. End Sub


    Also im Grunde genommen, soll beim ersten speichern alles in Zeile A2,B2,C2,D2,E2 usw. eingetragen werden und beim nächsten Speichern in Zeile A3,B3,C3,D3,E3 usw.

    Vielleicht hat jemand von euch eine Idee wie ich dies umsetzen kann.

    LG Dennis

    VB.NET-Quellcode

    1. r = oSheet.Cells(oSheet.Rows.Count,1).End(-4162).Row + 1 '-4162=Microsoft.Office.Interop.Excel.XlDirection.XlUp
    2. oSheet.Cells(r,1).Value = TextBox1.Text
    Du arbeitest mit Late Binding.
    Das verträgt sich nicht mit Option Strict On.
    Besser wäre es mit Microsoft.Office.Interop.Excel zu arbeiten.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Danke für die schnelle Antwort, habe den Code auch mal eingebunden.

    Visual Basic-Quellcode

    1. Dim oExcel As Object
    2. Dim oBook As Object
    3. Dim oSheet As Object
    4. Dim r As Integer
    5. oExcel = CreateObject("Excel.Application")
    6. oBook = oExcel.Workbooks.Open("C:\Users\derneke\Desktop\Vorlagen\Book3.xls")
    7. oSheet = oBook.Worksheets(1)
    8. r = oSheet.Cells(oSheet.Rows.Count, 1).End(-4162).Row + 1
    9. oSheet.Cells(r, 1).Value = TextBox1.Text
    10. oSheet.Range("A8").Value = TextBox2.Text
    11. oSheet.Range("C8").Value = TextBox3.Text
    12. oSheet.Range("D8").Value = TextBox4.Text
    13. oSheet.Range("E8").Value = TextBox5.Text
    14. oSheet.Range("G8").Value = TextBox6.Text
    15. oExcel.DisplayAlerts = False
    16. oBook.SaveAs("C:\Users\derneke\Desktop\Vorlagen\Book3.xls")
    17. oExcel.DisplayAlerts = True
    18. oExcel.Quit()


    Scheint soweit erstmal zu funktionieren. Falls sich noch was anderes ergibt, melde ich mich sicher nochmal :D

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „DennjoOyola“ ()

    petaod schrieb:

    Die Zàeile 14-18 musst du natülich auch entsprechend anpassen.

    Genau das habe ich auch gemacht und funktioniert, zumindest für meine Zwecke, sehr gut. Allerdings verzweifel ich gerade, denn ich bekomme die Ansicht-Designer im VB 2010 Express nicht mehr auf, sondern es kommt nur noch die Coding Ansicht. Was ein wenig doof ist, da die Form aussieht wie Kraut und Rüben :)