Excel Makro nach VB.NET migrieren

  • VB.NET
  • .NET 5–6

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von RPC.

    Excel Makro nach VB.NET migrieren

    Hallo zusammen,

    ich habe ein kleines Problem. Ich hab eine Art Ticketsystem in Excel. Dieses Makro muss nun direkt in Visual Studio in einer Windows Form App (VB) ausgeführt werden.

    Es wird eine .txt Datei auf einem definierten Pfad erstellt, die Datei trägt Datum und Uhrzeit als Namen. Diese Datei wird dann vom Ticketsystem gelesen und verarbeitet. Der Inhalt muss in der passenden Zeile stehen.

    Gibt es eine Möglichkeit das Makro in VB zu importieren bzw. direkt zu migrieren? Oder muss das komplett neu geschrieben werden? Bin hier leider absoluter Neuling was Visual Studio angeht.

    Die Daten aus den Zellen sollen aus "TextBoxen" in der Form gezogen werden.

    Anbei der Code in Excel

    Danke.

    Quellcode

    1. Sub createTicket()
    2. ' Variablen definieren
    3. Dim intFF As Integer
    4. Dim lcIniDatei As String
    5. Dim lcTimeStamp As String
    6. ' Ini-Dateiname festelegen
    7. lcTimeStamp = Now()
    8. lcTimeStamp = Replace(lcTimeStamp, ":", "_")
    9. lcTimeStamp = Replace(lcTimeStamp, ".", "_")
    10. lcIniDatei = Cells(8, 2) & "Ticket_" & lcTimeStamp & ".ini" ' "c:\Test.txt"
    11. intFF = FreeFile
    12. Open lcIniDatei For Output As #intFF ' Öffnet oder erstellt Textdatei zum hineinschreiben
    13. ' Anstelle von Output kann auch Append stehen
    14. ' (Output überschreibt vorhandene Datei, Append fügt eine neue Zeile hinzu)
    15. Print #intFF, "// Dies ist ein Beispiel, wie ein Bericht neu angelegt wird"
    16. Print #intFF, "// ==================================================================="
    17. Print #intFF, "// Definition der TicketArt"
    18. Print #intFF, "// TicketArt = 1 => Bestehender Bericht wird geändert"
    19. Print #intFF, "// TicketArt = 2 => Neuer Bericht wird angelegt"
    20. Print #intFF, "// ==================================================================="
    21. Print #intFF, ""
    22. Print #intFF, "[Ticket]"
    23. Print #intFF, "TicketArt = 2"
    24. Print #intFF, "TickteBez = Aufnahme eines Berichts"
    25. Print #intFF, ""
    26. Print #intFF, "[BERICHT]"
    27. Print #intFF, "Mandant = 1 "
    28. Print #intFF, "Obj_NR = " & Cells(10, 2)
    29. Print #intFF, "Soll_Dat = " & Cells(11, 2)
    30. Print #intFF, "Ist_Dat = "
    31. Print #intFF, "Betreff = " & Cells(12, 2)
    32. Print #intFF, "Kategorie = " & Cells(13, 2)
    33. Print #intFF, "BerichtArt = "
    34. Print #intFF, "BerichtTyp = "
    35. Print #intFF, "KostenArt = "
    36. Print #intFF, "KostenTrae = "
    37. Print #intFF, "SB = "
    38. Print #intFF, "AN = " & Cells(14, 2)
    39. Print #intFF, "CC = " & "User:" & Application.UserName
    40. Print #intFF, "FolgeTage = "
    41. Print #intFF, "FolgeArte = "
    42. Print #intFF, "Kosten = "
    43. Print #intFF, "Material = "
    44. Print #intFF, "Stunden = "
    45. Print #intFF, "Memo = " & "Gemeledet durch: " & Cells(15, 2) & " ||| " & "Ort/Maschine: " & Cells(16, 2) & " |||| " & "Beschreibung des Fehlers: " & Cells(18, 2) & " "
    46. Print #intFF, "Ist_Memo = "
    47. Close #intFF ' schließt die Ini-Datei
    48. MsgBox "Störmeldung wurde erfolgreich übermittelt" & Chr(10) & "Name: " & Cells(15, 2) & Chr(10) & "User: " & Application.UserName, 0 + 64, "Störmeldung übermittelt "
    49. ' Sprungmarke kein Ticket erstellen
    50. Abbrechen:
    51. End Sub
    @RPC Sieh Dir mal das an, die Herkunft der Daten (das Cells(,)-Array) musst Du an Deine Gegebenheiten anpassen, ebenso das DateTime-Format.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Text
    2. Public Class Form1
    3. Dim Cells(,) As String
    4. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    5. CreateTicket()
    6. End Sub
    7. Sub CreateTicket()
    8. ' Ini-Dateiname festelegen
    9. Dim lcTimeStamp = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss")
    10. Dim lcIniDatei = Cells(8, 2) & "Ticket_" & lcTimeStamp & ".ini" ' "c:\Test.txt"
    11. Dim sb = New StringBuilder()
    12. ' Öffnet oder erstellt Textdatei zum hineinschreiben
    13. ' Anstelle von Output kann auch Append stehen
    14. ' (Output überschreibt vorhandene Datei, Append fügt eine neue Zeile hinzu)
    15. sb.AppendLine("// Dies ist ein Beispiel, wie ein Bericht neu angelegt wird")
    16. sb.AppendLine("// ===================================================================")
    17. sb.AppendLine("// Definition der TicketArt")
    18. sb.AppendLine("// TicketArt = 1 => Bestehender Bericht wird geändert")
    19. sb.AppendLine("// TicketArt = 2 => Neuer Bericht wird angelegt")
    20. sb.AppendLine("// ===================================================================")
    21. sb.AppendLine()
    22. sb.AppendLine("[Ticket]")
    23. sb.AppendLine("TicketArt = 2")
    24. sb.AppendLine("TickteBez = Aufnahme eines Berichts")
    25. sb.AppendLine()
    26. sb.AppendLine("[BERICHT]")
    27. sb.AppendLine("Mandant = 1 ")
    28. sb.AppendLine("Obj_NR = " & Cells(10, 2))
    29. sb.AppendLine("Soll_Dat = " & Cells(11, 2))
    30. sb.AppendLine("Ist_Dat = ")
    31. sb.AppendLine("Betreff = " & Cells(12, 2))
    32. sb.AppendLine("Kategorie = " & Cells(13, 2))
    33. sb.AppendLine("BerichtArt = ")
    34. sb.AppendLine("BerichtTyp = ")
    35. sb.AppendLine("KostenArt = ")
    36. sb.AppendLine("KostenTrae = ")
    37. sb.AppendLine("SB = ")
    38. sb.AppendLine("AN = " & Cells(14, 2))
    39. sb.AppendLine("CC = " & "User:" & Environment.UserName)
    40. sb.AppendLine("FolgeTage = ")
    41. sb.AppendLine("FolgeArte = ")
    42. sb.AppendLine("Kosten = ")
    43. sb.AppendLine("Material = ")
    44. sb.AppendLine("Stunden = ")
    45. sb.AppendLine("Memo = " & "Gemeledet durch: " & Cells(15, 2) & " ||| " & "Ort/Maschine: " & Cells(16, 2) & " |||| " & "Beschreibung des Fehlers: " & Cells(18, 2) & " ")
    46. sb.AppendLine("Ist_Memo = ")
    47. ' schreibt die Ini-Datei
    48. System.IO.File.WriteAllText(lcIniDatei, sb.ToString())
    49. MessageBox.Show("Störmeldung wurde erfolgreich übermittelt" & Chr(10) & "Name: " & Cells(15, 2) & Chr(10) & "User: " & Environment.UserName, "Störmeldung übermittelt", MessageBoxButtons.OK, MessageBoxIcon.Information)
    50. End Sub
    51. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!