Private Sub Workbook_Open()
Application.Visible = False
UserForm1.Show 'oder was auch immer ausgeführt werden soll
Application.Visible = True
End Sub
webmaster 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
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
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
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
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
Private Sub Workbook_Open()
Application.Visible = False
Call macro1
Application.Visible = True
End Sub
IVAN
also irgendwas muss ich anders machen als Du mir sagst. Es erscheint immer noch, wenn auch nur kurz das Excelfenster.
Bert
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