Excel2007: Absturz von Workbooks.Open

06/09/2009 - 11:59 von TomTau | Report spam
Hallo,

hier mein Code beim Öffnen einer Excel2007-Mappe:

Private Sub Workbook_Open()
txtVersion_XLS = "B" 'Version der Mappe
Workbooks.Open ActiveWorkbook.Path & "\Dienstplan_Tool_VBA.xla"
Application.Run "'" & ActiveWorkbook.Path &
"\Dienstplan_Tool_VBA.xla'!Versionsuebergabe", txtVersion_XLS 'für
XLA-Mappe zur Anzeige
End Sub

Dieser Code làuft in Excel2003 einwandfrei!
Auch in Excel2007 làuft er ohne Probleme, vorausgesetzt, man wechselt beim
Start von Excel nicht zufàllig in ein anderes Programm. Dann stürzt
Excel2007 ab (Button in der Taskleiste blinkt) und es geht nichts mehr.
Auch andere haben das gleiche Problem (egal ob unter Vista oder WindowsXP).
Also, nochmals genauer:
Starte ich Excel2007 und lasse den Computer in Ruhe, làuft der Code.
Starte ich Excel2007 und rufe ich wàhrend des Startes z.B. den
InternetExplorer oder Arbeitsplatz auf, stürzt Excel ab.

Manchmal ist es mir gelungen beim Schließen über den Taskmanager noch die
Err.Number zu erfahren: 50290

Hat jemand eine Idee, wie man das vermeiden kann?

Besten Dank für Eure Hilfe
TomTau
 

Lesen sie die antworten

#1 Andreas Killer
07/09/2009 - 08:56 | Warnen spam
TomTau schrieb:

Dieser Code làuft in Excel2003 einwandfrei!
Auch in Excel2007 làuft er ohne Probleme, vorausgesetzt, man wechselt
beim Start von Excel nicht zufàllig in ein anderes Programm. Dann stürzt
Excel2007 ab (Button in der Taskleiste blinkt) und es geht nichts mehr.


Ich habe mal ein wenig gegoogled und eine japanische Seite gefunden. :-))
http://support.microsoft.com/defaul...;ja;820595

Nun ja, einen englischen Text habe ich auch noch gefunden und ich
denke der wird Dein Problem erklàren.
http://www.pcreview.co.uk/forums/thread-957374.php

Andreas.

The run-time error 50290 could occur when executing an Excel macr
created by Excel 2000 or an earlier version on Excel 2002. This i
because of a specification change of automation processing in Exce
2002.

When an automation related method is called, or when an automatio
related property is set, Excel 2002, as an automation server, firs
checks whether Excel is doing another processing such as handling dat
input by user. In case of a program that handles some events durin
communication with an external component such as ActiveX Control, Exce
can sometimes be unavailable temporarily. If automation communicatio
is requested at this timing, Excel will return this run-time error.

Solution is to check the Ready property to run your code only whe
Excel is ready for automation communication. This property is newl
available with Excel 2002. Here's a sample program on how to use th
Ready property.

'When Excel version is 2002 or later
If Val(Application.Version) >= 10 Then

'Check the application status to see if it is available fo
processing.

If Application.Ready = True Then
<Describe what you want to do here>
End If

'When Excel version is 2000 or earlier, continue the processing
Else
<Describe what you want to do here>
End If

Note 1: There is no way to know at what timing the Ready property ca
become false. When you run a program that makes some events happe
during communication with an external component, it is recommended tha
you add a statement to make sure the Ready property is true.
Note 2: The sample program above will not do anything when the Read
property is false. If you want to force changing the value from fals
to true, you need to add additional codes doing so, such as sending a
Esc key by the Sendkeys statement.

Ähnliche fragen