Von VBA auf C++ umsteigen?
-
Hallöchen,
ich habe mit Access VBA ein "Programm" erstellt. Dabei setze ich überwiegend folgende Dinge um:
- per Button bestimmte word-, excel-, pdf, jpg u.ä. Dateien öffnen und anzeigen
- Platzhalter in bestimmte Word-Dokumente mit Feldern aus der Datenbank füllen
- Im- und Exportieren von Tabellen von und nach Excel
- diverse Berechnungen (meist Zinsberechnungen, etc.)
- Erstellen von Berichten, die später zum Ausdruck stehen
- Versand bestimmter Datenfeldinhalte per E-Mail aus dem Programm herausAlles ist soweit fertig und läuft bei mir.
Jetzt habe ich allerdings einige Probleme, da ich mein fertiges "Programm" an Mitarbeiter weitergeben möchte. Das Problem ist, dass die Rechner der Mitarbeiter alle unterschiedlich sind. Einer arbeitet bereits mit Vista, einer arbeitet mit Office 2000, einer mit Officce 2003, einige haben Access, andere müssen wiederum über die Access Runtime arbeiten, u.s.w. Zudem entwickle ich dieses Programm stets weiter, sodass regelmäßig Updates herauskommen.
Ich bin an einen gewissen Punkt geraten, wo ich mit dem ständigen Überprüfen der Verweise, dem Anpassen der Bibliotheken u.s.w. ein wenig überfordert und genervt bin. Ständig bin ich nur dabei, sämtliche Fehlermeldungen zu eleminieren, obwohl das System bei mir auf meinem Rechner wunderbar läuft. Die Handhabung der Access Runtime halte ich auch nicht mehr für optimal (da ich diese an jeden Mitarbeiter weitergeben muss). Sobald ich einige Dinge hinzuprogrammiere und ein Update herausgeben will, kommt das ganze wieder von vorn. Dazu muss ich sagen, dass ich bisher im office-Lösung-Forum sehr viele Anregungen und Hilfe erhalten habe.
Ich überlege, auf eine andere Programmiersprache umzusteigen. Vielleicht eine Programmiersprache, die ein wenig freundlicher ist, wenn man das Programm an andere Rechner weitergibt, die evtl. unterschiedlich konfiguriert sind. Seit längerer Zeit interessiert mich C++. Ich habe allerdings einige Fragen, bevor ich mit der müheseeligen Programmierung erneut beginne:
1. Kann mir jemand sagen, ob es bei der Weitergabe meiner in C++ programmierten Software zu ähnlichen "Problemchen" kommen kann? Oder ist das vielleicht einer der "Macken" von VBA?
2. Läuft mein c++Programm auch problemlos auf alle anderen Rechner, unabhängig von der Office-Version?
3. Ich habe mir kostenlos Visual c++ 2008 heruntergeladen. Ist das brauchbar und empfehlenswert? Benötige ich noch irgendwas für mein Vorhaben?
4. Wenn ich in Visual c++ 2008 ein Projekttyp wählen soll, würde ich spontan für ein neues Projekt "Windows Forms-Anwendung" wählen. Ist das richtig? Ich verstehe nicht wirklich die Unterschiede zu den anderen Projekttypen und kenne nicht die Folgen der Wahl eines bestimmten Projekttypes.
5. Lässt sich mein VBA-Code aus Access irgendwie noch nützlich verwenden? Kann ich da vielleicht irgendwie Teile in c++ umwandeln?
6. Lassen sich mit c++ ähnlich wie in Access Datenbanken einrichten und benutzen?
Ich danke vorab schon mal für die Antworten und für das lesen meiner "Textbombe" hier
Liebe Grüße
-
Muss es unbedingt C++ sein?
Da du ja schon einiges an Erfahrung in VB/A hast, würd ich schon eher sagen, dass du vll erstmal überprüfen solltest, ob deine Vorhaben nicht auch in VB.Net machbar wären. Die Syntax ist ja fast gleich, wenn nicht sogar komplett identisch, von daher müsstest du dich nicht einmal großartig umgewöhnen.
Dann müsste lediglich auf allen Rechner das jeweilige .Net Framework installiert sein, ich kenn mich da ehrlich gesagt nicht so gut aus, müsstest du dich informieren oder auf jmd. warten, der mehr Ahnung davon hat als ich.
Ansonsten... wenn du das Programm als Release kompilierst, sollte es, unabhängig von der Office Version, zu keinen Problemen kommen. Allerdings hab ich mich damit nie wirklich beschäftigt, also auch hier besser auf wen anders warten...
VC++ 2008 ist auch recht gut, kenn keins, das einen ähnlichen Funktionsumfang besitzt.
Falls ich mich irgendwo irren sollte, sorry, is schon spät
MfG
Shelling
-
Ich denke, dass hier C# weitaus besser geeignet ist als C++. Die Interaktion mit Office-Dokumenten ist in C++ oft umständlich und manchmal eine einzige Frickelei
Und dazu kommt noch, dass wahrscheinlich der Umstieg von VBA auf C# einfacher ist als auf C++.
Die .NET-Programme kannst du in der Regel recht problemlos auf den neueren Windows-Versionen ausführen, es muss halt nur die entsprechende .NET-Framework-Version installiert sein; wie sich das mit verschiedenen Office-Versionen verhält, kann ich dir aber nicht sagen. Obwohl ich meine, dass .NET bei der Office-Interaktion auch nur auf COM-Objekte zurückgreift, wie es VBA wahrscheinlich auch tut.
Pingo80 schrieb:
Ich habe mir kostenlos Visual c++ 2008 heruntergeladen. Ist das brauchbar und empfehlenswert? Benötige ich noch irgendwas für mein Vorhaben?
Für C++ ist das das Richtige, ja. Für C# gibt's dementsprechend die (auch kostenlose) Visual C# 2008 Express Edition
-
Pingo80 schrieb:
Jetzt habe ich allerdings einige Probleme, da ich mein fertiges "Programm" an Mitarbeiter weitergeben möchte. Das Problem ist, dass die Rechner der Mitarbeiter alle unterschiedlich sind. Einer arbeitet bereits mit Vista, einer arbeitet mit Office 2000, einer mit Officce 2003, einige haben Access, andere müssen wiederum über die Access Runtime arbeiten, u.s.w. Zudem entwickle ich dieses Programm stets weiter, sodass regelmäßig Updates herauskommen.
^^wenn du's neu machen willst, dann bau eine zentralisierte version. also: die gesamte software läuft auf 'nem server und deine benutzer greifen über clients (z.b. ein stinknormaler web-browser) drauf zu. dann gibt's keine probleme mehr mit updates und inkompatiblem kleinkram, weil ja alles auf dem server ist, ja sogar welches OS der user benutzt, ist letztlich egal. nachteil: ohne netzwerkanbindung geht dann nicht mehr viel.
zur programmiersprache: meine lieblinge PHP und Java will ich mal vorschlagen, es gibt aber noch vieles mehr, mit dem man sowas machen kann
-
~fricky schrieb:
zur programmiersprache: meine lieblinge PHP und Java will ich mal vorschlagen, es gibt aber noch vieles mehr, mit dem man sowas machen kann
Auf Grund seiner Vorerfahrungen wäre die .Net Plattform aber tatsächlich geeigneter (sei es nun VB.Net oder C#), da es mehr überschneidungen gibt.
-
asc schrieb:
Auf Grund seiner Vorerfahrungen wäre die .Net Plattform aber tatsächlich geeigneter (sei es nun VB.Net oder C#), da es mehr überschneidungen gibt.
ja, die versuchung ist gross, weil er schon VB eingesetzt hat. wenn er aber tatsächlich was serverbasiertes machen will, dann würde ich von proprietären ms-technologien abstand nehmen. nicht zuletzt aus dem grund, weil einem bei sowas die gates-company tief in die tasche greift.
-
Hallo Leute und vielen Dank für die Anregungen. Echt genial dieses Portal
und auch schon so viele Antworten...
Wichtig wäre mir, dass ich für die Entwicklungssoftware nicht viel Bezahlen muss.
Über eine webbasierte Lösung habe ich auch bereits nachgedacht. Ich würde das durchaus bevorzugen.Ist es dann allerdings auch möglich, dass die induviduellen persönlichen Benutzerdaten (z.B. Name, Vorname, etc.) der Mitarbeiter berücksichtigt werden? Zudem soll jeder Mitarbeiter die Möglichkeit haben, seine Mandanten in einer Datenbank zu speichern. Jeder Mitarbeiter sollte da natürlich auch nur auf seine eigenen Daten zugreifen können und nicht auf die anderer. Ist das sehr umständlich oder relativ einfach umzusetzen? Sorry, habe bisher lediglich Offline-Programme geschrieben und von webbasierten Formen (noch) keine Ahnung.
Vom Gefühl her würde ich erst einmal sagen, dass ich es mit C# versuche, da ich auch kostenlos erst einmal die Entwicklungssoftware bekommen könnte.
Habe ich es richtig verstanden, dass ich unter C# das Programm schreiben könnte und es dann mit .NET online laufen lassen kann? Was muss ich mir alles für Software besorgen um das umsetzen zu können? Muss ich etwas bei meinem Webspace-Provider beachten? Habe es derzeit bei Strato.
Liebe Grüße
-
~fricky schrieb:
ja, die versuchung ist gross, weil er schon VB eingesetzt hat. wenn er aber tatsächlich was serverbasiertes machen will, dann würde ich von proprietären ms-technologien abstand nehmen. nicht zuletzt aus dem grund, weil einem bei sowas die gates-company tief in die tasche greift.
Es mag sein das es wenige freie IIS(?) Anbieter gibt, aber durchaus auch günstige. Zudem ist auch sonst recht viel inzwischen frei erhältlich (Die Expressversionen von Visual Studio, so auch das für die ASP.NET Entwicklung und auch die MS-SQL Server Expressversion taugen auch im komerziellen Einsatz).
Ich habe nichts gegen Alternativen, aber es stimmt einfach nicht das MS für alles tief in die Tasche greifen lässt. Es sollte eher eine Frage nach dem Aufwand und nach den Rahmenbedingungen sein, die über eine Umgebung entscheiden, als irgendwelche Glaubenskriege.
Pingo80 schrieb:
Habe ich es richtig verstanden, dass ich unter C# das Programm schreiben könnte und es dann mit .NET online laufen lassen kann?
Wenn du nur zugriff auf die Expressversionen hast, gibt es für den Webbereich eine eigene Expressversion. Die Entwicklung wäre dort unter ASP.Net sowie entweder C# oder VB.Net soviel ich weiß.
Pingo80 schrieb:
Was muss ich mir alles für Software besorgen um das umsetzen zu können? Muss ich etwas bei meinem Webspace-Provider beachten? Habe es derzeit bei Strato.
Der Webspace-Provider muss ASP.Net (+ falls zutreffend: die eingesetzte Datenbank) unterstützen, soviel ich weiß geben die entsprechenden Anbieter auch an welche .Net Version du einsetzen kannst. Hier ist die Auswahl schon geringer von der Anbieterseite im günstigen Bereich, aber es gibt welche (Da ich derzeit keine Webentwicklung betreibe, kann ich dir hier aber keine Entfehlung aussprechen).
Für die Entwicklung solltest du hier alles nötige kostenlos finden.
cu André
-
Hi Pingo,
Dein Anwendungsfall klingt nach Java, auch wenn ich da eher nur strategisch was dazu sagen kann. Sun hat existentielles Interesse, daß die WORA- (write once - run anywhere) Strategie mit den üblichen Abstrichen weiter funktioniert, während die .NET- Derivate eher WOROM (write once, run on microsoft) verfolgt. Da können die anderen hinterherbasteln, wie sie wollen, auf einen Freiheitsgrad mehr würde ich nicht verzichten wollen.
Ich habe zudem zwei Sachen unter Java immer noch am Leben, die seit 1997 nur marginale Anpassungen erforderten. Mir ist damals zu Java geraten worden und ich habe es nicht bereut, das anzunehmen, ohne selbst in Java oder C# mehr als hingedöttelt zu haben.
Mit der Anforderung kann man mit Java zumindest nicht falsch liegen, ob was anderes besser ist - who knows?
-
Das ist ja interessant, wie unterschiedlich hier die Meinungen sein können.
Was würde ich denn für eine Java-Umsetzung alles benötigen und was kostet das?
@ André: Vielen Dank für den Link. Reicht es, wenn ich Visual C# 2008 und SQL-Server 2008 herunterlade?
Ich benötige ja einmal eine Datenbank und einmal wahrscheinlich Visual C# zum Durchführen von Berechnungen und Erstellen von Formularen / GUI. Oder liege ich da falsch?
Ich nehme mal an, dass ich mit der DB beginnen müsste und dann drumherum mit C# alles andere bastele. Muss ich die DB schon online stellen? Ich denke mal, dass ich alles offline programmieren kann und es dann im fertigen Zustand irgendwie ins Netzt bekomme, oder? Ich frag nur vorsichthalber, bevor ich mittendrin oder gar zum Schluss feststelle, dass ich vielleicht was falsch gemacht habe
-
Pingo80 schrieb:
Was würde ich denn für eine Java-Umsetzung alles benötigen und was kostet das?
Zunächst benötigst du das Java Development Kit von Sun und eine Entwicklungsumgebung. Mit Eclipse und Netbeans existieren hier zwei sehr gute freie IDEs. Dies alles ist (auch für den kommerziellen Einsatz) völlig kostenlos.
Darüber hinaus gibt es in der Java-Welt eine Unzahl freier Frameworks, Bibliotheken, Applicationserver usw., die professionell entwickelt und eingesetzt werden.
Alles in allem kann ich auch nur zu Java raten.http://java.sun.com/
http://www.eclipse.org/
http://www.netbeans.org/
-
Moin Moin!
Ich hab k.A. warum die anderen alle sagen das Ganze sei kein Problem und hier schon von Webanwendungen etc. etc. reden.Das Ganze scheint mir doch ein bisschen problematisch zu sein, naemlich aus 2 Gruenden:
Ich hab das Gefuehl du hast nicht sehr viel Erfahrung mit Programmiersprachen/Programmierung allgemein (sorry, wenn ich dir da jetzt zu Nahe trete), also wirds auf jeden Fall ein bisschen aufwaendig bis du eine Sprache gelernt & dich eingearbeitet hast. Aber den Elan scheinst du ja zu habne, also wirds daran nicht scheitern. Aber das 2. Problem ist: und du musst anscheinend viel Mit Office kommunizieren:Pingo80 schrieb:
- per Button bestimmte word-, excel-, pdf, jpg u.ä. Dateien öffnen und anzeigen
- Platzhalter in bestimmte Word-Dokumente mit Feldern aus der Datenbank füllen
- Im- und Exportieren von Tabellen von und nach Excel
- diverse Berechnungen (meist Zinsberechnungen, etc.)
- Erstellen von Berichten, die später zum Ausdruck stehen
- Versand bestimmter Datenfeldinhalte per E-Mail aus dem Programm herausDas ist sehr, sehr viel Interaktion mit MS Office Komponenten. Dazu ist VBA natuerlich super geeignet, weil es ja direkt in Office integriert ist. Mit jeder anderen Sprache wird das Ganze nicht so einfach. AFAIK lassen sich Word & Co. zwar ueber COM (?) fernsteuern, aber als ich mir das das letzte Mal angschaut hab, war das beileibe nicht trivial (ist aber zugegeben schon ein paar Jahre her). Vielleicht gibt es irgendwelche Libraries im Internet, die das Recht einfach machen, und vllt. sich diese gratis und vllt. in der Sprache deiner Wahl verfuegbar. Ich wuerd mich aber zuerst mal darueber informieren, bevor du dir Gedanken machst, wo du billige Webhoster findest.
Bzw.: deine Beschreibung war noch recht vage. Aber wenn du wirklich viele Office-Dokumente verarbeiten musst und aufs Office-Format angewiesen bist (d.h. du kannst nicht einfach .txt oder .csv - Dateien verwenden oder ein anderes einfach verarbeitbares Format), wird das Ganze nicht ganz einfach -- ich frag mich auch wie du das in eine Webanwendung integrieren willst, aber das wirst du schon irgendwie machen, vermut ich mal
Wenn du beim Format nicht so festgefahren bist, gehts natuerlich einfacher. ein RTF-Dokument zu erstellen ist nicht allzu schwer, und z. B. mit JasperReports kannst du super Reports erstellen, ohne auf Access-Funktionalitaet angewiesen zu sein.
Zu den Sprachen: C++ ist eine relativ komplizierte Sprache. Java oder eine .NET-Sprache (C# oder VB.net) wurden ja schon vorgeschlagen. Ich koennte mir Vorstellen, dass du mit einem Microsoft-Produkt wie C# oder VB.net besser bedient bist, wenn du viel mit MS Office interagieren willst, vllt. bietet MS da sogar schon was passendes an. Lass dich uebrigens nicht in die Irre fuehren, VBA und VB.net haben nur sehr wenig gemeinsam, auch wenn einzelne Konstrukte (if, for, ...) sehr aehnlich ausschauen.
Zu deinen spezifischen Fragen:
1. Kann mir jemand sagen, ob es bei der Weitergabe meiner in C++ programmierten Software zu ähnlichen "Problemchen" kommen kann? Oder ist das vielleicht einer der "Macken" von VBA?
Eine der Macken von Office, ja. Aber auch bei anderen Sprachen kann es mal sein, dass mal was mit einem bestimmten OS geht und mit einem anderen nicht.
2. Läuft mein c++Programm auch problemlos auf alle anderen Rechner, unabhängig von der Office-Version?
Steht und faellt mit den Bibliotheken zur Verarbeitung von MS Office, die du verwendest. Eine Bibliothek zu finden, die mit allen Office-Formaten von 97 - 2007 zurecht kommt, ist vermutlich nicht ganz einfach.
5. Lässt sich mein VBA-Code aus Access irgendwie noch nützlich verwenden? Kann ich da vielleicht irgendwie Teile in c++ umwandeln?
So gut wie sicher nicht. Du verwendest in VBA ziemlich sicher sehr viele VBA-Funktionen, die direkt auf Office-Komponenten zurueckgreifen. Sowas hast du in keiner anderen Sprache.
6. Lassen sich mit c++ ähnlich wie in Access Datenbanken einrichten und benutzen?
Du kannst in C++, C#, Java, ... auch auf (externe) Datenbanken zugreifen, und zwar meistens via SQL.
Wichtig wäre mir, dass ich für die Entwicklungssoftware nicht viel Bezahlen muss.
Fuer fast jede Programmiersprache gibts heute gratis Entwicklungssoftware, viel wichtiger ist, wie schnell du deine Loesung in der gewaehlten Sprache umsetzen kannst. k.A. was dein Stundensatz ist, aber Zeit ist ja bekanntlich Geld: wenn du jetzt in Sprache X arbeitest und dabei 4 Monate fuer die Umsetzung brauchst, ist das wesentlich teurer als wenn du Sprache Y nimmst, wo du nur 2 Monate brauchst. Also ists wichtiger, dass du eine Sprache findest, die gut mit Office zusammenarbeitet & die du gern magst/leicht lernen kannst!
Ist es dann allerdings auch möglich, dass die induviduellen persönlichen Benutzerdaten (z.B. Name, Vorname, etc.) der Mitarbeiter berücksichtigt werden? Zudem soll jeder Mitarbeiter die Möglichkeit haben, seine Mandanten in einer Datenbank zu speichern. Jeder Mitarbeiter sollte da natürlich auch nur auf seine eigenen Daten zugreifen können und nicht auf die anderer. Ist das sehr umständlich oder relativ einfach umzusetzen?
Sehr einfach: der Benutzer loggt sich im System ein und dann kannst du bei all deinen Datenbankabfragen ja immer sicherstellen, dass er nur seine eigenen Daten sieht (SELECT * FROM mandaten WHERE ... AND user_id = $der_eingeloggte_user).
Habe ich es richtig verstanden, dass ich unter C# das Programm schreiben könnte und es dann mit .NET online laufen lassen kann? Was muss ich mir alles für Software besorgen um das umsetzen zu können? Muss ich etwas bei meinem Webspace-Provider beachten? Habe es derzeit bei Strato.
Mehr oder weniger richtig. Wichtig bei .NET-Webanwendungen: es gibt keine eigentliche GUI, sondern nur Webseiten. Diese musst du in ASP.net schreiben.
Du musst auch drauf achten dass der Server .NET ausfuehren kann. Das ist bei Weitem nicht selbstverstaendlich.Auch zu bedenken: willst du die Anwendung wirklich _INS INTERNET_ stellen? Ich dachte dass ist eine Firmeninterne Anwendung, warum nicht einfach einen Server ins LAN stellen, dann hast du auch kein Problem, einen Provider zu finden.
-
Blue-Tiger schrieb:
Das ist sehr, sehr viel Interaktion mit MS Office Komponenten. Dazu ist VBA natuerlich super geeignet, weil es ja direkt in Office integriert ist. Mit jeder anderen Sprache wird das Ganze nicht so einfach. AFAIK lassen sich Word & Co. zwar ueber COM (?) fernsteuern
Trivial ist es nicht, aber wenn die Sprache entsprechenden COM-Support hat, hat man im Prinzip das selbe Interface wie mit VBA.
An dieser Stelle möchte ich auch mal Delphi in den Raum werfen. Ich kenne keine andere Sprache, die so nahtlosen COM-Support bietet.
-
audacia schrieb:
An dieser Stelle möchte ich auch mal Delphi in den Raum werfen.
ach nee, nicht auch noch das. rest in peace, delphi.
-
~fricky schrieb:
ach nee, nicht auch noch das.
Natürlich, warum denn Delphi benutzen, wenn man auch mit Java mittels einer COM-Bridge plattformunabhängige Office-Automatisierungen schreiben kann?
~fricky schrieb:
rest in peace, delphi.
?
-
Wie nich einfach VB6 ???? das kommt an VBA am nächsten ran...
-
Pingo80 schrieb:
@ André: Vielen Dank für den Link. Reicht es, wenn ich Visual C# 2008 und SQL-Server 2008 herunterlade?
Nicht Visual C#, sondern den Bereich für die Webentwicklung (ggf. zudem Visual C# wenn du Cliententwicklung betreiben willst).
Nachdem ich mir deine Liste nochmal angeschaut habe, komme ich aber definitiv zum Schluß das du hier wirklich auf C#/VB.Net und .Net Framework setzen solltest. Wegen der Office-Anbindung usw. (Hier hast du mit dem .Net Framework die bessere Grundlage). Aber du hast wirklich noch viel zu lernen...
cu André
-
audacia schrieb:
An dieser Stelle möchte ich auch mal Delphi in den Raum werfen. Ich kenne keine andere Sprache, die so nahtlosen COM-Support bietet.
VB hat imho eine mindestens ebenso gute COM-Unterstützung, und auch C# ist - soviel ich weiß - durchaus noch recht gut hierbei. Da ich aber selbst bislang keine COM-Anbindung unter C# benutzen musste, kann ich dies nicht verifizieren.