Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

Programmabsturz | Herbers Excel-Forum


Betrifft: Programmabsturz von: Gerd
Geschrieben am: 02.02.2010 14:30:46

Hallo liebe Excel-Freunde!

Ich bitte um Hilfe bei folgendem Problem (längerer Beitrag wegen eingefügter Code-Listings):

In einer UserForm habe ich zahlreiche Schaltflächen untergebracht, um für meine Arbeitsgsruppe den Zugriff auf immer wieder benötigte Excel- und Word-Vorlagen von einer zentralen Plattform aus zu ermöglichen.

Der Aufruf der einzelnen Vorlagen funktioniert zwar, doch stürtz Excel immer wieder mit einer Fehlermeldung ab ("Excel hat ein Problem festgestellt und muss neu gestartet werden!").

Beim Aufruf der "Menü"-Datei (xls) wird sofort folgender Code ausgeführt:

Private Sub Workbook_Activate()

Application.ActiveWindow.WindowState = xlMinimized

LSchB_FiHi.Show

End Sub
Der Code der einzelnen Schaltflächen in der UserForm "LSchB_FiHi" hat der Struktur nach folgenden Code:
Option Explicit

Private Sub ExcelVorlage_Click()

xlsPath = "Vorlage.xls"

Call Excel_Vorlage

End Sub

Private Sub WordVorlage_Click()

dokPath = "Vorlage.dot"

Call Word_Vorlage

End Sub

Private Sub schließen_Click()

Unload Me

Workbooks("Finanzhilfe.xls").Close True

End Sub
Die Routingen "Excel_Vorlage" und "Word_Vorlage" haben folgenden Code:
Sub Excel_Vorlage()

Unload LSchB_FiHi

Dim bExists As Boolean
Dim oWorkbook As Object
 
' Prüfen ob Datei bereits geöffnet ist
bExists = False
With Application
  For Each oWorkbook In .Workbooks
    If UCase$(oWorkbook.Name) = xlsPath Then
      ' Jetzt aktivieren
      Windows(oWorkbook.Name).Activate
      bExists = True
      Exit For
    End If
  Next
End With
 
' Mappe neu laden!
If Not bExists Then
  On Error Resume Next
  Workbooks.Open Filename:=xlsPath, ReadOnly:=False
  On Error GoTo 0
End If

End Sub

Sub Word_Vorlage()

Dim WdApp As Object
Dim wdDok As Object
Set WdApp = CreateObject("Word.Application")
WdApp.documents.Add dokPath
WdApp.Visible = True
WdApp.Activate
Set wdDok = Nothing
Set WdApp = Nothing

End Sub
Entdeckt irgendjemand "faulen" Code, der die Excel-Abstürze verursachen könnte?

Vielen Dank im Voraus

Gerd

  

Betrifft: AW: Programmabsturz von: Ramses
Geschrieben am: 02.02.2010 14:57:23

Hallo

Grundsätzlich auf den ersten Blick OK:
Geh doch mal im Einzeschritt durch und schau wo wann was passiert.
Allenfalls mal alle SP usw. installieren

Gruss Rainer


  

Betrifft: AW: Programmabsturz von: Gerd
Geschrieben am: 02.02.2010 15:18:02

Hallo Rainer!

Vielen Dank für Deine Nachricht. Mit Einzelschritt bin ich nicht weitergekommen. Der Debugger sagt nichts. Excel stürzt einfach nur ab.

Manchmal kann ich mehrere Formulare aufrufen, manchmal stürzt Excel schon beim ersten Aufruf ab. Ich habe es auch an einem anderen Arbeitsplatz ausprobiert mit demselben Ergebnis. Die SPs sind alle drauf. Die Rechner werden zentral von der IT-Abteilung immer auf dem aktuellsten Stand gehalten.

Bin echt ratlos...

Gerd


  

Betrifft: AW: Programmabsturz von: Gerd
Geschrieben am: 03.02.2010 07:11:18

Guten Morgen an alle!

Kann mir wirklich niemand einen Tipp zu meinem Problem geben?

Gerd


  

Betrifft: AW: Programmabsturz von: Gerd
Geschrieben am: 03.02.2010 07:11:26

Guten Morgen an alle!

Kann mir wirklich niemand einen Tipp zu meinem Problem geben?

Gerd


  

Betrifft: AW: Programmabsturz von: Luschi
Geschrieben am: 03.02.2010 09:50:46

Hallo Gerd,

werde mich mal an diesem Phänomen versuchen.

Ein logischer Fehler liegt in dieser Vba-Zeile:
If UCase$(oWorkbook.Name) = xlsPath Then
Dieser Vergleich ergibt immer False und damit ist auch bExists immer auf False gestellt.
Entweder man schreibt:
xlsPath = "VORLAGE.XLS"
oder
If UCase$(oWorkbook.Name) = UCase$(xlsPath) Then

Das ist aber nicht das eigentliche Problem.
Es wäre wichtig zu wissen, ob diese Excel-Abstürze auftreten, wenn gerade Excel-Vorlagen oder Winword-Vorlagen aufgerufen werden. Bei mir treten diese ominösen Fehler (mal Absturz, mal Vba-Fehler) nur auf im Zusammenhang mit Winword-Vorlagen auf.
Man öffnet von Excel aus Winword, schließt aber nicht in Excel dieses Programm sondern setzt nur die Objektvarible auf Nothing: Set WdApp = Nothing. Damit sollte laut Theorie alles ok sein.
Anders geht es ja auch nicht, da WdApp.Quit dem User keine Möglichkeit geben würde, den gerade geöffneten Brief zu speichern/ändern/drucken. Wenn der User dann Winword nicht vollständig beendet sondern nur den Brief schließt, habe ich beim Aufruf der nächsten Winword-Vorlage das beschriebene Problem.
Deshalb prüfe doch mal nach dem Excel-Absturz, ob Winword noch im Speicher vorhanden ist:
Tastenkombination Strg-Alt-Entf - Taskmanager - Prozesse: suche in Liste nach WINWORD.EXE
Mal sehen was bei Dir herauskommt.

Gruß von Luschi
aus klein-Paris


  

Betrifft: AW: Programmabsturz von: Gerd
Geschrieben am: 03.02.2010 10:10:59

Hallo Luschi!

Erst einmal vielen Dank dafür, dass Du mir helfen willst.

Die Excel-Abstürze treten immer nur beim Aufruf der Excel-Vorlagen auf (!!!). Beim Öffnen der Word-Vorlagen habe ich das Problem nicht.

Ist echt 'n Phänomen, denn einzeln aufgerufen funktionieren die Vorlagen.

Gruß
Gerd


  

Betrifft: AW: Programmabsturz von: Luschi
Geschrieben am: 03.02.2010 16:37:26

Hallo Gerd,

das macht mich nun doch ein bisschen ratlos. Hast Du Dir meinen 1. Teil (UCase) angesehen.
Auch dies würde ich anders machen:
Windows(oWorkbook.Name).Activate --> oWorkbook.Activate --> oWorkbook.Select

Vielleicht ist die Ursache auch darin zu sehen, daß die Excel-Application am Anfang minimiert wurde und dann eine Arbeitsmappe aktiviert wird ohne Excel selbst wieder sichtbar zu machen.

Rätsel über Rätsel. Auf alle Fälle würde ich ein paar 'On Error Resume Next' deaktivieren wie hier:
On Error Resume Next
Workbooks.Open Filename:=xlsPath, ReadOnly:=False

Viel Spaß beim Testen und

Gruß von Luschi
aus klein-Paris


  

Betrifft: AW: Programmabsturz von: Gerd
Geschrieben am: 08.02.2010 14:52:59

Hallo Luschi!

Möchte doch noch kurz den Thread abschießen.

Ich habe in einer der Vorlagen, die ich mit der zentralen Userform aufrufe, eine "Window"-Anweisung verändert. Auch habe ich Deinen Hinweise mit der UCase$-Anweisung angewandt.

Zumindest läuft es jetzt auf zwei Rechnern problemlos.

Noch einmal vielen Dank!

Gerd