MS-Office-Forum

MS-Office-Forum (https://www.ms-office-forum.net/forum/index.php)
-   Windows Automatisierung (https://www.ms-office-forum.net/forum/forumdisplay.php?f=193)
-   -   per vbscript hta öffnen und schließen (https://www.ms-office-forum.net/forum/showthread.php?t=339094)

phobos 20.01.2017 09:27

per vbscript hta öffnen und schließen
 
Hi,

per vbscript starte(öffne) ich eine hta.
Ist eigentlich nur ein Fenster das dem User angezeigt werden soll während der Code weiter im Hintergrund arbeitet.

Wie kann ich diese hta wieder aus dem vbscript heraus schließen?

Code:

Option Explicit
Dim xlApp , Pfadxl, ppApp, Pfadpp, shell

set shell = CreateObject("WScript.Shell")
shell.run """C:bild groß.hta""", 1, false
shell.close -> funktioniert nicht
set shell = nothing

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = false
Pfadxl = "C:xxxx.xlsm"
xlApp.Workbooks.Open Pfadxl
xlApp.Quit
set xlApp = nothing

Hoffe jemand kennt sich da aus:eek:

_anton_ 22.01.2017 09:31

Hallo Mario,

vielleicht hilft dir das hier schon.

mfg Anton

phobos 23.01.2017 12:45

Hi Anton,

super. Das funktioniert bestens für meine Zwecke!:)

Danke Dir!

P.s. kenns Du ne gute Seite mit Tutorials zu dem Thema vbscript?

phobos 25.01.2017 08:15

Hi,

Der Code funktioniert wenn ich ihn öffne.

Startet allerdings ein Kollege auf einem anderen Rechner denselbigen, wird die Exceldatei nicht gänzlich geschlossen. Excelfenster sind weg. Aber im Taskmanager läuft der Prozess noch und ich kann ihn nicht erneut öffnen weil dann die Meldung kommt das die Datei bereits geöffnet ist.


Code:

ie4.Visible = True
ie4.document.body.innerHTML = "
Bitte warten, Daten werden verarbeitet!
"
ie4.document.Title = "Bitte warten!"

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = false
Pfadxl = "C:xxxxx.xlsm"
xlApp.Workbooks.Open Pfadxl
xlApp.Quit
set xlApp = Nothing

Die Exeldatei wird eigentlich über VBA Code wieder geschlossen.
Wird die Exceldatei direkt gestartet, also ohne das script, funktionierts bei mir und meinem Kollegen.

Liegt also vermutlich an dem Script?

_anton_ 26.01.2017 16:55

Hallo Mario,

ich hätte an deiner Stelle Excel sichtbar gestartet, um zu sehen,
ob die Datei wirklich geschlossen wird.
Code:

xlApp.Visible = True
Zitat:

kenns Du ne gute Seite mit Tutorials zu dem Thema vbscript?
nein, ich benutze die MS Hilfedatei script56.chm, die ich irgendwann mal
aus dem Internet runtergeladen habe (z.B. hier).

mfg Anton

phobos 07.02.2017 14:50

Hi anton,

kann(darf) das ich leider nicht installieren da Firmen-PC:(

Beim Kollegen war das Serverlaufwerk anders Benannt, deswegen wurde der Pfad nicht gefunden.

Danke Dir für die Hilfe.

phobos 22.02.2017 09:45

Hallo anton,

dieses Thema muss ich nochmals hochholen.
Das Script wird von verschiedenen Usern und PC´s gestartet.

Bei einigen PC´s funktioniert die Exceldatei(die Makros enthällt) nicht, sobald im Script "xlapp.visible" auf "false" gestellt ist.
Bei "true" funktionierts immer, ebenso wenn ich die Exceldatei direkt öffne.

Hast du ne Idee woran das liegt?

_anton_ 23.02.2017 14:29

Hallo Mario,

Zitat:

Das Script wird von verschiedenen Usern und PC´s gestartet...
Beim Kollegen war das Serverlaufwerk anders Benannt ...
Wie ist das Laufwerk bei anderen PCs mit Server verbunden?
ich hätte das so gemacht:
Code:

Pfadxl = "\\server\freigabe\ordner\C:xxxxx.xlsm"
Zitat:

Hast du ne Idee woran das liegt?
mich wundert ein bisschen, dass die Exceldatei überhaupt funktioniert.
Du öffnest deine Exceldatei und schliesst sie sofort:
Code:

xlApp.Workbooks.Open Pfadxl' Datei öffnen
xlApp.Quit' Excel schliessen !!!
set xlApp = Nothing

entweder du baust eine Pause in dein Script, oder du schliesst Excel aus der Exceldatei heraus.
Ob das hilft, muss du ausprobieren.

mfg Anton

phobos 27.02.2017 12:01

Hi Anton,

also das hat vermutlich mit dem Pc zu tun.
Auf meinem Desktop-REchner funktioniert das ganze per Script und direkt über Excel.

Auf einem anderen Rechner gehts bei mir auch nicht per script.
Das script öffent die Excel, aber dann bleibt der Excel Code hängen.
Es muss ja mit dem Script zu tun haben denn wenn ich das Excelfile direkt öffne, funktionierts auf jedem REchner.

_anton_ 27.02.2017 17:18

Hallo Mario,
Zitat:

... du baust eine Pause in dein Script
etwa so:
Code:

xlApp.Workbooks.Open Pfadxl' Datei öffnen
wscript.sleep 10000' 10 sec Pause damit deine Exceldatei funktioniert
xlApp.Quit' Excel schliessen !!!
set xlApp = Nothing

PS:mich würde auch interessieren, ob das hier geholfen hat.

mfg Anton

phobos 28.02.2017 07:52

Liste der Anhänge anzeigen (Anzahl: 1)
Hi Anton,

das andere hat funktioniert.

Zu dem Pause Vorschlag.
Bei mir sieht das Script so aus:
Code:

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = false
Pfadxl = "xxx.xlsm"
Set objExcelWorkbook = xlApp.workbooks.Open(Pfadxl)
wscript.sleep 10000
Set objExcelWorkbook = Nothing
xlApp.Quit
set Pfadxl = nothing
xlApp.Visible = true
set xlApp = Nothing

.....funktioniert leider nicht.

Ich habs dann mal mit einer einfachen Beispieldatei versucht.
Auch hier ist es so das bei einigen Rechnern die Exceldatei zwar geöffnet wird (sieht man in der Prozessübersicht). Aber die 'Sub workbook_open()' wird dabei schon gar nicht erst gestartet.

Script mit der die Exceldatei geöffenet wird sieht so aus:
Code:

Option Explicit
Dim xlApp , Pfadxl ,objExcelWorkbook

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = false
Pfadxl = "xxxtest.xlsm"
Set objExcelWorkbook = xlApp.workbooks.Open(Pfadxl)
wscript.sleep 10000
xlapp.quit
set objexcelworkbook = nothing
set xlapp = nothing

Beispielmappe anbei.

_anton_ 28.02.2017 08:05

Hallo Mario,

versuch mal noch eine Pause einzubauen:
Code:

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = false
wscript.sleep 10000
Pfadxl = "xxx.xlsm"
Set objExcelWorkbook = xlApp.workbooks.Open(Pfadxl)
wscript.sleep 10000
Set objExcelWorkbook = Nothing
xlApp.Quit

mfg Anton

phobos 28.02.2017 13:59

Hi Anton,

auch das hat nicht geholfen.:(

_anton_ 28.02.2017 14:37

Hallo Mario,
Zitat:

... Bei "true" funktionierts immer
Warum muss die Datei versteckt geöffnet werden?
Vielleicht reicht es schon die minimiert zu öffnen?
Code:

Set xlApp = CreateObject("Excel.Application")
xlApp.windowstate = -4140
xlApp.Visible = true
...

mfg Anton

phobos 01.03.2017 12:10

Hi Anton,

also nach ewigem testen funktionierts jetzt. Muss aber noch ein paar Rechner testen.
Minimieren hat geholfen ABER nur in Verbindung mit einer Pause vor dem Öffnen der Datei.

Danke Dir bis hierhin.

Ein Thema hab ich noch zu dem Script.

Falls die Exceldatei bereits geöffnet ist, wird sie trotzdem geöffnet, ohne Abfrage oder Hinweis das es jetzt Schreibgeschützt ist.

Optimal wäre eine Abfrage aus dem Script heraus ob datei bereits offen ist, wenn ja soll sie nicht geöffnet werden zusammen mit einer msgbox.

KAnnst du mir da auch noch behilflich sein?


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:30 Uhr.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.