Office: DLL für VBA

Helfe beim Thema DLL für VBA in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Excel-Gemeinde, ich habe eine etwas härtere Nuss zu knacken. Aus Sicherheitsgründen soll ein Teil des Codes (Verbindung zur DB) in eine DLL... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von drzwockel, 8. Januar 2017.

  1. DLL für VBA


    Hallo Excel-Gemeinde,

    ich habe eine etwas härtere Nuss zu knacken. Aus Sicherheitsgründen soll ein Teil des Codes (Verbindung zur DB) in eine DLL ausgelagert werden und nur durch eine Parameterübergabe und entsprechende Rückgabe die Funktion der Anwendung geregelt werden.

    Jetzt meine Frage: Womit die DLL erstellen und wie ins System einbinden?
    Erste Versuche mit VB 6.0 schlugen fehl, DLL aus Visual Studio 2015 ließen sich auch nicht einbinden. Dies kann entweder an mangelndem Wissen um oder um ein tatsächliches Nichtgehen zur Ursache haben ... *confused.gif*

    Wer kann helfen oder hat entsprechende Hinweise?

    Zur Anwendung kommt Excel 2013 in der 32-Bit Version.

    :)
     
    drzwockel, 8. Januar 2017
    #1
  2. Hi Dr.,

    hier findest Du eine wirklich sehr ausführliche Anleitung zu Deiner Frage.
     
  3. Hallo R J,

    zunächst einmal vielen Dank für den Link, der sehr ausführlich durch den Ersteller erarbeitet wurde. Ich werde mir den Text mal in Ruhe zu Gemüte führen.

    Wenn jemand noch weitere Ideen oder Lösungen hat, dann immer her damit ... Vielen Dank schon mal
     
    drzwockel, 10. Januar 2017
    #3
  4. DLL für VBA

    Hallo drzwockel,

    eigentlich steht dieses Thema bereits seit 3¾ Jahren auf der Agenda von Dir: h i e r.
    Vielleicht hast du jetzt mehr Ausdauer, um dieses Thema internsiver in Angriff zu nehmen.
    Ich selbst benutze VS 2015-C# 6.0 zum Lösen solcher Aufgaben. Eigentlich war ich ein großer Fan von VB.Net, aber die Firmen hatten immer nur
    Interesse an C#-Programmierern, und so habe ich umgesattelt.
    Heute ist es eigentlich egal, ob VB.Net oder C#, denn man kann beide Variaten gegenseitig zu fast 100% umkompilieren.

    Gruß & good luck von Luschi
    aus klein-Paris
     
  5. Hallo Luschi,

    vielen Dank für Deine Antwort. Du hast Recht, es stand mal auf meiner Agenda. Da es sich damals als zu schwierig herausstellte und eine finanzielle Lösung nicht in Betracht kam, habe ich diesen Weg wieder verworfen und das Projekt "normal" weitergeführt.

    Jetzt jedoch wird eine entsprechende Lösung (z.B. Mittels dem "Verschluss" in einer DLL) gewünscht/gefordert. Ich weiß, dass auch das nicht das Allheilmittel gegen neugierige Blicke ist, aber immer noch viel besser, als die Bordmittel von Excel.

    Leider habe ich das Thema Visual Studio und DLL für eine Office Anwendung immer wieder nach hinten geschoben, da nie die Zeit dafür gefunden habe (ist natürlich eine Ausrede, um sein Gewissen zu beruhigen).

    Im Prinzip suche ich eine Lösung, die den Zugang an die DB aufbaut (also die Connection) und mir dann die Connection als Parameter zurückliefert. Also wie im Excel-Modul selbst, halt nur nicht den kompletten String sichtbar.

    Hast Du da eine Idee, wie das vielleicht einfach(er) geht? Der User darf im String, der zurück gemeldet wird, enthalten sein, nur nicht das Kennwort, da dies in der "DLL" stehen soll. Brauche ich dafür vielleicht gar keine DLL und das würde einfacher gehen?
     
    drzwockel, 10. Januar 2017
    #5
  6. ...wenn Du den Connectionstring von der dll zurückliefern lassen willst, dann kannst Du Dir die ganze Mühe von vornherein sparen. Dann stoppe ich den Code an exakt dieser Stelle und lese das Passwort aus dem zurückgelieferten Connectionstring aus....*biggrin.gif*

    Erstelle besser die ganze Applikation in VS via Interop...
     
  7. Hallo drzwockel,

    vielleicht hilt auf die Schnelle auch der nachfolgende Link. Mit dieser Methode bekommt man "Projekt kann nicht angezeigt werden", wenn man im Vba-Editor versucht,
    das Fenster zur Vba-KW-Eingabe anzuklicken.

    crunchcode.de -&nbspDiese Website steht zum Verkauf! -&nbspInformationen zum Thema crunchcode.

    Beim Paßwort im Vba-Code für die Datenbank-Verbindung muß man sowieso mindestens mit der Chr-Funktion arbeiten und so zusammensetzen, da sonst das Kennwort blanko in der xlsm-Datei steht. Ich verwende dazu eine Vba-Funktion mit Shift-Verschiebung - das habe ich mir von John Walkenbach abgeschaut.
    Daran hat sich übrigens auch in Vb.Net/C# nichts geändert. Wer also auch da das Kennwort in eine String-Variable speichert, kann das auch im exe-Kompilat per Hex-Editor auslesen, nur mit dem Unterschied, daß zwischen jedem Zeichen noch ein Hex-0-Zeichen eingefügt wurde.

    Gruß von Luschi
    aus klein-Paris
     
  8. DLL für VBA

    Moin Luschi,

    Ist das auch so wenn man das VBA-Projekt mit einem Passwort versieht? Oder wird da auch das VBA-Projekt verschlüsselt?

    @Dr. Zwockel:
    Was ich schon mal gemacht habe:
    Für die DB einen User anlegen, der nur Zugriff auf die Abfrage / Stored Procedure erhält.
    Dann kann das Kennwort auch öffentlich sein - man kommt damit dann eh nur an die Daten an die auch das Makro kommt.

    Ansonsten verwende ich meist C# mit VSTO zur Entwicklung für Excel.

    Grüße,
    Michael
     
    CruelDevice, 10. Januar 2017
    #8
  9. Hallo Luschi,

    vielen Dank für Deine Antwort. Ich bin gestern Abend nicht mehr dazu gekommen, Dir zu antworten, da ich die ganze Zeit mit dem CrunchCode herum probiert habe. Soweit funktionierte das, bis ich die Formen geöffnet habe, und dort die Größen alle nicht stimmten ... also auf der einen Seite super, auf der anderen leichte Probleme ...

    Ich muss mal schauen, wie ich da mit umgehe.
     
    drzwockel, 11. Januar 2017
    #9
  10. Hallo CruelDevice,

    danke für Deinen Beitrag.

    Die Sache mit dem C# und VSTO habe ich schon mit unserem Datenbank-Jogi gemacht. Es gab dann eine DLL, die ich aber nicht in EXCEL als Verweis einbinden konnte. Excel hat sich da völlig gesperrt.

    Vielleicht haben wir aber auch nur etwas falsch gemacht. Beschreibe mir doch mal, wie Du das umsetzt. Vielen Dank
     
    drzwockel, 11. Januar 2017
    #10
  11. Ich bin absoluter Laie bezüglich DLLs und Programmierung, aber mir ist es mal gelungen, eine DLL in Freebasic zu erstellen, und über einen VBA-Wrapper (etwas notwendigen Aufruf-Code) als Excel-Funktion einzubinden.

    Die Funktion selbst war ein Wertpapierkorb-Updater, sie konnte splitten, spin-offen, Aktien zusammenführen sowie nach dem alten Recht bis 2008 FIFO (älter als ein Jahr) und gemischt (bis ein Jahr) die steuerfreien und steuerpflichtigen Einkünfte separieren. Alles mit einem einzigen Wert, einem variabel langen strukturierten String.

    Lang ist es her. Ich hatte damals auch keine Lust, den Inhalt des Programms offen zu legen. Heute wäre es mir egal. Ein anderer Grund war, dass VBA Probleme mit Strings länger als 256 Zeichen als Argumenten hat. Daher würde ich es heute als Sub machen, auch aus Performancegründen.
     
  12. Moin moin,

    mit VSTO und C#/VB.NET erstelle ich keine DLLs zum einbinden in VBA-Projekte, sondern komplette Add-Ins. Die werden dann installiert (in unserem Fall per Installer auf einem Citrix-System, Zugriffsberechtigung über AD-Gruppen. Geht recht elegant *Smilie ).

    Ich bin hier im Unternehmen dabei nach und nach VBA-"Altlasten" auf VSTO umzustellen.
    Weil:
    * Wesentlich bessere IDE (!)
    * Die IDE bietet zB einen Designer für Ribbons
    * Bessere Verteilung/Zugriffskontrolle
    * Quellcodeverwaltung (TFS in unserem Fall)
    * kein Code in Dateien für User sichtbar
    * Unterstützung für diverse DB (MS-SQL, ORACLE, DB2, ...) alles ohne ODBC Geraffel

    Kurz: Alle Vor-und Nachteile die C# bieten kann *wink.gif*

    DLLs in ein C# Projekt einzubinden ist z.B. als trivial zu bezeichnen *wink.gif*
    Aus diesem Grund habe ich eine stetig wachsende Anzahl von Libraries mit häufig gebrauchten Funktionen/Dialogen/etc. - macht die Wiederverwendbarkeit von Quellcode im Vergleich zu VBA zu einem Traum *wink.gif*.

    Viele Grüße,
    Michael
     
    CruelDevice, 11. Januar 2017
    #12
  13. DLL für VBA

    Hallo CruelDevice,

    vielen Dank für diese ausführlichen Informationen.

    Leider habe ich mich mit dem Thema VSTO und Visual Studio so noch nicht beschäftigt.
    Ich habe zwar hier eine Installation von Visual Studio 2015, die auch auf dem aktuellsten Stand ist, aber den Ansatz Richtung C# oder VB noch nicht gestartet (allerdings vorgenommen *holy .

    Ich hätte diesbezüglich, hier im Bereich der Excel Entwicklung, einige Fragen an Dich. Hättest Du die Zeit und die Lust dazu? Insbesondere wie weit die Entwicklungsmöglichkeit gehen kann (Vergleich VBA Editor Visual Studio, egal ob C# oder VB).

    Wo gibt es zum Thema VSTO gutes Material (Video / Bücher / Anleitungen), wenn möglich aus Deutsch ?


    Vielen Dank schon mal ...
     
    drzwockel, 12. Januar 2017
    #13
  14. Hallo, *Smilie

    Da ist die erste Anlaufstelle:

    Codebeispiele für Entwickler

    Und noch viele mehr: *wink.gif*

    Exemplarische Vorgehensweise: Office-Programmierung (C# und Visual Basic)

    Exemplarische Vorgehensweise: Erstellen Ihres ersten VSTO-Add-Ins für Word

    Office Addin: Programmieren eines Office-Add-Ins

    Es lohnt sich wirklich da mal einen Blick draufzuwerfen. Auch das Ribbon lässt sich recht einfach programmieren:

    Multifunktionsleisten-Designer

    Menüband-Designer (MFC)

    Wenn Du das mal kennengelernt hast, wirst Du kein VBA mehr anschauen. *tongue.gif*

    Servus
    Case
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
    Case_Germany, 12. Januar 2017
    #14
  15. Hallo Case,

    vielen Dank für Deine ausführliche Beschreibung/Anleitung.

    Ich werde mich da mal durcharbeiten, die Seiten habe ich bisher nur aufgerufen, kurz durchgeblättert und gestaunt.

    Zu Denken hat mir Dein letzter Satz gegeben *wink.gif* - wenn man die Möglichkeiten dort so sieht und bewertet, dann könnte es durchaus sein.

    Was für mich immer noch nicht ganz klar ist, wie ich eine Arbeitsmappe (.xlsm) dort erstelle.
    Wenn ich mein bestehendes Projekt mittels VS 2015 (VSTO) umbauen würde, dann müsste ich auch Inhalte in die Tabellen bringen bzw. auf Teile der Tabellen im Code zurückgreifen. Funktioniert das auch "so einfach"?
     
    drzwockel, 12. Januar 2017
    #15
Thema:

DLL für VBA

Die Seite wird geladen...
  1. DLL für VBA - Similar Threads - DLL VBA

  2. Fehler: Die Anwendung kann nicht gestartet werden, da AppVIsvSubsystems32.dll auf dem Computer ...

    in Microsoft Excel Tutorials
    Fehler: Die Anwendung kann nicht gestartet werden, da AppVIsvSubsystems32.dll auf dem Computer ...: Fehler: Die Anwendung kann nicht gestartet werden, da AppVIsvSubsystems32.dll auf dem Computer fehlt Excel für Microsoft 365 Word für Microsoft 365 Outlook für Microsoft 365...
  3. DLL erstellen

    in Microsoft Excel Hilfe
    DLL erstellen: Hallo zusammen, ich möchte aus meinen VBA Code eine DLL erstellen. Allerdings hab ich keinen Schimmer wie das funktionert.*frown.gif* *frown.gif* Kann mir das jemand aus dem Forum erklären, oder...
  4. win7 win10 advapi32.dll

    in Microsoft Access Hilfe
    win7 win10 advapi32.dll: Hallo wertes Forum, ich bin auf der Suche nach einer Lösung für folgende Problemstellung. Ich habe eine Datenbank(FontEnd BackEnd) die unter Windows 7 & Windows 10 laufen soll. Hierbei habe ich...
  5. Zeichnen mit GDI32.DLL

    in Microsoft Access Hilfe
    Zeichnen mit GDI32.DLL: Ich beschäftige mich damit einen Assistenten zu erzeugen. Er soll Möglichkeiten bieten Objekte auf ein Formular zu ziehen uvm. (zum Vergleich der Beziehungsassistent). Grundsätzlich wäre das mit...
  6. VBAProjekt Verweis löschen

    in Microsoft Excel Hilfe
    VBAProjekt Verweis löschen: Hallo, ich habe einen DLL über Extras - Verweise hinzugefügt. Jetzt möchte ich es wieder löschen, sodass ich es wieder hinzufügen kann, weil ich ein falschen Pfad angegeben habe. Wie kann ich...
  7. Outlook 2007 bleibt hängen (Event ID 1000 "Fehler olmapi32.dll)

    in Microsoft Outlook Hilfe
    Outlook 2007 bleibt hängen (Event ID 1000 "Fehler olmapi32.dll): Hallo zusammen, ich nutze auf einem PC (Windows 7 Professional 64 Bit) seit ca. 2 Jahren Outlook 2007 SP3 (Altdaten “PST” wurden zuvor von einem XP-System migriert). Die Ur-PST ist somit...
  8. Seit dem autom. Update funktioniert Outlook nicht (Fehler MAPI32.DLL)

    in Microsoft Outlook Hilfe
    Seit dem autom. Update funktioniert Outlook nicht (Fehler MAPI32.DLL): Hallo, vermutlich nach einem automatischem Windows-Update, lässt sich mein Outlook nicht mehr öffnen. Es erscheint die Meldung: Microsoft Office Outlook kann nicht gestartet werden. MAPI32.DLL...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden