Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1140to1144
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
Inhaltsverzeichnis

Auto Open -> Excel/Datei wieder Schliessen

Auto Open -> Excel/Datei wieder Schliessen
Matthias
Hallo zusammen
Wenn ich meine Exceldatei öffne, blende ich das eigentliche Excel aus, und zeige ein Form an.
ActiveWorkbook.Windows(1).Visible = False
form_Öffnen.Show
~f~
In diesem Form wählt der Kunde ob er eine Datei öffnen möchte oder eine neue Erstellen. Wählt er "Neu", wird die "eigentliche Exceldatei" geöffnet; diese besteht aus drei verschiedenen Fenster die positioniert werden und jeweils Formularfelder beinhalten.
Da dieses "Fensterzusammenwürfeln" relativ komplex ist, hat Excel nun so seine Mühen, die erste, falls bereits eine andere Exce-Datei geöffnet ist.
Ich habe deshalb versucht, das Öffnen meines Excel wie folgt zu verhindern:
~f~
Sub Auto_Open()
If Workbooks.Count > 1 Then
MsgBox ("Datei kann nicht geöffnet werden." & vbNewLine & vbNewLine & "Bitte alle offenen
Excel-Dateien schliessen.")
ThisWorkbook.Close
Exit Sub
Leider erzielt dies jedoch nicht den gewünschten Effekt.
Habt ihr eine Idee wie ich das ohne Absturz erreichen könnte?
Vielen Dank und einen schönen Tag.
Matthias

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Auto Open -> Excel/Datei wieder Schliessen
24.02.2010 11:31:31
xr8k2
Hallo Matthias,
so wie ich das sehe müsstest du das Excelöffen nicht in einem Auto_Open sondern sondern direkt beim "Neu" wählen in der Useform verhindern.
Aber zeig doch mal deinen Code vom Fensterzusammenwürfeln. Kann doch nicht so schwierig sein nur die Fenster der gewünschten Arbeitsmappe zu finden;-)
Gruß,
xr8k2
AW: Auto Open -> Excel/Datei wieder Schliessen
24.02.2010 12:04:53
Matthias
Hallo xr8k2
Et voilà, hier ist das "Öffnen-Prozedere":
Option Explicit
Dim FSO As FileSystemObject
<pre>Sub Auto_Open()
Dim Anz
If Workbooks.Count > 1 Then
MsgBox ("Datei kann nicht geöffnet werden." & vbNewLine & vbNewLine & "Bitte alle offenen Excel-Dateien schliessen.")
ThisWorkbook.Close
Exit Sub
End If
ActiveWorkbook.Windows(1).Visible = False
Application.ScreenUpdating = False
form_Öffnen.Show
End Sub</pre>
Auf diesem Form kannst du z.B. mit dem Button "Neu" eine neue Datei beginnen, Code:
Sub Fenster_einrichten(Direkt)
Dim WSheet As Worksheet
Dim Max, Blatt, Name, i
On Error GoTo Error
Select Case Direkt
Case "cmd_Öffnen_Neu"
Windows(1).Visible = True
Unload form_Öffnen
End Select
'   -------------------------------------------------------------------------------------------- _
'   Aktuelles Fenster umbenennen
'   -------------------------------------------------------------------------------------------- _
ActiveWindow.Caption = "Grunddaten"
'   -------------------------------------------------------------------------------------------- _
'   Einstellungen am aktiven Fenster1 (Grunddaten)
'   -------------------------------------------------------------------------------------------- _
With ActiveWindow
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.DisplayWorkbookTabs = False
End With
Sheets("Grund").Select
Range("Nummer_führend").Select
'   -------------------------------------------------------------------------------------------- _
'   Neues Fenster öffnen und diverse Einstellungen am aktiven Fenster2
'   -------------------------------------------------------------------------------------------- _
Start:
ActiveWindow.NewWindow
ActiveWindow.Caption = "Übersicht"
With ActiveWindow
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.DisplayWorkbookTabs = False
End With
'   -------------------------------------------------------------------------------------------- _
'   Neues Fenster öffnen und diverse Einstellungen am aktiven Fenster3
'   -------------------------------------------------------------------------------------------- _
ActiveWindow.NewWindow
ActiveWindow.Caption = "Chronologie"
With ActiveWindow
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.DisplayWorkbookTabs = False
End With
'   -------------------------------------------------------------------------------------------- _
'   Alle Fenster vertikal anordnen, positionieren und am Schluss fixieren
'   -------------------------------------------------------------------------------------------- _
ActiveWorkbook.Windows.Arrange ArrangeStyle:=xlVertical
Windows("Grunddaten").Activate
ActiveWindow.Top = 0
ActiveWindow.Left = 0
ActiveWindow.Width = 313
ActiveWindow.Height = 565
Windows("Übersicht").Activate
ActiveWindow.Top = 0
ActiveWindow.Left = 306
ActiveWindow.Width = 658
ActiveWindow.Height = 190
Windows("Chronologie").Activate
ActiveWindow.Top = 183
ActiveWindow.Left = 306
ActiveWindow.Width = 658
ActiveWindow.Height = 382
'   -------------------------------------------------------------------------------------------- _
'   Alle notwendigen Zellen zum Überschreiben freigeben
'   -------------------------------------------------------------------------------------------- _
'Zellen freigeben
Workbooks("Tool.xlsm").Activate
Worksheets("Code").Activate
Range("daten_tabelle").Cells(1, 1).Select
Range(Selection, Selection.End(xlDown)).Select
Max = Selection.Rows.Count
For i = 1 To Max
Blatt = Workbooks("Tool.xlsm").Worksheets("Code").Range("daten_tabelle").Cells(i, 1). _
Value
Name = Workbooks("Tool.xlsm").Worksheets("Code").Range("daten_tabelle").Cells(i, 2). _
Value
Workbooks("Tool.xlsm").Worksheets(Blatt).Range(Name).Locked = False
Next i
'Namen freigeben
Workbooks("Tool.xlsm").Worksheets("Code").Range("daten_tabelle").Locked = False
'   -------------------------------------------------------------------------------------------- _
'   Alle Fenster und Blätter schützen
'   -------------------------------------------------------------------------------------------- _
ActiveWorkbook.Protect Structure:=True, Windows:=True
For Each WSheet In Worksheets
If WSheet.Name  "Code" Then
WSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowInsertingHyperlinks:=True
WSheet.EnableSelection = xlUnlockedCells
End If
Next WSheet
'   -------------------------------------------------------------------------------------------- _
'   "Start-Zelle" anwählen
'   -------------------------------------------------------------------------------------------- _
Windows("Grunddaten").Activate
Worksheets("Grund").Activate
Range("E12").Select
Exit Sub
Error:
MsgBox ("Es ist ein Fehler aufgetreten." & vbNewLine & vbNewLine & _
"Hinweis:" & vbNewLine & "F001")
GoTo Start
End Sub

Anzeige
AW: Auto Open -> Excel/Datei wieder Schliessen
24.02.2010 12:38:13
xr8k2
Hallo Matthias,
ich seh in deinem Code nix, wo "eine neue Datei" begonnen wird. Deswegen steige ich wohl auch nicht so ganz hinter das eigentliche Problem. Was genau funktioniert denn nicht oder besser gesagt, was sollte denn wo anders funktionieren?
Gruß,
xr8k2
AW: Auto Open -> Excel/Datei wieder Schliessen
24.02.2010 13:09:29
Matthias
Hallo xr8k2
Indem ich meine Datei im Excel öffne, öffne ich eine Art "Template". D.h. ein Worksheet mit mehreren Blättern. Dies alles "blende ich aus" und zeige am Anfang nur ein FORM. In diesem Form kann der Kunde wählen ob er eine bestehende "Datei" einlesen will oder eine neue "Datei" anlegen. Wenn er neu wählt, erstelle ich aus jedem Blatt ein Window (Grunddaten, Übersicht, Chronologie) und der Kunde kann sein alle Felder schön ausfüllen und später den Inhalt abspeichern. Das "Template" wird davon nicht berührt.
Das Problem ergibt sich jetzt bei dieser Window-Erstellung. Diese funktioniert nicht, wenn bereits eine Excel-Datei vorher geöffnet wurde. Dann weiss Excel offensichtlich nicht, welches Window es ein/ausblenden und/oder erstellen soll ...
Gruss
Matthias
Anzeige
AW: Auto Open -> Excel/Datei wieder Schliessen
25.02.2010 09:06:24
xr8k2
Hallo Matthias,
ich hab mal in deinem Code ein wenig in den Zeilen für die Fenstererstellung und Positionierung drinrumgeschustert. Schau´s dir mal an ... m.E. dürfte es so kein Problem mit anderen geöffneten Mappen geben.

Sub Fenster_einrichten(Direkt)
Dim WSheet As Worksheet
Dim Max, Blatt, Name, i
Dim Grunddaten As Window, Uebersicht As Window, Chronologie As Window
On Error GoTo Error
Select Case Direkt
Case "cmd_Öffnen_Neu"
ThisWorkbook.Windows(1).Visible = True
Unload form_ÖFFNEN
End Select
'   ------------------------------------------------------------------------------------------ _
-- _
'   Fenster erstellen und anordnen
'   ------------------------------------------------------------------------------------------ _
-- _
Set Grunddaten = ThisWorkbook.Windows(1)
Set Uebersicht = Grunddaten.NewWindow
Set Chronologie = Grunddaten.NewWindow
ThisWorkbook.Windows.Arrange ArrangeStyle:=xlVertical
'   ------------------------------------------------------------------------------------------ _
-- _
'   Einstellungen am Fenster (Grunddaten)
'   ------------------------------------------------------------------------------------------ _
-- _
With Grunddaten
.Caption = "Grunddaten"
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.DisplayWorkbookTabs = False
.Top = 0
.Left = 0
.Width = 313
.Height = 565
End With
'   ------------------------------------------------------------------------------------------ _
-- _
'   Einstellungen am Fenster (Übersicht)
'   ------------------------------------------------------------------------------------------ _
-- _
With Uebersicht
.Caption = "Übersicht"
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.DisplayWorkbookTabs = False
.Top = 0
.Left = 306
.Width = 658
.Height = 190
End With
'   ------------------------------------------------------------------------------------------ _
-- _
'   Einstellungen am Fenster (Chronologie)
'   ------------------------------------------------------------------------------------------ _
-- _
With Chronologie
.Caption = "Chronologie"
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.DisplayWorkbookTabs = False
.Top = 183
.Left = 306
.Width = 658
.Height = 382
End With
'   ------------------------------------------------------------------------------------------ _
-- _
'   Alle notwendigen Zellen zum Überschreiben freigeben
'   ------------------------------------------------------------------------------------------ _
-- _
'Zellen freigeben
Workbooks("Tool.xlsm").Activate
Worksheets("Code").Activate
Range("daten_tabelle").Cells(1, 1).Select
Range(Selection, Selection.End(xlDown)).Select
Max = Selection.Rows.Count
For i = 1 To Max
Blatt = Workbooks("Tool.xlsm").Worksheets("Code").Range("daten_tabelle").Cells(i, 1).  _
_
Value
Name = Workbooks("Tool.xlsm").Worksheets("Code").Range("daten_tabelle").Cells(i, 2).  _
_
Value
Workbooks("Tool.xlsm").Worksheets(Blatt).Range(Name).Locked = False
Next i
'Namen freigeben
Workbooks("Tool.xlsm").Worksheets("Code").Range("daten_tabelle").Locked = False
'   ------------------------------------------------------------------------------------------ _
-- _
'   Alle Fenster und Blätter schützen
'   ------------------------------------------------------------------------------------------ _
-- _
Thisworbook.Protect Structure:=True, Windows:=True
For Each WSheet In Thisworbook.Worksheets
If WSheet.Name  "Code" Then
WSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowInsertingHyperlinks:=True
WSheet.EnableSelection = xlUnlockedCells
End If
Next WSheet
'   ------------------------------------------------------------------------------------------ _
-- _
'   "Start-Zelle" anwählen
'   ------------------------------------------------------------------------------------------ _
-- _
Grunddaten.Activate
Worksheets("Grund").Activate
Range("E12").Select
Exit Sub
Error:
MsgBox ("Es ist ein Fehler aufgetreten." & vbNewLine & vbNewLine & _
"Hinweis:" & vbNewLine & "F001")
End Sub
Gruß,
xr8k2
PS: Ach ja ... ich arbeite mit Excel2003 wie sich das in 2007 verhält kann ich leider nicht testen.
Anzeige
AW: Auto Open -> Excel/Datei wieder Schliessen
25.02.2010 10:07:09
Matthias
Hey xr8k2
Damit hab ich echt was anfangen können! Herzlichen Dank dafür!!
LG
Matthias

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige