Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1060to1064
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

Fehler bei worksheet.active abfangen

Fehler bei worksheet.active abfangen
18.03.2009 16:36:51
Jörg
Hallo,
ich habe ein Scipt in dem ich Sheets aus einer Datei importiere.
Nun möchte ich den Fehler abfangen , wenn das zu aktivierende Sheet nicht vorhanden
ist. In diesen Fehlerfall soll eine Meldung ausgegeben werden und die bereit geöffnete
Datei geschlossen werden.
Da ich aber schon eine On error Goto im Script habe , weiss ich nicht wie ich die Beiden Fehler von einander
trennen kann.

Public Sub Import_PP4000()
Dim oBook As Excel.Workbook
Dim FileName As String
Dim Aktivfile As String
Dim Openfile As String
Dim oBcb As Object
Dim fs As Object
Dim fls As Object
Dim fldr As Object
Dim sfldr As Object
Dim anz As Byte
Dim strDateiName As String, StrPfad As String
Dim fbfile As String
'Abfrage Tabellen existent
Dim objWks As Worksheet
Dim blnFound As Boolean
Dim pfadfound As Boolean
Dim strSuchbegriff As String
Application.ScreenUpdating = False
On Error GoTo ErrorImportPP4000
For Each oBcb In UserForm1.MultiPage1.Pages(0).Frame1.Controls
fbfile = oBcb.Caption
Set fs = CreateObject("Scripting.FileSystemObject")
pfadfound = False
If InStr(fbfile, "PP") Then
If fs.folderexists("Q:\PP\") = True Then
StrPfad = "Q:\PP\"
pfadfound = True
End If
If fs.folderexists("P:\PP\") = True And pfadfound = False Then
StrPfad = "P:\PP\"
pfadfound = True
End If
If pfadfound = False Then
StrPfad = ThisWorkbook.Path & "\FB_IBN\"
End If
If fs.folderexists(StrPfad) = False Then MsgBox "Verzeichnis für Vorlage PP  _
nicht gefunden": Exit Sub
Set fldr = fs.getfolder(StrPfad) 'Quellrechner
Set sfldr = fldr.subfolders
Set fls = fldr.Files
If sfldr.Count = 0 And fls.Count = 0 Then
MsgBox "Verzeichnis für Vorlage PP ist leer"
Exit Sub
End If 'sfdl
End If 'fs.folderexist
'            End If 'fs.folderexist q
If InStr(fbfile, "FB") Then
pfadfound = False
If fs.folderexists("Q:\FB\") = True Then
StrPfad = "Q:\FB\"
pfadfound = True
End If
If fs.folderexists("P:\FB\") = True And pfadfound = False Then
StrPfad = "P:\FB\"
pfadfound = True
End If
If pfadfound = False Then
StrPfad = ThisWorkbook.Path & "\FB_IBN\"
End If
If fs.folderexists(StrPfad) = False Then MsgBox "Verzeichnis für Vorlage FB  _
nicht gefunden": Exit Sub
Set fldr = fs.getfolder(StrPfad) 'Quellrechner
Set sfldr = fldr.subfolders
Set fls = fldr.Files
If sfldr.Count = 0 And fls.Count = 0 Then
MsgBox "Verzeichnis für Vorlage FB ist leer"
Exit Sub
End If 'sfldr
End If 'fs.folderexist
'        End If 'fs.folderexist fb_IBN
If InStr(fbfile, "FB") And oBcb.Value = True Or InStr(fbfile, "PP") And oBcb.Value = True Then
'If ObCb.Value = True Then
For Each objWks In Worksheets
blnFound = False
If objWks.Name = fbfile Then blnFound = True: Exit For
Next
If Not blnFound Then 'wenn die Tabelle nicht vorhanden, dann weitermachen
strDateiName = StrPfad & fbfile & ".xls"
Openfile = strDateiName
Aktivfile = ActiveWorkbook.Name
anz = ActiveWorkbook.Sheets.Count
Workbooks.Open FileName:=Openfile
Workbooks(fbfile & ".xls").Worksheets(fbfile).Activate
ActiveSheet.Copy After:=Workbooks(Aktivfile).Sheets(anz)
Workbooks(Aktivfile).Worksheets(fbfile).Activate
ActiveSheet.Name = fbfile
Workbooks(fbfile & ".xls").Close savechanges:=False 'da nicht gespeichert  _
werden soll
'Windows(activefie).Activate
Worksheets(fbfile).Activate
Application.ScreenUpdating = True
End If 'blnfound
End If 'objWks
Next 'obcb
Call PP4000change
ErrorImportPP4000_Exit:
Exit Sub
ErrorImportPP4000:
ErrMess "Import_PP4000", Err.Description
Resume ErrorImportPP4000_Exit
Call DisplayStandardMenu
Application.ScreenUpdating = True
End Sub


Für Tipps bin ich wie immer äußerst Dankbar.
Gruß Jörg

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler bei worksheet.active abfangen
18.03.2009 18:03:26
Luschi
Hallo Jörg,
beim zugriff auf meherere Arbeitsmappen (Exceldateien) bzw. Arbeitsblättern (Exceltabellen) sollte man mir
Objektvariablen arbeiten, um nicht den Überblick zu verlieren
Durch folgendes Konstrukt wird versucht eine Tabelle anzusprechen
On Error Resume Next
Set ws1 = Workbooks(fbfile & ".xls").Worksheets(fbfile)
On Error GoTo 0
Existiert die Tabelle in der AM nicht, dann verhindert die On Error-Zeile eine Fehlermeldung und die
Objektvariable 'ws1' hat den Wert 'Nothing'; d.h., ws1 hat keinen Zugriff auf die Tabelle, die man zuweisen wollte. Und diesen Zustand kann man abfragen.
Deshalb so:
'Definition der Objektvariablen
Dim wb1 As Workbook, ws1 As Worksheet
'der weitere Vba-Code
'.....................................
'Öffnen der Arbeitsmappe
Set wb1 = Workbooks.Open(Filename:=Openfile)
On Error Resume Next
Set ws1 = Workbooks(fbfile & ".xls").Worksheets(fbfile)
On Error GoTo 0
If Not (ws1 Is Nothing) Then
ActiveSheet.Copy After:=Workbooks(Aktivfile).Sheets(anz)
Workbooks(Aktivfile).Worksheets(fbfile).Activate
ActiveSheet.Name = fbfile
End If
Workbooks(fbfile & ".xls").Close savechanges:=False
'Windows(activefie).Activate
Worksheets(fbfile).Activate
Gruß von Luschi
aus klein-Paris
PS: Sollte eine andere Tabelle nicht existieren, dann mußt Du in gleicher Weise den hebel dort ansetzen.
Anzeige
AW: Fehler bei worksheet.active abfangen
19.03.2009 10:09:12
Jörg
Guten Morgen ,
danke dir für die Erläuterungen.
Ich habe den Code wie folgt geändert, da ich noch das DAtei öffnen selber abfragen
wollte.

If Dir(Openfile) = "" Then GoTo filenotfound 'nicht vorhanden
Set wb1 = Workbooks.Open(FileName:=Openfile)
On Error Resume Next
Set ws1 = Workbooks(fbfile & ".xls").Worksheets(fbfile)
On Error GoTo 0
If Not (ws1 Is Nothing) Then
ActiveSheet.Copy After:=Workbooks(Aktivfile).Sheets(anz)
Workbooks(Aktivfile).Worksheets(fbfile).Activate
ActiveSheet.Name = fbfile
End If
Workbooks(fbfile & ".xls").Close savechanges:=False
filenotfound:
Windows(Aktivfile).Activate


Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige