mit AUtoit Excel öffnen, ohne das Excel angezeigt wird

  • Jedoch bekomme ich immer noch die Speichermeldungen,


    EDIT: Ich vermute, das ist nicht die Speichermeldung, sondern die ScreenUpdate-Meldung ("..Datei wurde verändert, soll die Datei neu geladen werden" - oder so ähnlich). Das musst du natürlich auch abfangen, siehst du in meiner Close-Funktion. Obwohl das in der normalen _Excel_Open-Funktion, die du kpl. mit False für alle Parameter setzt, ja auch deaktiviert sein sollte. :/


    Ich verwende bei mir eine eigene Open und Close - Funktion, die jeweils Excel-Objekt erstellen und Workbook öffnen, sowie Workbook speichern und Objekt schließen in einem Rutsch erledigt. Da poppt keine Dialogbox auf.

    Vielleicht kannst du es verwenden:

  • Moin,


    ein paar Gedanken, wobei ich davon ausgehe, dass im Beitrag #19 das komplette Skript steht:


    Hast Du mal den Hinweis von water im Beitrag #8 zu $bForceNew umgesetzt? Dien Skript enthält keinen Aufruf von _Excel_Close() bzw. $oExel.Quit(). Damit bleibt nach Ende des Skripts wahrtscheinlich die Excel-Instanz im Hintergrund aktiv.


    In der Microsoft Dokumentation zu PublishObjects.Add() findet sich ein Beispiel für das, was Du machen willst. Du kannst das nahezu unverändert übernehmen:

    Code
    With $oWorkbook.PublishObjects.Add($xlSourceRange, $oWorkbook.Path & "\web\123.htm", "Polsterei", "$A$1:$U$40", $xlHtmlStatic, "", "")
        .Publish(True) 
        .AutoRepublish = False 
    End With

    Deine zwei Aufrufe der PublishObjects.Add()() Methode erzeugen möglicherweise zwei Objekte.


    Die mehrfache Versorgung von DisplayAlerts bringt meiner Meinung nach nichts. Im Skript wird DisplayAlerts bereits in _Excel_Open() auf False gesetzt. Wenn das an dieser Stelle nicht wirkt, wirkt es auch später nicht. Hast Du in der Excel-Datei vielleicht noch andere Makros, die automatisch ablaufen und sich mit dem Skript 'verhaken' können?

  • Hi Velted,


    Ja, #19 ist aktuell das komplette Script, _Excel_Close() hatte ich schon getestet, aber ohne Erfolg. Wenn ich deinen Code in mein Script einsetzte, hängt sich Excel komplett auf.

    Wodran erkenne ich denn, ob eine Excel-Instanz offen bleibt oder nicht ? Im Excel ist kein Script enthalten, das möchte ich ja alles gerne über das AUtoIT Script erledigen.

  • Hi,


    ich möchte ja "nur" ein Excel Sheet öffnen, einen Wert dort suchen, farblich hinterlegen und das Sheet als HTML Datei Speichen und das Excel speichern und schliessen. Ohne das man etwas davon sieht, alles klappt, bis auf die beiden Meldungen beim Speichern.

  • und selbst wenn ich es auf ein Minimum reduziere und auch das Speichern der HTML Seite weg lasse, bekomme ich für das Speichern des Sheets eine Speichermeldung.


  • Excel-Instanz offen bleibt oder nicht ?

    Mit ProcessExists auf eine Excelinstanz prüfen. Das Blöde ist aber, dass sich unbegrenzt Excel-Instanzen öffnen lassen.


    Aber zum Test: Öffne vor dem Ausführen deines Skripts den Taskmanager. Findest du dort eine/mehrere Excel-Instanzen: Abschießen.

    Und nun starte dein Skript in der jetzt Excel-freien Umgebung. Wenn es dann noch nicht klappt: PC aus Fenster werfen. :whistling:

  • Hi Velted,


    Wenn ich deinen Code in mein Script einsetzte, hängt sich Excel komplett auf.

    Moin,


    das liegt wahrscheinlich daran, dass ich die Befehle aus dem Beitrag #14 von water kopiert habe. So dürfte es besser passen:


    AutoIt
    With $oWorkbook.PublishObjects.Add($xlSourceRange, $Freigabe & "web\" & $Gewerk & ".htm", $Gewerk, "$A$1:$U$40", $xlHtmlStatic, "", "")
        .Publish(True)
        .AutoRepublish = False 
    End With


    Ich habe versucht, ein SKript zu basteln, das ohne die Excel-UDF auskommt. Testen kann ich mangels Excel und Deiner Daten hier nicht. Probier doch mal ob das besser läuft. Beachte dabei die oben im Skript unter Einstellungen vorhandenen Variablen:


  • Naja... genau was da steht: Die Variable wurde vorher als Konstante deklariert.

    Du kannst die Variable also nicht später neu zuweisen. Wenn du den Block mehrmals in deinem Script hast, wird es sich beschweren.


    Am besten postest du das ganze Script. Ich vermute stark, dass du Arrays verwenden solltest (anstatt den Code mehrmals zu kopieren,...).


    Ansonsten: Einfach das const überall weglassen, wo du die Variable deklarierst/definierst.

  • Hi Kanashius

    das Script ist direkt darüber in #27 :)


    Const habe ich bereits raus genommen, klappt leider aber dennoch nicht.

    Ich glaube nicht, dass dies das ganze Skript zeigt. Sont wäre der Fehler nicht da.

    Der Hinweis von Velted passt da schon ganz gut, kommentiere mal die beiden angeprangerten Zeilen aus und schaue ob es dann funktioniert oder zeig das ganze Skript.

  • Hi,


    ok, ich glaube jetzt habe ich es verstanden, also das Script läuft ohne Fehler wenn ich entweder die beiden Excel Constanten raus nehme oder die inkludierten au3 Files entferne. Jetzt habe ich erstmal den Zusammenhang verstanden, danke für den Hinweis :)


    Aber, leider bringt mich das komplette Script nicht weiter, da auch dieses die beiden Speichermeldungen anzeigt, aber die Abfrage der Fehler kann ich gut gebrauchen.


    Danke euch für die ganzen Tipps und Hinweise, ist echt nicht so einfach in so ein Thema einzusteigen....

  • Hallo zusammen,


    ich konnte das Problem mit dem Speicherfenster etwas eingrenzen, vielleicht hilft das weiter:


    Wenn ich auf ein Netzlaufwerk speichere kommt die Speichermeldung, speichere ich auf zum Beispiel TempDir, kommt die Speichermeldung nicht.