Daten aus Combobox und Textbox per Button1.Click in ExcelDatenBlatt übergeben

  • VB.NET

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von tulla.

    @tulla: und @sterat:
    Ich habe jetzt einen lauffähigen Quellcode erstellt (zum erstenmal mit Interop gewerkt...):
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Strict On
    2. Imports Microsoft.Office.Interop
    3. Imports Microsoft.Office.Interop.Excel
    4. Imports Microsoft.Office.Core
    5. Imports System.IO
    6. Imports System.Reflection.Assembly
    7. Public Class Form1
    8. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    9. Dim ExcelPfad As String = GetExecutingAssembly.Location.Remove(GetExecutingAssembly.Location.LastIndexOf("\"c))
    10. Dim ExcelDateiName As String = Path.Combine(ExcelPfad, "Mappe1.xlsx")
    11. Dim ExcelTabelleName As String = "Tabelle1"
    12. Dim xlsAppl As Excel.Application
    13. Dim xlsMappe As Excel.Workbook
    14. Dim xlsBlatt As Excel.Worksheet
    15. Dim xlsRange As Excel.Range
    16. xlsAppl = New Excel.Application
    17. xlsAppl.Visible = True
    18. xlsMappe = xlsAppl.Workbooks.Open(ExcelDateiName)
    19. xlsBlatt = CType(xlsMappe.Worksheets(ExcelTabelleName), Worksheet)
    20. Dim Pos = CInt(xlsBlatt.Range("A1").Value) 'Zelle(A1) als Zeilenmerker im Arbeitsblatt(Tabelle1) definieren
    21. xlsRange = CType(xlsBlatt.Cells(Pos + 1, 2), Range) 'Datenausgabe erfolgt in der Spalte(B)
    22. xlsRange.Value = TextBox1.Text 'Wert von Textbox1 übertragen
    23. xlsBlatt.Range("A1").Value = Pos + 1 'letzte Zeile merken...
    24. xlsAppl.Quit()
    25. End Sub
    26. End Class
    Das mit dem benannten Bereich(letzteZeile) habe ich jetzt nicht 'auf die Schnelle gebacken' bekommen und habe einfach die Zelle(A1) dafür hergenommen...
    Eine Form1 mit Textbox1 und Button1 erstellen und den Code einfügen...
    Eine Excel-Datei (Mappe1.xlsx) mit einer Tabelle (Tabelle1) in das ausführende App-Verzeichnis kopieren...
    Die bessere und elegantere Lösung wäre aber, mit Excell via typisierten Dataset einen Datenaustausch durchzuführen...

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

    @ sterat

    die entstandene Zahl die hinter der Variable "DasIstDieLeereZeile" steht ist deine Zeilennummer, die hat nix im Textbox.text zu suchen. ^^
    die solltest du besser für deine Eintragung im worksheet befehl benutzen.

    der mittlere Teil des Codes sollte dann so aussehen:

    VB.NET-Quellcode

    1. dim DasIstDieLeereZeile as integer
    2. 'Letze Zeile finden
    3. For zeile = 1 To 2000
    4. If xls_Mappe.Worksheets("List_Klass").Cells(zeile, 1).Value = "" Then DasIstDieLeereZeile = zeile : Exit For
    5. Next zeile
    6. xls_Blatt.cells(DasIstDieLeereZeile ,1).Value = TextBox1.Text ' hier habe ich Range durch Cells ersetzt.
    7. TextBox1.Text = ""
    8. xls_Mappe.Save()
    9. xls_Appl.Quit()


    @VB1963

    Ein ganz klares JA! :thumbup:
    Aber willst du mit einer Frigatte auf einen Karpfen schiessen? (Dafür wird mich derErfindes schlachten ;( )