Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel hinter Online Maske legen
#1
Hallo,

Mal eine etwas andere Frage: Ich habe ein Excelsheet, welches über ein XML Import verschiedene Quality Checks über eine laufende Datenbank ausführt.

Wäre es irgendwie möglich, diese Excel Datei auf einem Server abzulegen, durch Befehle anzusprechen, die Makros durchlaufen zu lassen und dann den dadurch entstandenen Report auszugeben? Ich denke das Ausgeben des Reports dürfte kein Problem darstellen, dafür gibt es ja in VBA selbst Möglichkeiten. Derzeit wird auch der Report als PDF nach durchlaufen schon ausgegeben, die Excel Datei muss aber lokal ausgeführt und die Makros gestartet werden.

Die Online/Programmier Umgebung wäre erst mal Zweitrangig, mich interessiert vor allem ob es überhaupt eine Möglichkeit dafür gibt. Leider unterstützt Excel/Office Online ja keine Makros.

Im Grunde ist das Problem:
Damit der Kunde einen Report bekommt, kriegt er die Excel Datei quasi in die Hand und dadurch auch die Daten der XML Datei. Schöner wäre es, dieses über eine Onlinemaske zu machen. Quasi es gibt den Button "Start" auf einer Webseite und der Report wird an einer bestimmten Stelle im Server, per E-Mail, als Download oder irgendwie ausgegeben.

(Die auszuwertende XML Datei wäre der Stand über ein Online Dokumentenmanagementsystem.)

Liebe Grüße
Antworten Top
#2
Hallöchen,

prinzipiell ist so was möglich. Eine einfache Variante ist, auf dem Server einen Task laufen zu lassen, der Excel und die Exceldatei regelmäßig z.B. per Script startet und die Makros machen alles weitere bis hin zur Ausgabe einer pdf-Datei. Das setzt natürlich auch voraus, dass auf dem Server Excel installiert ist und läuft. Du brauchst dazu also einen Windows-Server. Oder das Script zum Start der Anwendung wird eben manuell ausgelöst ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Hallo,

Ich habe mich jetzt mal ein wenig eingelesen. Also bei der Ausführung von Excel auf einem klassischen Server kommt es wohl zu verschiedensten Komplikationen, da das Programm stark auf eine Clientseitige Nutzung ausgelegt ist.


Bisher habe ich 2 Lösungsansätze, die auch stark in deine Richtung tendieren. Bei beiden ist die Grundvorraussetzung, dass ich hier einen PC hätte, auf dem Excel korrekt installiert ist und läuft.
Das eigentliche Makro welches angesteuert werden soll muss nur angestoßen werden, läuft automatisch bis zum Ende durch und verschickt das Ergebnis an eine voreingestellte E-Mail Adresse.

Bei dem ersten Ansatz würde Excel quasi durchgehend laufen:
Auf einer Internetseite kann ein User den Button "Auswertung Starten" oder sowas klicken, daraufhin verändert sich der Inhalt einer 2ten (für User nicht sichtbaren) Webpage, wo bisher nur Steht: "Nicht jetzt". Wenn jemand aber auf "Auswertung Starten" geklickt hat, verändert sich der Inhalt der Webpage für 2 Minuten zu "Jetzt".
Die Exceldatei würde eine Verbindung zum Datenimport dieser Seite habe. Dann würde in der Tabelle auf die der Datenimport zielt, in einer bestimmten Zelle "Nicht jetzt" stehen. Dieser Datenimport refresht jede Minute, wenn sich nach dem Refresh aber der Text in der Zelle von "Nicht jetzt" zu "Jetzt" ändert, dann fängt die Kaskade an.
Diese Zelle wird überwacht und wenn z.b. A1="Jetzt" ist, wird die eigentliche Makro angestoßen, läuft durch und schickt das Ergebnis los. Die Überwachung wollte ich regeln über "Private Sub Worksheet_Change(ByVal Target As Range)", leider erkennt er die Änderungen nach einem Datenimport erst, wenn ich auf die betroffene Zelle doppelklicke. Habe aber noch wenig Zeit gehabt dies durchzuprobieren. Gibt es eine Möglichkeit Excel irgendwie den minütlichen Datenimport/Refresh als Change erkennen zu lassen und damit "Worksheet_Change" zu triggern?
Insgesamt würde es wohl funktionieren denke ich, ist aber insgesamt eine ziemlich unelegante Lösung. Offensichtliche Schwächen wie Fehlfunktion bei Absturz etc. sind vorprogrammiert.


