Anzeige
Archiv - Navigation
200to204
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
200to204
200to204
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Excel im Hintergrund starten

Excel im Hintergrund starten
15.01.2003 08:08:50
Bert
Um Exceldaten in einem automatisierten Vorgang bearbeiten zu können muss ich eine XLS-Datei in eine CSV-Datei konvertieren. Dies funktioniert mittels eines Autostartmakros. Das ganze starte ich dann über eine Batchdatei. Mein Problem ist nun, da dies Batchdatei wiederum aus einem Automatisierungstool gestartet wird, muss Excel im Hintergrund laufen. D.h. es darf kein Fenster von Excel aufgehen. Gibt es hier einen Parameter den ich beim Aufruf von Excel in der BAtchdatei mitgeben kann??

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Excel im Hintergrund starten
15.01.2003 14:00:16
ivan
hi
ich denke nicht das du den parameter in deiner *.bat datei eingeben mußt.sondern du must excel sagen wie es starten soll.
gib diesen code in die arbeitsmappe alt+f11

Private Sub Workbook_Open()
Application.Visible = False
UserForm1.Show 'oder was auch immer ausgeführt werden soll
Application.Visible = True
End Sub

webmaster ivan

Re: Excel im Hintergrund starten
15.01.2003 14:07:35
Bert
Um diesen Befehl ausführen zu können muss aber Excel schon gestartet sein. Oder sehe ich das jetzt falsch??
Re: Excel im Hintergrund starten
15.01.2003 18:17:07
ivan
hi nochmal
gib den code in die arbeitsmappe in exel rein speichere excel. und schließe excel.wenn du dann excel mit deiner batch datei aufrufst brauchst dort nur die normalen parameter für den excel aufruf eingeben.excel startet dann mit den einstellungen die du vorher festgelegt hast ganz automatisch!
JA JA SO EINFACH IST DAS
webmaster ivan
Anzeige
Re: Excel im Hintergrund starten
16.01.2003 08:33:16
Bert
Hallo Ivan,

nun, so einfach ist das aber doch nicht. Ich habe deinen Vorschlag ausprobiert. Wenn ich die Batdatei starte, startet Excel kurz und schliesst sich dann wieder. Ich habe 'Application.Visible = False' im auto_open-Makro als erste Zeile eingefügt. Das ist, soweit ich weiss, die früheste Stelle wo ich das in Excel angeben kann.

Gruß
Bert

Re: Excel im Hintergrund starten
16.01.2003 09:24:16
ivan
hi bert
es ist doch einfach.du bist schon kurz vor dem ziel.

Private Sub Workbook_Open()
Application.Visible = False
UserForm1.Show 'hast du die userform erstellt?was soll sie tun
Call macroname 'oder brauchst du nur ein macro das etwas ausführt

Application.Visible = True
End Sub


du must dir irgend etwas einfallen lassen was excel tun soll während es im hintergrund ausgeblendet ist.ansonst frage ich mich warum du excel aufmachen möchtest???
ivan



Anzeige
Re: Excel im Hintergrund starten
16.01.2003 09:51:32
Bert
Hey Ivan,

Es tut mir leid, wenn ich mich etwas dusselig anstelle, aber ich bin nicht so versiert in Excel und Makros(VBA).
Ich starte mit der Bat-Datei(\\102.0.13.99\d_lzdb\programme\microsoft office\office10\excel.exe \\102.0.13.99\AutoMakro.xls) Excel mit der Datei Automakro.xls.
Diese Automakro.xls beinhaltet nur das Automakro. Und das soll folgendes tun:
1. öffnen einer anderen XLS-Datei
2. speichern des Inhaltes als CSV-Datei
3. schliessen von Excel
Soweit ich das kenne kann ich alle Aktivitäten nur ins Auto(start)makro packen. Oder wird das 'Private Sub Workbook_Open()
' als erstes verarbeitet?

Bert



