Hallo zusammen,
gibt es eine Möglichkeit Excel über AutoIT zu starten, ohne Excel anzuzeigen, oder auch gerne nur minimal in der Taskleiste anzuzeigen ?
Hallo zusammen,
gibt es eine Möglichkeit Excel über AutoIT zu starten, ohne Excel anzuzeigen, oder auch gerne nur minimal in der Taskleiste anzuzeigen ?
Schau dir in der Hilfe die Excel UDF an, alle Funktionen, die mit _Excel... beginnen.
Hallo,
ich habe gefunden wie man das Öffnen "verstecken" kann, das klappt auch wunderbar:
$oExcel = _Excel_Open(False,False,False,False)
Aber leider habe ich nichts gefunden, wie man das Speichern Fenster abschalten kann, das wird immer wieder angezeigt ?
Was meinst Du mit speichern Fenster?
Welchen Befehl rufst Du auf?
Aber leider habe ich nichts gefunden, wie man das Speichern Fenster abschalten kann, das wird immer wieder angezeigt ?
Vor dem Aufruf von ..Save:
$oExcel.DisplayAlerts = False
$oExcel.DisplayAlerts = False
Das ist aber schon durch Parameter 2 von _Excel_Open erledigt. Siehe Post #3.
@gert_nrw_71 Ohne das Skript ist es natürlich schwer den Fehler zu finden
Das ist aber schon durch Parameter 2 von _Excel_Open erledigt.
Grundsätzlich ja, aber wenn z.B. das Objekt mit _Attach von einem Excel im Hintergrund "gekapert" wird, kann das durchaus anders sein.
Aber du hast recht - ohne Skript....
Da hast Du natürlich recht
Wenn bereits eine Excel Instanz läuft und ich das damit geöffnete Arbeitsblatt "kapern" will, dann setzt _Excel_Open die Properties dieser Excel-Instanz, wenn $bForceNew = False ist.
Bei $bForceNew = True oder es existiert bereits mehr als eine Excel-Instanz und das Arbeitsblatt gehört nicht zur ersten Instanz, dann ist _Excel_Open für dieses Arbeitsblatt wirkungslos, da die Properties für eine andere Instanz gesetzt werden.
Ist aber sehr hypothetisch
Ist aber sehr hypothetisch
Irgendwie musste ich ja meinen Kopf aus der Schlinge ziehen.
Hallo zusammen,
anbei das Script:
#include <Excel.au3>
#include <MsgBoxConstants.au3>
#include <Array.au3>
Global $Freigabe = "\\xyz\fertigungsplanung\"
Global $Gewerk = "Gewerk123"
$oExcel = _Excel_Open(False,False,False,False)
$sWorkbook = $Freigabe & "\" & $Gewerk & ".xlsm"
$oWorkbook = _Excel_BookOpen($oExcel, $sWorkbook, False, True)
$aResult = _Excel_RangeFind($oWorkbook, "11899")
;consolewrite("Ergebnis: " & $aResult[0][2] & @CRLF)
$oExcel.Range($aResult[0][2]) .Interior.ColorIndex = 44 ; setze Farbe
$oExcel.Application.Run("Update")
$oExcel.DisplayAlerts = False
$oWorkbook.Save
$oWorkbook.Close
$oExcel.Quit
$oExcel.DisplayAlerts = True
Alles anzeigen
und das ist ist "Update", welches im Excel aufgerufen wird. wollte es Ansicht lieber im AutoIT Script haben, habe ich aber noch nicht geschafft
Sub Update()
Application.DisplayAlerts = False
ThisWorkbook.PublishObjects.Add(xlSourceRange, ThisWorkbook.Path & "\web\123.htm", "Polsterei", "$A$1:$U$40", xlHtmlStatic, "", "").Publish (True)
ThisWorkbook.PublishObjects.Add(xlSourceRange, ThisWorkbook.Path & "\web\123.htm", "Polsterei", "$A$1:$U$40", xlHtmlStatic, "", "").AutoRepublish = False
Application.DisplayAlerts = True
End Sub
ich bekomme dennoch 2 Speichermeldungen, einmal die aus dem Excel -> "Update" und einmal aus dem Autoit -> "$oWorkbook.Save"
Vorausgesetzt, dass
sollte die Funktion in AutoIt wie folgt aussehen:
Func Update()
$oExcel.DisplayAlerts = False
$oWorkbook.PublishObjects.Add($xlSourceRange, $oWorkbook.Path & "\web\123.htm", "Polsterei", "$A$1:$U$40", $xlHtmlStatic, "", "").Publish(True)
$oWorkbook.PublishObjects.Add($xlSourceRange, $oWorkbook.Path & "\web\123.htm", "Polsterei", "$A$1:$U$40", $xlHtmlStatic, "", "").AutoRepublish = False
$oExcel.DisplayAlerts = True
EndFunc
Irgendwie musste ich ja meinen Kopf aus der Schlinge ziehen.
In der Excel UDF sind einige - aber eben nicht alle - Excel Konstanten definiert.
Wenn das Skript Fehler auswirft, dass eine/beide Konstanten "undefined" ist/sind, dann findest Du die Werte hier:
xlSourceRange bzw. xlHtmlStatic.
dann findest Du die Werte hier:
Alternativ kann man auch den VBA-Editor nutzen (Excel öffnen, <Alt+F11>) und dort im Objektkatalog (Symbol wie ein Karton) anzeigen lassen.
Hallo zusammen,
ich musste die beiden Variablen noch definieren, dann lief es. Jedoch bekomme ich immer noch die Speichermeldungen, eine vor der eingebauten msgbox und eine nach dieser, hmmm....
Die Update Funktion funktioniert aber schonmal aus Autoit heraus
#include <Excel.au3>
#include <MsgBoxConstants.au3>
#include <Array.au3>
Global $Freigabe = "\\abc\123\"
Global $Gewerk = "xyz"
Global $xlSourceRange = 4
Global $xlHtmlStatic = 0
$oExcel = _Excel_Open(False,False,False,False)
$sWorkbook = $Freigabe & "\" & $Gewerk & ".xlsm"
$oWorkbook = _Excel_BookOpen($oExcel, $sWorkbook, False, True)
$aResult = _Excel_RangeFind($oWorkbook, "10830")
;consolewrite("Ergebnis: " & $aResult[0][2] & @CRLF)
$oExcel.Range($aResult[0][2]) .Interior.ColorIndex = 44 ; setze Farbe
;$oExcel.Application.Run("Update")
$oExcel.DisplayAlerts = False
$oWorkbook.PublishObjects.Add($xlSourceRange, $Freigabe & "web\" & $Gewerk & ".htm", $Gewerk, "$A$1:$U$40", $xlHtmlStatic, "", "").Publish(True)
$oWorkbook.PublishObjects.Add($xlSourceRange, $Freigabe & "web\" & $Gewerk & ".htm", $Gewerk, "$A$1:$U$40", $xlHtmlStatic, "", "").AutoRepublish = False
$oExcel.DisplayAlerts = True
msgbox(1,"","Test")
$oExcel.DisplayAlerts = False
$oWorkbook.Save
$oWorkbook.Close
$oExcel.DisplayAlerts = True
Alles anzeigen