Der zweite Ansatz wäre:
Ein VB Skript anzusprechen. Mein Excel Makro/Sheet durch ein VBS anszusprechen und korrekt durchlaufen zu lassen hat schonmal funktioniert. Jetzt müsste ich das VBS irgendwie übers Internet ansprechen.

Evtl über HTML -> ASP -> VBScript -> Excel ?

Hier muss ich mich aber auch noch weiter Einlesen, was die Vor- und Nachteile wären und inwiefern dies überhaupt zu bewerkstelligen ist.


Schauan, im Grunde geht das ganze ja in die Richtung die du schon angesprochen hast. Ich hab mir jetzt überlegt, dass das ganze erstmal so geregelt wird, dass der User den Report 2 mal täglich automatisch per Mail zugesendet bekommt und halt manuell angestoßen auf Wunsch.

Wie krieg ich denn elegant ein regelmäßiges anstoßen des Makros am Besten hin? Ich könnte es mit Umwegen über die Excel eigene Timer Funktion machen, dafür müsste es aber durchgehend aktiviert sein. Gibt es da vlt was besseres um das VBS zu festen Zeiten anzusprechen?

Und entschuldigt den Roman ;)

Vielen Dank für die Hilfe und Liebe Grüße
Antworten Top
#4
Hallo Spike,

Erst noch mal was zur Zeitgesteuerten Aktion. Du könntest das per Aufgabenplanung im Windows erledigen. Die Aufgabenplanung könnte Excel mit einer Datei als Parameter starten oder Du regelst das über ein Script.

Das Script könnte ungefähr so aussehen:

Code:
fname  = "D:\Test\myfile.xlsm"
      Set oExcel = CreateObject("Excel.Application")
      oExcel.visible = true
      Set oWbk = oExcel.Workbooks.Open (fname, false, true)
      oExcel.Run "Main_Makro"

Beim Start über das Script läuft das "normale" WorkBook_Open nicht, daher musst Du aus dem Script heraus ein "normales" Makro aufrufen.

Im Script könntest Du z.B. prüfen, ob der Start von Excel überhaupt nötig ist. Dazu müsste das Ergebnis vom Button-Drücken irgendwo auf dem Server erreichbar sein, sei es nun in einem File oder einer Datenbank.

Ich habe bei mir übrigens auch Excel automatisch auf einem Windows Server laufen, ist also nix unmögliches. Und eventuelle Komplikationen sind doch dazu da, ausgeräumt zu werden Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
Hey Schauan,

das automatisieren von Excel selbst über VBs / Task Scheduler und ähnliches hat sehr gut funktioniert. Leider gibt es tatsächlich keine Möglichkeit über Excel automatisch einen Login über eine HTML Page und einen danach laufenden Datenimport zu bewerkstelligen.

Habe den Login und Download der XML file nun außerhalb von Excel mit cURL gelöst, was sowieso eleganter ist. Dieser wird zuerst angesprochen über den Task Scheduler, danach Excel bzw. ein Makro in Excel was alles inklusive import der xml File und Ausgabe des Reports per E-Mail automatisch macht und sich dann schließt.

So kann ich selbst einen Zeitraum bestimmen, an dem automatisch die auszuwertende Datei runtergeladen wird, Excel sich startet, auswertet und schließt. Dafür muss natürlich der basierende PC durchgehend laufen.

Wäre nur interessant zu wissen, wie es Lizenztechnisch aussieht wenn quasi für eine dritte Partei hier eine automatische Excel Auswertung gemacht wird. Oder ob das gecovert ist, da es ja quasi auf einem lizensierten System läuft.

Liebe Grüße
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste