none
Fern zugriff auf VBA und Excel RRS feed

  • Frage

  • Hallo alle zusammen,

    Ich hab  folgende Frage:

    Kann man von einem Client (zB SmartPhone) auf eine VBA und Excel Tabllen (die dann aus einen Server liegen) zugreifen, werte Manipulieren und eine Berechnung annstoßen?

    Der Server soll dann mit C# laufen, eine JSON Datei empfangen, die Werte dann weiter zu VBA oder Excel übergeben und nach den Berechnen das Ergebnis zurück schicken.

    Soviel zu Theori, würde es auch in der Praxis funktionieren?

    Mittwoch, 2. November 2016 18:09

Alle Antworten

  • Hallo,

    als Desktop Anwendung ist Excel dafür wenig geeignet, zumal es lizenz-rechtlich problematisch ist. Offizielle Aussage aus der MS KB: Was bei der serverseitigen Automatisierung von Office zu beachten ist.

    Eher denkbar wäre etwas wie Excel Services (Bestandteil von Sharepoint). Das bietet über REST / ODATA auch passendere Schnittstellen. Wobei ich mangels Erfahrungen wenig Konkretes dazu sagen kann.

    Gruß Elmar

    Mittwoch, 2. November 2016 19:20
  • Hi,
    natürlich könnte man so etwas mit einem nicht unbeträchtlichen Aufwand programmieren. Ohne Berücksichtigung von Lizenzfragen braucht auf dem Server nur einen Service programmiert werden, der über Objektautomatisierung Excel-Instanzen "fernsteuert".

    Einfacher ist es, wenn man die Excel-Tabellen in einer Dokumentenbibliothek in einem SharePoint speichert (z.B. SharePoint Online) und mit einem OfficeWebApps Server die Datei nutzt. Das kann man dann auch mit einem beliebigen Browser, z.B. auf einem iPad ausführen.


    --
    Viele Grüsse
    Peter Fleischer (MVP Reconnect, Partner)
    Meine Homepage mit Tipps und Tricks

    Mittwoch, 2. November 2016 19:23
  • Hallo,

    als Desktop Anwendung ist Excel dafür wenig geeignet, zumal es lizenz-rechtlich problematisch ist. Offizielle Aussage aus der

    Eher denkbar wäre etwas wie Excel Services (Bestandteil von Sharepoint). Das bietet über REST / ODATA auch passendere Schnittstellen. Wobei ich mangels Erfahrungen wenig Konkretes dazu sagen kann.

    Gruß Elmar

    Hallo Elmar,

    Und wenn ich ein VBA ausführen auf dem Server, der mir dann das Manipulieren und Rechnen von Daten ermöglicht. Wäre das möglich?

    Es soll nur im Intranet laufen und nicht ins Internet Routen. Die Lizensen hat das Institut.

    Mittwoch, 2. November 2016 20:37
  • Hi,
    natürlich könnte man so etwas mit einem nicht unbeträchtlichen Aufwand programmieren. Ohne Berücksichtigung von Lizenzfragen braucht auf dem Server nur einen Service programmiert werden, der über Objektautomatisierung Excel-Instanzen "fernsteuert".

    Einfacher ist es, wenn man die Excel-Tabellen in einer Dokumentenbibliothek in einem SharePoint speichert (z.B. SharePoint Online) und mit einem OfficeWebApps Server die Datei nutzt. Das kann man dann auch mit einem beliebigen Browser, z.B. auf einem iPad ausführen.


    --
    Viele Grüsse
    Peter Fleischer (MVP Reconnect, Partner)

    Hallo Peter,

    Naja die Date sollen via JSON an den Server geschickt werden, dann ausgepackt und in die richtigen Zeilen eingefügt werden, dann soll die Berechnung ausgeführt werden und das Ergebnis wieder zurück geschickt werden.

    (Die VBA Scripte sind soweit fertig ich muss nur noch drauf zugreifen können. )

    Sprich man soll nichts vom Excel auf dem Client sehen, nur paar Eingabenfelder und das Ergebnis soll angezeigt werden.

    Wäre das mit VBA/C# möglich?

    Ich kenn mich mit .NET, VBA und C# nicht so gut aus, ich komme eigentlich aus der Linux Welt.

    Ich würde sowas auch nicht in Excel berechnen lassen sondern in einen Script/Programm aber die Berechnungsalgorietmen sind teilweise zu aufwendig und es sind zuviele um das ganze zu übertreagen :(

    Mittwoch, 2. November 2016 20:38
  • Hi,
    ich gehe mal davon aus, dass Du mit VBA-Scripten Methoden meinst, die in VB6 geschrieben sind und in Excel aufgerufen werden, z.B. über ein Formular mit einer Befehlsschaltfläche "Berechnen". Wenn das so ist, dann kann man diese Methoden einfach in VB.NET umsetzen und in einem WCF-Service kapseln, der dann als JSON serialisierte Parameter empfängt und das Ergebnis als JSON zurückliefert.

    Wenn Du unter VBA Scripte etwas anderes verstehst, dann müsstest Du genauer beschreiben, was Du darunter verstehst. Ich gehe davon aus, dass es dann die Umsetzung schwieriger wird, da zuerst die Berechnungsmethoden programmiert werden müssen, die dann vom WCF Service aufgerufen werden.


    --
    Viele Grüsse
    Peter Fleischer (MVP Reconnect, Partner)
    Meine Homepage mit Tipps und Tricks


    Donnerstag, 3. November 2016 03:44
  • Hallo,

    wenn man über ein .NET Programm zugreift, wird man i. a. nicht VBA (Visual Basic for Applications) in Excel nutzen, sondern den Code über Automation in C# (oder Visual Basic) nachstellen. Nichtsdestotrotz wird dabei eine Excel Instanz gestartet, die (siehe KB Artikel) einen angemeldeten Benutzer (idealerweise den Anfragenden) benötigt. Verwendet man nur eine Anmeldung, so können sich die Instanzen in die Quere kommen - was zu den im Artikel dokumentieren Fehlern führen kann.

    Zu lizenzrechtlichen Dingen können wir hier keine verbindlichen Aussagen machen. Laut Artikel muss jedes nutzende Gerät eine entsperchende Office Lizenz besitzen. Was sich aber geändert haben kann, da der Artikel bereits einige Zeit alt ist.

    Je nachdem welcher Funktionsumfang genutzt wird, sollte man schauen ob man nicht Bibliotheken findet, die die benötigten Excel Funktionen implementieren. Solange keine Oberfläche verwendet wird, sollte es mit direkten Methoden implementierbar sein. Typische SUMME(), WENN() und andere Berechnungsformeln lassen sich durchaus in C# (z. B. via LINQ) implementieren.

    Eine Fundstelle (nach kurzer Suche): Excel Financial Functions.

    Gruß Elmar

    Donnerstag, 3. November 2016 07:38
  • Hi,
    ich gehe mal davon aus, dass Du mit VBA-Scripten Methoden meinst, die in VB6 geschrieben sind und in Excel aufgerufen werden, z.B. über ein Formular mit einer Befehlsschaltfläche "Berechnen". Wenn das so ist, dann kann man diese Methoden einfach in VB.NET umsetzen und in einem WCF-Service kapseln, der dann als JSON serialisierte Parameter empfängt und das Ergebnis als JSON zurückliefert.


    Danke dir, genau das meine ich :) Die Berechnungen stehen schon und wurden Programmiert, ich muss noch das mit werten fütern, berechnung anstoßen und das Ergebnis zurück senden.

    Kannst du mir sagen was ich mir anschauen oder durch lesen soll?

    -VB.NET

    -WCF-Service

    Noch irgendwas?

    Donnerstag, 3. November 2016 13:10
  • Hallo,

    ich bringe mal noch etwas neues ins Spiel, vorausgesetzt die Excel-Dokumente liegen im Open XML Format vor, also ".xlsx".

    Wie Peter schon schreibt würde ich einen WCF-Service in VB.Net auf dem Server erstellen, der dann allerdings mit OpenXML auf deine Excel-Dokumente zugreift.

    Das hat den Vorteil, dass Du keine Lizenzprobleme bekommen wirst, und der Zugriff wahrscheinlich etwas schneller verarbeitet werden kann, da nicht jedes mal eine Excel-Instanz aufgebaut werden muss.

    Der Nachteil ist, dass das Objektmodell von OpenXML etwas anders aussieht als das Objektmodell von Excel.

    Grüße

    Roland

    Donnerstag, 3. November 2016 14:05