Anzeige
Re: Excel im Hintergrund starten
16.01.2003 22:10:35
ivan
hi
ganz genau
Private Sub Workbook_Open()
ist die erste anlaufstelle
habe eine idee wie die du die wartezeit überbrücken kanst während deine batch datei im hintergrund speichert.
1.gehe in den entwicklungsmodus von excel mit alt+f11
2.klick das menü einfügen an und modul einfügen
3.klick auf das symbol wekzeugsammlung
4.klick auf in die nun geöffnete werzeugsammlung auf befehlsschaltfläche und erstelle sie auf der userform1
5.klick nun auf diese erstellte schaltfläche doppelt
6.kopiere nachstehenden code in das sich öffnende script

Private Sub CommandButton1_Click()
Application.Visible = True
Application.DisplayAlerts = False
Application.Quit
ThisWorkbook.Close savechanges:=False
End Sub

7.doppelklicke nun (links)auf Userform1
8.stell die größe der userform ein mit der maus ziehen so wie möchtest
9.und zu guter letzt doppelklick auf diese abeitsmappe
und nun der den nachstehenden code dort einfügen

Private Sub Workbook_Open()
Application.Visible = False
UserForm1.Show

End Sub

10.arbeitsmappe speichern und schließen fertig.
nun hast du excel so programmiert das es nur mit der userform1 startet.und die userform hat einen button zum beenden-
wenn du den anklickst wird anklickst wird alles ohne speichern geschlossen.vor allem wartet excel nun solange bis deine batsch alles erledigt hat.
versuches mal
webmaster ivan

Anzeige
Re: Excel im Hintergrund starten
18.01.2003 17:07:30
Bert
Hey Ivan,

ich habe deinen Vorschlag nochmals ausprobiert. Auf diese Weise komme ich aber nicht darum herum, dass Excel erst einmal geöffnet wird, dann wird das Userrom1 geladen und Excel selber wird wieder geschlossen. Das Userform1 wartet auf den Klick und wird dann ebenfalls geschlossen. Mein Ziel ist es aber, dass das Excelfenster nicht geöffnet wird und nur das Userform1 zu sehen ist. Ich glaube das geht, wenn überhaupt, nur mit einem Parameter beim Starten von Excel. Denn um alle Anweisungen innerhalb einer Arbeitsmappe ausführen zu können muss nun mal Excel erst gestartet werden und dann ist es schon sichtbar.

Bert

Anzeige
Re: Excel im Hintergrund starten
18.01.2003 19:16:59
ivan
hi
das war nur ein beispiel du kanst statt der userform auch ein macro aufrufen das dir die datei in csv datei abspeichert !!!
statt uerform1.show schreibst du Call macro1.
lösche den comandbutton und die userform1 wieder raus und zeichne mit dem macro editor ein macro auf was excel alles tun soll.speichere das macro und gib den code in die diese arbeitsmappe fertig!!
DANN KANN MAN DEN VORGANG UND EXCEL NICHT SEHEN.

Private Sub Workbook_Open()
Application.Visible = False
Call macro1
Application.Visible = True
End Sub

IVAN


Re: Excel im Hintergrund starten
19.01.2003 19:35:41
Bert
Hey Ivan,

also irgendwas muss ich anders machen als Du mir sagst. Es erscheint immer noch, wenn auch nur kurz das Excelfenster.


Bert

Anzeige
Re: Excel im Hintergrund starten
19.01.2003 20:22:22
ivan
hi
ich habe was ausgegraben kopiere alles in ein normales modul
speichern und alles schließen

Dim CdbList()
Dim Status_StandardBar As Boolean
Dim Status_FormulaBar As Boolean
Dim Status_HorScroll As Boolean
Dim Status_StatusBar As Boolean
Dim Status_VerScroll As Boolean
Dim Status_Gridlines As Boolean
Dim Status_Headings As Boolean
Dim Status_WorkbookTabs As Boolean
Dim xCn%
Dim xCdbList()


Sub Auto_Open()

