Visual Basic und Excel-Dateien

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von dattKlobiche.

    Visual Basic und Excel-Dateien

    Hallöchen :D

    Info: Visual Studio 2017 und Excel 2007

    ich möchte in Visual Basic über eine Schaltfläche (Button) eine Excel-Datei erstellen, die sich dann auch automatisch öffnet.
    Dazu habe ich ein paar Fragen:
    1. Ich arbeite mit "Micrsosoft.Office.Interop.Excel". Muss ich zum Erstellen einer Excel-Datei immer .Application, .Workbook, .Worksheet machen? Oder reicht auch .Application und .Worksheet wenn ich nur eine Tabelle brauche?

    2. Wenn ich eine Excel-Datei erstellt habe, soll diese sich dann direkt öffnen. Wie mache ich das? Gibt es da eine Funktion mit .Open oder .Visisble? Oder muss ich da noch was anderes beachten?

    3. Kann ich das Erstellen einer Excel-Datei auch in eine Funktion packen? Wenn ja, was gebe ich als Übergabe Wert an? Bsp.: Public Function Create_Excel(?)?

    Vielen Dank schonmal im Voraus :D

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Moin,
    vielleicht hilft dir das ja :)
    da wird ein Datagridview als Exceldatei ausgegeben, in dem Fall allerdings unsichtbar(Wird direkt gespeichert). Standardmäßig wird dir Excel aber angezeigt, wenn ich das richtig im Kopf habe.
    Aufgerufen wird das Ganze dann mit Excelexport(ZuexportierendesDGV).

    Es mag durchaus auch sein, dass man das eleganter lösen kann, bin noch Anfänger :)

    VB.NET-Quellcode

    1. Public Function Excelexport(ByVal dgv As DataGridView) As Boolean
    2. Dim xls_Appl As Excel.Application ' Excel Anwendung
    3. Dim xls_Mappe As Excel.Workbook ' Excel Arbeitsmappe
    4. Dim xls_Blatt As Excel.Worksheet ' Excel Blatt (Tabelle)
    5. Dim Anzahlzeilen As Integer
    6. Dim savedialog As New Windows.Forms.SaveFileDialog
    7. savedialog.AddExtension = True
    8. savedialog.CheckFileExists = False
    9. savedialog.DefaultExt = "xlsx"
    10. savedialog.Filter = "Excel (*.xlsx)|*.xlsx"
    11. If savedialog.ShowDialog() = DialogResult.Cancel Then
    12. MsgBox("Abgebrochen")
    13. Else
    14. xls_Appl = New Excel.Application() ' Excel Instanz bilden
    15. xls_Appl.Visible = False
    16. xls_Mappe = xls_Appl.Workbooks.Add()
    17. xls_Blatt = DirectCast(xls_Mappe.ActiveSheet, Excel.Worksheet)
    18. With dgv
    19. For Spalte As Integer = 0 To .Columns.Count - 1
    20. DirectCast(xls_Blatt.Cells(1, Spalte + 1), Excel.Range).Value = .Columns(Spalte).HeaderText
    21. DirectCast(xls_Blatt.Cells(1, Spalte + 1), Excel.Range).Font.Bold = True
    22. Next
    23. Anzahlzeilen = .Rows.Count
    24. If .AllowUserToAddRows = True Then
    25. Anzahlzeilen = Anzahlzeilen - 1 ' Leerzeile abziehen
    26. End If
    27. For Zeile As Integer = 0 To Anzahlzeilen - 1
    28. For Spalte As Integer = 0 To .Columns.Count - 1
    29. DirectCast(xls_Blatt.Cells(Zeile + 2, Spalte + 1), Excel.Range).Value() _
    30. = .Rows(Zeile).Cells(Spalte).FormattedValue
    31. Next
    32. Next
    33. End With
    34. Dim pfad = savedialog.FileName
    35. If pfad <> "" Then
    36. xls_Mappe.SaveAs(pfad)
    37. xls_Mappe.Close()
    38. xls_Appl.Quit()
    39. Return True
    40. End If
    41. End If
    42. Return False
    43. End Function


    Wenn wirklich nur nen leeres Excelblatt geöffnet werden sollen reicht auch das hier :)

    VB.NET-Quellcode

    1. Imports Microsoft.Office.Interop
    2. Public Class Form1
    3. Public Function Open_Excel() As Boolean Handles Button1.Click
    4. Dim xls_Appl As Excel.Application
    5. Dim xls_Mappe As Excel.Workbook
    6. Dim xls_Blatt As Excel.Worksheet
    7. xls_Appl = New Excel.Application()
    8. xls_Appl.Visible = True
    9. xls_Mappe = xls_Appl.Workbooks.Add()
    10. xls_Blatt = DirectCast(xls_Mappe.ActiveSheet, Excel.Worksheet)
    11. Return True
    12. End Function
    13. End Class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „dattKlobiche“ ()