Steuerelemente für Office erstellen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Volker Bunge.

    Steuerelemente für Office erstellen

    Hallo zusammen,

    da mein VB.Net Steuerelement jetzt für VB-Net Projekte steht, möchte ich dieses Steuerelement auch gerne in Officeanwendungen einbauen. Hier vorrangig in Access.

    Ich habe mir schon diverse Videos und Texte angesehen, aber noch nicht das richtige gefunden.

    Was ich bisher immer gefunden habe, ist eine "angebliches" COM Control für Office Excel und Word (Hier mal ein Bsp.-Link ). leider will ich nicht eine MsgBox - Text mir anzeigen lassen, sondern ein neues Steuerelement (Also ein Button, Checkbox, Listfeld usw.) in mein Formular einfügen und dann auch wie gewohnt nutzen.

    Wenn ich bspw. mein jetziges VB-Net Control in Access über Extra, Verweis innerhalb des VBA-Editors einbinde (Es wird die TLB-Datei von meinem Projekt eingebunden) bekomme ich keine Fehler und ich kann auch über den Objektmanager auf die ganzen ENUM und die Eigenschaften zugreifen, aber das Steuerelement selbst bekomme ich in einem Formular/Bericht nicht eingefügt. Oder mache ich hier noch einen Fehler bzw. vergesse ein paar Dinge?

    Jetzt ist halt die Frage, kann ich überhaupt mit VB-Net 2022 ein solches Steuerelement für Office erstellen? Wenn ja, wie muss ich da genau vorgehen?
    Das Ganze fängt ja wahrscheinlich schon bei der richtigen Vorlage an. Welche ist hier die richtige?

    Da ja leider Access nicht mehr großartig weiter entwickelt wird, liest man immer mal wieder, dass man ein Steuerelement per VB 6.0 erstellen kann. Grundsätzlich würde ich mein aktuelles Projekt auch wahrscheinlich hierrüber umsetzen können. Da aber auch VB 6.0 schon sehr in die Jahre gekommen ist, stellt sich hier die Frage: Ist das wirklich die einzige Möglichkeit oder kann VB.Net 2022 das auch (siehe oben)?

    Könntet Ihr mir erst einmal meine o. g. Fragen beantworten und mir somit überhaupt erst einmal aufzeigen, ob es überhaupt geht? Sollte dies der Fall sein, so wäre ich natürlich über weitere Grundsätzliche Lösungen sehr dankbar. Also Beispiel würde mir schon ein Steuerelement reichen, das ein paar Steuerelemte wie Buttons, Checkboxen, Textbox o. ä. anzeigt und ich dann auf deren Aktionen in Access reagieren kann. Natürlich müsste ich auch das neue Steuerelement irgendwie aus Access heraus verändern können. Also bspw. den Buttontext ändern und deren Schriftart und -größe.

    Ihr könnt mir natürlich auch Links nennen, in denen eine brauchbare Beschreibung vorhanden ist. Sollte es Bücher geben, dann auch gerne die Büchertitel.

    So. das sollte es erst einmal für den Anfang sein. Ist ja schon einiges an Fragen zusammen gekommen.

    Schon einmal vielen Dank an alle.

    Volker

    *Topic verschoben*

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

    Das sagt ChatGPT:

    Spoiler anzeigen
    Ja, mit VB.Net und Visual Studio kannst du Steuerelemente (Controls) für Microsoft Office-Anwendungen erstellen. Es gibt mehrere Ansätze, dies zu tun, je nach deinen Anforderungen und der Office-Version, für die du entwickelst. Hier sind die grundlegenden Schritte:

    ### Voraussetzungen:
    1. **Visual Studio**: Installiere die neueste Version von Visual Studio.
    2. **Office Developer Tools**: Stelle sicher, dass die Office Developer Tools für Visual Studio installiert sind. Diese sind oft Teil des Visual Studio Installers oder können als Erweiterung hinzugefügt werden.

    ### Ansätze:

    #### 1. **VSTO (Visual Studio Tools for Office) Add-ins**:
    VSTO ermöglicht es dir, Add-ins für Office-Anwendungen wie Excel, Word, Outlook usw. zu erstellen.

    **Schritte:**
    1. Öffne Visual Studio.
    2. Erstelle ein neues Projekt.
    3. Wähle "Office/SharePoint" und dann "Office-Add-ins".
    4. Wähle den gewünschten Office-Add-in-Typ (z.B. Excel Add-in, Word Add-in).
    5. Im Projekt kannst du jetzt Steuerelemente hinzufügen und die Office-Anwendung erweitern.

    **Beispiel:**

    VB.NET-Quellcode

    1. ```vb
    2. Imports System.Windows.Forms
    3. Imports Microsoft.Office.Tools.Ribbon
    4. Public Class MyRibbon
    5. Inherits OfficeRibbon
    6. Private Sub MyRibbon_Load(ByVal sender As System.Object, ByVal e As RibbonUIEventArgs) Handles MyBase.Load
    7. Dim myButton As New RibbonButton()
    8. myButton.Label = "Click Me"
    9. AddHandler myButton.Click, AddressOf Me.MyButton_Click
    10. Me.Group1.Items.Add(myButton)
    11. End Sub
    12. Private Sub MyButton_Click(ByVal sender As Object, ByVal e As RibbonControlEventArgs)
    13. MessageBox.Show("Button clicked!")
    14. End Sub
    15. End Class
    16. ```


    #### 2. **COM-Add-ins**:
    Mit COM-Add-ins kannst du benutzerdefinierte Steuerelemente erstellen, die in verschiedenen Office-Anwendungen funktionieren.

    **Schritte:**
    1. Erstelle ein neues "Class Library" Projekt in Visual Studio.
    2. Implementiere die `IDTExtensibility2`-Schnittstelle, um ein COM-Add-in zu erstellen.
    3. Registriere das Add-in mit `regasm.exe`.

    **Beispiel:**

    VB.NET-Quellcode

    1. ```vb
    2. Imports Extensibility
    3. Imports System.Runtime.InteropServices
    4. <Guid("Your-GUID-Here"), ProgId("YourProgIdHere")>
    5. Public Class MyAddin
    6. Implements IDTExtensibility2
    7. Public Sub OnConnection(ByVal application As Object, ByVal connectMode As Extensibility.ext_ConnectMode, ByVal addInInst As Object, ByRef custom As System.Array) Implements Extensibility.IDTExtensibility2.OnConnection
    8. ' Initialisierungscode
    9. End Sub
    10. ' Implementiere die anderen Methoden von IDTExtensibility2
    11. End Class
    12. ```


    #### 3. **Office Add-ins (Web Add-ins)**:
    Web Add-ins sind moderne Add-ins, die HTML, CSS und JavaScript verwenden und in verschiedenen Office-Anwendungen laufen.

    **Schritte:**
    1. Wähle in Visual Studio "Office/SharePoint" und dann "Office Add-ins".
    2. Erstelle das Add-in mit HTML, CSS und JavaScript.
    3. Verwende Office JavaScript API (Office.js), um mit der Office-Anwendung zu interagieren.

    ### Fazit:
    Die Wahl des richtigen Ansatzes hängt von deinen spezifischen Anforderungen und der Zielumgebung ab. VSTO ist oft die einfachste Methode für traditionelle .Net-Entwickler, während Web Add-ins mehr Flexibilität und Cross-Plattform-Unterstützung bieten.

    Hallo Morrision,
    Hallo zusammen,

    sorry erst einmal für die späte Rückmeldung.

    Ich habe nun in den letzten Tagen so einiges ausprobiert und leider bekomme ich das mit dem gewünschten Steuerelement in Access nicht hin.

    Was ich zwar hinbekomme ist die Möglichkeit eine Funktion bzw. Sub aus der DLL/TLB Datei aufzurufen. Damit könnte ich mir also so einige bessere VB.Net Möglichkeiten schaffen. Aber das ist hier ja nicht mein Ziel.

    Das Erstellen ist grundsätzlich auch kein Problem, aber es dann so in Access einzubinden, dass es dann als neues Steuerelement daherkommt, will mir einfach nicht gelingen.

    In den Verweisen kann ich die TLB-Datei auch ohne Fehlermeldungen einbinden und dann bspw. auf eine kleine Rechnerfunktion auch zugreifen. Versuche ich aber die DLL als AddIn einzubinden, bekomme ich immer eine Fehlermeldung, das diese DLL kein gültige AddIn Datei ist.

    In den Steuerelementen taucht mein Control nicht auf, auch wenn ich auf weitere ActiveX-Steuerelemente klicke.

    Die KI-Beispiele sind leider auch nicht hilfreich. Habe auch selbst noch einmal eine Frage gestellt, aber leider bringt mich die Antwort(en) nicht weiter.

    Da ich leider im Netz immer auf die gleichen Bsp. stosse, ist es leider so, dass ich auf Eure Hilfe angewiesen bin. Könnte mir bitte einer von Euch ein funktionierendes Beispielprojekt erstellen in dem eine Textbox und eine Picturebox enthalten sind die dann auch in Access in einem Formular / Bericht laufen?

    Ich weis zwar, dass solche Anfragen generell etwas naiv und faul klingen, aber wenn man nichts passendes findet, dass sollte eine solche Anfrage auch mal erlaubt sein.
    Die Anfrage richtet sich auch an die User, die schon einmal solch eine Aufgabe tatsächlich erfolgreich realisiert haben.

    Hoffe, dass mir jemand hier erfolgreich helfen kann und ich es somit schaffe, mein Problem einen großen Schritt weiterzubringen.

    Wenn das helfen würde, dann könnte ich auch ein Video drehen und dort all meine Schritte mal aufzeigen.

    Am Ende wird es vielleicht nur ein kleiner Fehler sein, der zu diesem aktuellen Verhalten führt.

    Also bleibt mir jetzt nur noch ein: Danke schon einmal zu sagen und zu hoffen, dass mir einer die richtige Lösung nennen kann.

    Gruß

    Volker
    Hallo zusammen,

    also grundsätzlich scheint es mit VB.Net zu gehen.

    Hier einmal ein englischsprachiges Video dazu.



    Habe auch schon einmal einen Test gestartet und es auch tatsächlich in Access soweit hinbekommen, dass ich es sehen kann. Jetzt kommt halt noch der Feinschliff. Wenn ich damit fertig bin, dann melde ich mich noch einmal. Kann aber etwas dauern. Hoffe mal, das ich im Urlaub mehr Zeit finde, mich da intensiver zu beschäftigen.

    Gruß

    Volker