Daten aus textbox in Excel speichern

  • Allgemein

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Unmoored.

    Daten aus textbox in Excel speichern

    Hallo,

    Ich habe eine textbox und einen Button. Wenn ich auf den Button klicke soll er den text aus der textbox in excel speichern.
    Da dsie datei schon exsistiert, fragt er mich ob er überschreiben soll.... wenn ich ja sage, hat er die änderungen trotzdem nicht übernommen.

    Imports System.IO
    Imports Excel = Microsoft.Office.Interop.Excel
    Imports Office = Microsoft.Office.Core
    Public Class Form2

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim xlApp As New Excel.Application
    xlApp.Visible = False
    Dim wb As Excel.Workbook = xlApp.Workbooks.Open("C:\xxx.xls")
    Dim Tabelle1 As Excel.Worksheet = wb.Sheets("Tabelle1")
    TextBox1.Text = Tabelle1.Range("C4").Value
    wb.SaveAs("C:\xxx.xls")
    End Sub
    End Class
    bitte vb-tag nutzen!
    also mach so:

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports Excel = Microsoft.Office.Interop.Excel
    3. Imports Office = Microsoft.Office.Core
    4. Public Class Form2
    5. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    6. Dim xlApp As New Excel.Application
    7. xlApp.Visible = False
    8. Dim wb As Excel.Workbook = xlApp.Workbooks.Open("C:\xxx.xls")
    9. Dim Tabelle1 As Excel.Worksheet = wb.Sheets("Tabelle1")
    10. TextBox1.Text = Tabelle1.Range("C4").Value
    11. If System.Io.file.exists("C:\xxx.xls") then
    12. System.Io.File.Delete("C:\xxx.xls")
    13. else
    14. wv.saveas("C:\xxx.xls")
    15. End Sub
    16. End Class

    das war jetzt nur so ausm kopf heraus ;)
    Ich habe auch mal was zum Thema. da es passt,wollte ich nicht ein extra Beitrag eröffnen.
    Ich habe einen Code, der mir Verzeichnisse/ Dteien auflistet (In text-box).

    nun möchte ich ein nExport in Excel machen. wie könnte ich das realisieren?


    grüße Hilde

    VB.NET-Quellcode

    1. 'Beispiel: VB .Net - Dateien eines Ordners auflisten'Option Explicit OnOption Strict On
    2. Public Class Form1
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click Dim wildcards() As String = Split(TextBox2.Text, ",")
    4. ListFilesFromFolder(TextBox1.Text, ListBox1, CheckBox1.Checked, _ CheckBox2.Checked, wildcards) End Sub
    5. Private Sub ListFilesFromFolder(ByVal root As String, _ ByRef lb As System.Windows.Forms.ListBox, ByVal FullPath As Boolean, _ ByVal AllSubDirs As Boolean, _ ByVal ParamArray wildcards() As String)
    6. Me.Cursor = Cursors.WaitCursor If lb.Items.Count > 0 Then lb.Items.Clear() Dim roc As System.Collections.ObjectModel.ReadOnlyCollection(Of String) Try If My.Computer.FileSystem.DirectoryExists(root) Then Application.DoEvents() If AllSubDirs Then roc = My.Computer.FileSystem.GetFiles(root, _ FileIO.SearchOption.SearchAllSubDirectories, wildcards) Else roc = My.Computer.FileSystem.GetFiles(root, _ FileIO.SearchOption.SearchTopLevelOnly, wildcards) End If ' For n As Integer = 1 To roc.Count If FullPath Then lb.Items.Add(My.Computer.FileSystem.GetFileInfo(roc.Item(n - 1)).FullName) Else lb.Items.Add(My.Computer.FileSystem.GetFileInfo(roc.Item(n - 1)).Name) End If Next Else MessageBox.Show("Directory not found...", "Info") End If
    7. Catch ex As Exception Me.Cursor = Cursors.Default MessageBox.Show(ex.Message.ToString(), "Info") End Try roc = Nothing Me.Cursor = Cursors.Default End Sub
    8. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles MyBase.Load TextBox1.Text = "c:\" CheckBox1.Text = "Pfadname" CheckBox1.Checked = True TextBox2.Text = "*.*" & "," & "*.txt" CheckBox2.Checked = True CheckBox2.Text = "Search all subdirs" End Sub
    9. Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged If CheckBox1.Checked Then CheckBox1.Text = "Full path name" Else CheckBox1.Text = "Filename" End If End Sub
    10. Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged Select Case CheckBox2.Checked Case True CheckBox2.Text = "Search all subdirs" Case False CheckBox2.Text = "Search toplevel only" End Select End Sub
    11. Private Sub Label1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Label1.Click MessageBox.Show("Eingabehinweis: *.* oder nur * zeigt alle Dateien an. " & _ "Die Eingabe des ersten Zeichen des Dateinamens zuzueglich plus dem * " & _ "also z.B. A* oder A*.* sucht nach allen Dateien die z.B. mit A anfangen. " & _ "Die Eingabe des gesamten Dateinamen sucht alle Dateien mit gleichem Dateinamen " & _ "in dem Startordner oder wenn die CheckBox <Search all subdirs> markiert ist, " & _ "in den vorhandenen Unterordnern." & _ System.Environment.NewLine & _ "Mehrere Wildcards koennen kommasepariert eigegeben werden: " & _ "z.B. *.exe,*.txt,*.ico - Es duerfen keine Leerzeichen in den Wildcards " & _ "vorhanden sein.", "Info") End Sub
    12. Private Sub CheckBox2_CheckedChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged
    13. End SubEnd Class

    Gugi schrieb:

    bitte vb-tag nutzen!
    also mach so:

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports Excel = Microsoft.Office.Interop.Excel
    3. Imports Office = Microsoft.Office.Core
    4. Public Class Form2
    5. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    6. Dim xlApp As New Excel.Application
    7. xlApp.Visible = False
    8. Dim wb As Excel.Workbook = xlApp.Workbooks.Open("C:\xxx.xls")
    9. Dim Tabelle1 As Excel.Worksheet = wb.Sheets("Tabelle1")
    10. TextBox1.Text = Tabelle1.Range("C4").Value
    11. If System.Io.file.exists("C:\xxx.xls") then
    12. System.Io.File.Delete("C:\xxx.xls")
    13. else
    14. wv.saveas("C:\xxx.xls")
    15. End Sub
    16. End Class

    das war jetzt nur so ausm kopf heraus ;)

    ich ahbe es so gemacht jetzt sagt er mir aber, er kann nicht zugreifen, weil ein anderer Prozess auf diese datei zugreift und das Programm stürzt ab.

    Hier mein Quellcode mit prozess beenden...hofe ich

    Imports System.IO
    Imports Excel = Microsoft.Office.Interop.Excel
    Imports Office = Microsoft.Office.Core
    Public Class Form2

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim proc As System.Diagnostics.Process
    Dim pList() As Process

    pList = Process.GetProcessesByName("EXCEL.EXE")
    For Each proc In pList
    proc.Close()
    Next

    Dim xlApp As New Excel.Application
    xlApp.Visible = False
    Dim wb As Excel.Workbook = xlApp.Workbooks.Open("C:\pwd.xls")
    Dim Tabelle1 As Excel.Worksheet = wb.Sheets("Tabelle1")
    TextBox1.Text = Tabelle1.Range("C4").Value

    If System.IO.File.Exists("C:\xxx.xls") Then
    System.IO.File.Delete("C:\xxx.xls")
    Else
    wb.SaveAs("C:\xxx.xls")
    End If

    End Sub
    End Class

    VB.NET-Quellcode

    1. Dim wb As Excel.Workbook = xlApp.Workbooks.Open("C:\xxx.xls")
    2. If System.Io.file.exists("C:\xxx.xls") then
    3. System.Io.File.Delete("C:\xxx.xls")
    4. Else
    5. wb.saveas("C:\xxx.xls")
    6. '..

    Du öffnest Datei xxx.xls (offensichtlich muss Sie dazu existieren)
    Dann liest du einen Wert aus, und fragst: Gibt es die (offene) Datei? Falls es Sie gibt, dann lösch Sie, anderfalls Speichere Sie.
    Da die Datei offen ist, kannst du sie nicht löschen. Da sie existiert, wird sie auch nicht gespeichert.
    Zumindest sieht es in deinem Bsp hier so aus.

    Gruß Mono
    Das ist meine Signatur und sie wird wunderbar sein!
    Was ich mit dem Quellcoe erreichen wollte war, eine Tabelle öffnen über die Textbox einen Wert eintragen und die Tabelle dann speichern und schließen.
    Die Tabelle exsistiert aber bereits und er soll sie überschreiben ohne nachzufragen

    VB.NET-Quellcode

    1. Dim wb As Excel.Workbook = xlApp.Workbooks.Open("C:\xxx.xls")
    2. Dim Tabelle1 As Excel.Worksheet = wb.Sheets("Tabelle1")
    3. Tabelle1.Range("C4").Value = TextBox1.Text
    4. wb.Close(True)


    Wenn du einen Wert in die Tabelle eintragen willst, musst du diesen auch zuweisen. Bei deinem Code weisst du der Textbox einen Wert aus der Tabelle zu...
    Close hat Überladungen, die erste ist ein Boolean Savechanges.

    Gruß mono
    Das ist meine Signatur und sie wird wunderbar sein!

    Gerry671 schrieb:

    wenn ich die Datei schließe, dann kann ich sie doch nicht mehr speichern oder?

    Das soll auch erst geschehen, wenn die Datei gespeichert worden ist.

    Die Reihenfolge muss sein:
    - Excel-Instanz erstellen
    - Datei öffnen
    - Daten bearbeiten
    - Datei speichern
    - Datei schließen
    - Excel beenden

    Du hast in Deiner Funktion zur Zeit weder die Datei geschlossen, noch hast Du Excel beendet. Das bedeutet, Excel läuft noch im Hintergrund und reserviert die geöffnete Datei für sich.
    Leider ist es so, dass Excel beim Beenden Deines Programms nicht automatisch beendet wird.
    Beim nächsten Start Deines Programms wird erneut ein weiterer (anderer) Excel-Instanz erstellt, und dieser versucht die Datei zu öffnen, die noch von den vorherigen Excel-Instanzen gesperrt ist... an dieser Stelle kracht's.

    Mono schrieb:










    Visual Basic Quellcode




    1
    2
    3
    4



    Dim wb As Excel.Workbook = xlApp.Workbooks.Open("C:\xxx.xls")
    Dim Tabelle1 As Excel.Worksheet = wb.Sheets("Tabelle1")
    Tabelle1.Range("C4").Value = TextBox1.Text
    wb.Close(True)






    Wenn du einen Wert in die Tabelle eintragen willst, musst du diesen auch zuweisen. Bei deinem Code weisst du der Textbox einen Wert aus der Tabelle zu...
    Close hat Überladungen, die erste ist ein Boolean Savechanges.

    Gruß mono
    mal so nebenbei gefragt: Ob Tabelle1.Range("C4").Value = TextBox1.Text oder
    TextBox1.Text = Tabelle1.Range("C4").Value gibt er mir immer den Eintrag der Excel Mappe im Textfeld aus. Wie schreibe ich denn nun genau aus einem Textfeld in eine Excel Zelle?

    MfG

    Unmoored