MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 10.01.2017, 14:10   #1
drzwockel
MOF Profi
MOF Profi
Standard VBA - 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 ...

Wer kann helfen oder hat entsprechende Hinweise?

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

__________________

Gruß vom Doc

-----
"Alles wird gut"

Verwendete Software:
Microsoft Office 2016 Profesional (32-Bit), Oracle 11g, Visual Studio 2015 Community
drzwockel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2017, 14:33   #2
R J
MOF Meister
MOF Meister
Standard

Hi Dr.,

hier findest Du eine wirklich sehr ausführliche Anleitung zu Deiner Frage.

__________________

Ciao, Ralf

Auf, zum Markplatz der Ideen!
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Diskussion

R J ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2017, 15:17   #3
drzwockel
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

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

__________________

Gruß vom Doc

-----
"Alles wird gut"

Verwendete Software:
Microsoft Office 2016 Profesional (32-Bit), Oracle 11g, Visual Studio 2015 Community
drzwockel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2017, 16:30   #4
Luschi
MOF Koryphäe
MOF Koryphäe
Standard

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
Luschi ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2017, 16:48   #5
drzwockel
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

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?

__________________

Gruß vom Doc

-----
"Alles wird gut"

Verwendete Software:
Microsoft Office 2016 Profesional (32-Bit), Oracle 11g, Visual Studio 2015 Community
drzwockel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2017, 18:12   #6
R J
MOF Meister
MOF Meister
Standard

Zitat:

Der User darf im String, der zurück gemeldet wird, enthalten sein, nur nicht das Kennwort, da dies in der "DLL" stehen soll.

...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....

Erstelle besser die ganze Applikation in VS via Interop...

__________________

Ciao, Ralf

Auf, zum Markplatz der Ideen!
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Diskussion

R J ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.01.2017, 18:48   #7
Luschi
MOF Koryphäe
MOF Koryphäe
Standard

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.

http://www.crunchcode.de/de/knowhow_VbaLock.html

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
Luschi ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2017, 08:33   #8
CruelDevice
MOF User
MOF User
Standard

Moin Luschi,

Zitat:

da sonst das Kennwort blanko in der xlsm-Datei steht

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

__________________

Feedback wäre nett

Murphy's law:
If anything can go wrong, it will. If anything just cannot go wrong, it will anyway.
CruelDevice ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2017, 21:06   #9
drzwockel
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

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.

__________________

Gruß vom Doc

-----
"Alles wird gut"

Verwendete Software:
Microsoft Office 2016 Profesional (32-Bit), Oracle 11g, Visual Studio 2015 Community
drzwockel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2017, 21:09   #10
drzwockel
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

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

__________________

Gruß vom Doc

-----
"Alles wird gut"

Verwendete Software:
Microsoft Office 2016 Profesional (32-Bit), Oracle 11g, Visual Studio 2015 Community
drzwockel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2017, 23:32   #11
lupo1
MOF Koryphäe
MOF Koryphäe
Standard

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.

__________________

MfG Lupo - und ein Hallo ebenfalls!
lupo1 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.01.2017, 08:59   #12
CruelDevice
MOF User
MOF User
Standard

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 ).

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

DLLs in ein C# Projekt einzubinden ist z.B. als trivial zu bezeichnen
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 .

Viele Grüße,
Michael

__________________

Feedback wäre nett

Murphy's law:
If anything can go wrong, it will. If anything just cannot go wrong, it will anyway.
CruelDevice ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.01.2017, 12:26   #13
drzwockel
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

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 .

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 ...

__________________

Gruß vom Doc

-----
"Alles wird gut"

Verwendete Software:
Microsoft Office 2016 Profesional (32-Bit), Oracle 11g, Visual Studio 2015 Community
drzwockel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.01.2017, 13:58   #14
Case_Germany
MOF User
MOF User
Tipp Material im Netz...

Hallo,

Zitat: von drzwockel Beitrag anzeigen

Wo gibt es zum Thema VSTO gutes Material

Da ist die erste Anlaufstelle:

Codebeispiele für Entwickler

Und noch viele mehr:

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.

Servus
Case

__________________

VBA & VB.NET Blog
Case_Germany ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.01.2017, 14:08   #15
drzwockel
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

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 - 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"?

__________________

Gruß vom Doc

-----
"Alles wird gut"

Verwendete Software:
Microsoft Office 2016 Profesional (32-Bit), Oracle 11g, Visual Studio 2015 Community
drzwockel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:11 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.