Dim Cdb As CommandBar
''.....
Dim bar
For Each bar In Application.CommandBars
bar.Enabled = False
Next

Cn = 1
For Each Cdb In Application.CommandBars
If Cdb.Visible And Cdb.Type <> msoBarTypeMenuBar Then
ReDim Preserve CdbList(Cn)
CdbList(Cn) = Cdb.Name
Cn = Cn + 1
Cdb.Visible = False
End If
Next

With ActiveWindow
Status_HorScroll = .DisplayHorizontalScrollBar
If .DisplayHorizontalScrollBar = True Then .DisplayHorizontalScrollBar = False

Status_VerScroll = .DisplayVerticalScrollBar
If .DisplayVerticalScrollBar = True Then .DisplayVerticalScrollBar = False

Status_Gridlines = .DisplayGridlines
If .DisplayGridlines = True Then .DisplayGridlines = False

Status_Headings = .DisplayHeadings
If .DisplayHeadings = True Then .DisplayHeadings = False

Status_WorkbookTabs = .DisplayWorkbookTabs
If .DisplayWorkbookTabs = True Then .DisplayWorkbookTabs = False

End With

With Application
Status_StatusBar = .DisplayStatusBar
If .DisplayStatusBar = True Then .DisplayStatusBar = False

Status_FormulaBar = .DisplayFormulaBar
If .DisplayFormulaBar = True Then .DisplayFormulaBar = False
End With

CommandBars(1).Enabled = False
Application.DisplayFullScreen = False

End Sub

Sub Auto_Close()

Dim bar
For Each bar In Application.CommandBars
bar.Enabled = True
Next

Dim Cdb As CommandBar
Dim Ci%


For Ci = 1 To Cn - 1
Application.CommandBars(CdbList(Ci)).Visible = True
Next Ci

With ActiveWindow
.DisplayHeadings = Status_Headings
.DisplayHorizontalScrollBar = Status_HorScroll
.DisplayVerticalScrollBar = Status_VerScroll
.DisplayGridlines = Status_Gridlines
.DisplayWorkbookTabs = Status_WorkbookTabs
End With

With Application
.DisplayStatusBar = Status_StatusBar
.DisplayFormulaBar = Status_FormulaBar
End With

CommandBars(1).Enabled = True

'Dim Cdb As CommandBar

Cn = 1
For Each Cdb In Application.CommandBars
If Cdb.Visible And Cdb.Type <> msoBarTypeMenuBar Then
ReDim Preserve CdbList(Cn)
CdbList(Cn) = Cdb.Name
Cn = Cn + 1
Cdb.Visible = True
End If
Next

With ActiveWindow
Status_HorScroll = .DisplayHorizontalScrollBar
If .DisplayHorizontalScrollBar = False Then .DisplayHorizontalScrollBar = True

Status_VerScroll = .DisplayVerticalScrollBar
If .DisplayVerticalScrollBar = False Then .DisplayVerticalScrollBar = True

Status_Gridlines = .DisplayGridlines
If .DisplayGridlines = False Then .DisplayGridlines = True

Status_Headings = .DisplayHeadings
If .DisplayHeadings = False Then .DisplayHeadings = True

Status_WorkbookTabs = .DisplayWorkbookTabs
If .DisplayWorkbookTabs = Falsehen .DisplayWorkbookTabs= True

End With

With Application
Status_StatusBar = .DisplayStatusBar
If .DisplayStatusBar = False Then .DisplayStatusBar = True

Status_FormulaBar = .DisplayFormulaBar
If .DisplayFormulaBar = False Then .DisplayFormulaBar = True
End With

Application.CommandBars("Standard").Visible = True
Application.CommandBars("Formatting").Visible = True
Application.DisplayFullScreen = False

End Sub

damit wird alles ausgeblendendet und eingeblendet was excel so hat.
wenn du deine mappe nicht findest dann fang die prozedur mit
escape ab.danach führe das macro Sub auto_close aus.

viel spass
ivan


Anzeige

56 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige