Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
548to552
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
548to552
548to552
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Fehlermeldung abfangen

Fehlermeldung abfangen
16.01.2005 23:39:40
Jens
Hallo zusammen
Wenn ich beim öffnen eines Programmes aus Excel heraus eine Fehlermeldung bekomme, Laufzeitfehler „53“ oder „76“, habe ich diese mit einer Einheitsfehlermeldung abgefangen. Dies mittels einer UserForm. (Initialisierungsfehler.Show)
Ich benutze dafür folgenden Code:

Sub Zeiteingabe()
Dim stAppName As String
stAppName = "C:\Programme\Microsoft Office\Office\excel.exe G:\Vorlagen\Vorl_ Zeiteingabe.xls"
On Error Resume Next
Call Shell(stAppName, 3)
If Err.Number <> 0 Then
Initialisierungsfehler.Show
End If
End Sub

Ich öffne also erst Excel und dann die Datei.
Möchte ich die Datei direkt in Excel öffnen, bekomme ich bei fehlerhaften Pfad zwar auch einen Laufzeitfehler angezeigt mit Nummer „1004“, aber ich bekomme diese nicht wieder mit meiner eigenen UserForm abgefangen.
Hier der andere Code:

Sub Zeiteingabe()
ChDir " G:\Vorlagen"
Workbooks.Open FileName:= _
" G:\Vorlagen\Vorl_ Zeiteingabe.xls"
End Sub

Wie muss ich hier den Laufzeitfehler abfangen.
Danke für jede Hilfe
Gruß Jens

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

Betreff
Datum
Anwender
Anzeige
AW: Fehlermeldung abfangen
17.01.2005 00:11:49
Matthias
Hallo Jens,
ich verstehe nicht ganz...
hast du das schon versucht?
Sub Zeiteingabe()
On Error Resume Next
ChDir " G:\Vorlagen"
Workbooks.Open Filename:= _
" G:\Vorlagen\Vorl_ Zeiteingabe.xls"
If Err.Number <> 0 Then
Initialisierungsfehler.Show
End If
End Sub
Übrigens sehe ich den Sinn des Befehls ChDir " G:\Vorlagen" nicht.
Gruß Matthias
OT chdir chdrive
Reinhard
Hi Jens,
was soll denn das Leerzeichen vor dem G?
unabhängig von deiner Anfrage würde ich das so machen:
Chdrive "G"
chdir "G\...."
Gruß
Reinhard
AW: OT chdir chdrive
17.01.2005 12:08:28
Jens
Danke Euch beiden
Der Code funktioniert jetzt und das ChDir habe ich ganz entfernt. Ich hatte das mal mit dem Makrorekorder aufgezeichnet und so belassen.
Der Code sieht jetzt so aus.

Sub Zeiteingabe()
On Error Resume Next
Workbooks.Open FileName:= _
" G:\Vorlagen\Vorl_ Zeiteingabe.xls"
If Err.Number <> 0 Then
Initialisierungsfehler.Show
End If
End Sub

Danke noch mal.
Gruß Jens
Anzeige
Fehlermeldung abfangen
17.01.2005 12:22:52
Jens
Abschliessend aber doch noch eine Frage.
Und zwar fange ich mit dem folgenden Code die Fehlermeldung ab, wenn z.b. das Programm nicht vorhanden ist. Ich unterscheide da nur zwischen reinen Programmstart und Programmstart mit einer Datei.
Reiner Programmstart lautet:

Sub AlleUser_E_Mail_Programm_öffnen()
Dim stAppName As String
stAppName = "C:\Programme\Microsoft Outlook 2003\Office11\OUTLOOK.EXE"
On Error Resume Next
Call Shell(stAppName, 3)
If Err.Number <> 0 Then
Initialisierungsfehler.Show
End If
End Sub

Programmstart mit Datei lautet:

Sub Vorlage_Meldung_öffnen()
Dim stAppName As String
stAppName = "C:\Programme\Microsoft Office\Office\winword.exe G:\Vorlagen\Meldungen\Vorl_Meldung.doc"
On Error Resume Next
Call Shell(stAppName, 3)
If Err.Number <> 0 Then
Initialisierungsfehler.Show
End If
End Sub

Beim zweiten Code wird allerdings auch nur die UserForm Initialisierungsfehler ausgegeben. Also wenn das Programm nicht da ist.
Ist aber die Die Datei nicht vorhanden, bekomme ich nur die ganz normale Excelfehlermeldung angezeigt: Datei nicht vorhanden, überprüfen sie den Pfad usw..
Wie kann ich es aber erreichen dass in dem zweiten Code meine Userform Initialisierungsfehler in beiden Fällen angezeigt wird. Also wenn entweder das Programm nicht da ist oder die Datei fehlt.
Vielen Dank für Eure Hilfe.
Gruß Jens
Anzeige
AW: Fehlermeldung abfangen
18.01.2005 00:50:29
Matthias
Hallo Jens,
mit Dir("Dateiname") kannst du prüfen, ob eine Datei existiert.
Wenn ein Leerstring zurückkommt, dann exisiert die Datei nicht.
also:
Sub Vorlage_Meldung_öffnen()
Dim stAppName As String
Dim fn As String
stAppName = "C:\Programme\Microsoft Office\Office\winword.exe"
fn = "G:\Vorlagen\Meldungen\Vorl_Meldung.doc"
'Vorhandensein der Dateien prüfen
If Dir(fn) = "" Or Dir(stAppName) = "" Then
Initialisierungsfehler.Show
Exit Sub
End If
On Error Resume Next
Call Shell(stAppName & " " & fn, 3)
If Err.Number <> 0 Then
Initialisierungsfehler.Show
End If
End Sub
Damit könnte man den On Error-Befehl eigentlich ganz weglassen, aber wer weiß, was beim Shell-Befehl so alles passieren kann... ;-)
----------------------------------------------------------------------
Übrigens würde ich die Datei anders starten:
Option Explicit
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Sub test()
Dim fn As String
fn = "G:\Vorlagen\Meldungen\Vorl_Meldung.doc"
If Dir(fn) <> "" Then
ShellExecute Application.hwnd, "Open", fn, _
vbNullString, vbNullString, vbNormalFocus
Else
Initialisierungsfehler.Show
End If
End Sub
Damit wird jede Datei mit ihrerStandardanwendung geöffnet, und man muss auch nicht wissen, wo genau sich die Datei WINWORD.EXE befindet.
Gruß Matthias
Anzeige
AW: Fehlermeldung abfangen
18.01.2005 22:05:10
Jens
Hallo Matthias
Danke für Deinen Hilfen, beides funktioniert.
Gruß Jens

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige