[C# Beginner] Vba Code in C# umwandeln - mir fehlt die Initialidee bzw. das Vorgehen

  • C#

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von dani02.

    [C# Beginner] Vba Code in C# umwandeln - mir fehlt die Initialidee bzw. das Vorgehen

    Hallo Leute,

    ich habe nun ein mehr oder weniger kleines Problem und hoffe ihr habt da paar kleine Anreize für mich.
    Nachdem ich ein Projekt in VBA erstellt habe mit verschiedenen Modulen und Formularen, muss ich nun dieses Projekt in C# umschreiben.

    An sich erscheint es kein Problem zu sein mit der Microsoft.Office.Interop.Excel Bibliothek den Code dementsprechend umzuwandeln. Jedoch was mir Kopfzerbrechen bereitet ist,
    wie das ganze genauso wie in VBA (Excel) funktionieren soll. Den das ganze soll über eine Excel Repository laufen und via Aufruf das ganze so Abwickeln, wie wenn ich die Excel normal starten würde (hoffe ihr versteht ca. was ich meine z.B. Buttons in der Excel zum starten der Userform). Nun weiß ich nicht wie das funktionieren soll, dass wenn ich über die Repository die Applikation Aufrufe alle Inhalte drin sind (Userforms etc.).

    Da stellen sich mir folgende Fragen: - Sind Userforms über C# realisierbar?
    - Wie schreibe ich Module in C# ? ( Jedes Modul als Klasse ? -> Sub test () end Sub == public class test () { } ) ?
    - In VBA steuerte ich Ordner und Dateien über die FileSystem-Bib an, in C# entdeckte ich bei der excelApp keine solcher Methode
    Wie geh ich dieses Problem an?
    - Wo kommt der Code hin, welcher in der Userform steht z.B. Textbox1.value = ws("Tabelle1).Range("A")?


    Ich hoffe ihr versteht in etwa mein Problem, dass mir die nötige Fantasie etwas fehlt :rolleyes:

    Danke euch schon mal für alle Tipps und Hinweise!
    Ein abenteuerliches Unterfangen, bei dem sich mir der Sinn nicht erschließen mag.

    Wenn du C# in Excel programmieren willst, dann versuch's mal mit dem VSTO-Ansatz.
    Aber nur um mit Gewalt C# zu verwenden, macht das keinen Sinn.
    Vor allem, wenn das Excel-Dokument das führende System sein soll.
    Die interne Programmiersprache von Excel ist nun mal VBA,

    Entweder du verzichtest auf Excel-Funktionalität oder du verwendest sie.
    Sie künstlich auszutauschen ist hahnebüchen.

    Möchtest du erklären, warum es unbedingt C# sein soll?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    @dani02 Leider kennen wir nicht Deine Programmierkenntnisse.
    Möglicherweise ist ein mehrstufiger Weg der sicherere.
    VBA nach VB6 denken und daraus einen VB.NET-Code generieren. Diesen dann vom Automaten nach C# konvertieren lassen.
    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!
    Okay dann schaue ich da mal rein.

    Für mich macht das im eigentlichen auch kein Sinn, vor allem es auch nicht mein Wille ist, da ich eigentlich alles via VBA realisieren/automatisieren wollte.
    Jedoch soll das ganze Global verfügbar sein über die erwähnte Repository und diese soll nun mal die Excel Applikationen laden bzw. eben das gleiche machen wie
    das VBA Programm (mitsamt Userforms).

    (Eine einfachere Lösung wäre sicherlich ein Sharepoint, wo jeder auf diese Excel Zugriff hätte aber nunja..)

    Es muss so sein, da man sich beugen muss als Prakti/Bachlorand. Viele Leute viele Wünsche ..
    @RodFromGermany

    Programmierkenntnisse mehr oder weniger okay, vor allem kann ich es mir erarbeiten kann Schritt für Schritt.
    Klar das war auch mein Gedanke nur hierfür besteht kein Interesse, dass ich es so mache.

    Deshalb zurück zur Frage wie man das ganze angehen könnte.
    Module in Klassen?
    Userforms in ____ ?
    etc.

    dani02 schrieb:

    Module in Klassen?
    Ich weiß nicht so genau, wie VBA tickt.
    Auch in VB.NET gibt es Module, das sind im prinzip statische Klassen, also Klassen, die es nur in einer einzigen Instanz gibt.
    Ein Userform dürfte sich ganz easy auf ein Form abbilden lassen.
    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!

    dani02 schrieb:

    Module in Klassen
    Wenn du Code in Modulen hast (evtl. abgesehen von ein paar Universalfunktionen), bedeutet das, dass dein bisheriger Ansatz nicht objektorientiert war.
    Das wäre für mich Grund genug, das Konzept neu zu überdenken.

    dani02 schrieb:

    Jedoch soll das ganze Global verfügbar sein über die erwähnte Repository und diese soll nun mal die Excel Applikationen laden bzw. eben das gleiche machen wie
    das VBA Programm (mitsamt Userforms).
    Hast du schon mal über den Ansatz nachgedacht, einfach ein Wrapper-Programm zu schreiben, das die Excel-Datei aus dem Repository ins Temp-Verzeichnis zieht, mit Excel öffnet und ggf. am Ende die Datei wieder ins Repository schreibt.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Okay danke euch schon mal für die Tipps.
    Ich mache mir nun etwas Gedanken wie schon @petaod geschrieben hat über das Konzept, ob ich die ganzen Module runterratter,
    oder diese Objektorientiert umwandle z.B.

    Quellcode

    1. public class Verzeichnis {
    2. public string ordner;
    3. public string file;
    4. }
    5. class ordner{}
    6. class file{}


    so in der Art...
    Naja nochmals danke und Ihr werdet sicher noch in der Angelegenheit von mir hören :D