Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
920to924
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
920to924
920to924
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wenn Ordner leer Mappe schliessen

Wenn Ordner leer Mappe schliessen
06.11.2007 08:33:00
volker
Hallo Leute,
im folgenden makro werden Daten aus Mappen eines bestimmten Ordners ausgelesen.
Kann mir jemand das makro so erweitern, dass das makro abgebrochen wird und das Workbook wieder geschlossen wird wenn in dem Ordner keine Dateien zur Verfügung stehen?
Das wäre toll, Vielen Dank Gruss volker

Sub auto_open()
'Zeileneinlesen()
If Cells(2, 5) = 0 Then
Dim oFS As Object, oFLDR As Object, oFILE As Object
Dim lRow As Long
Dim wkbMy As Workbook, wsMy As Worksheet, lngZeile As Long, lngLetzte As Long
Application.ScreenUpdating = False
'Application.DisplayAlerts = False
Set oFS = CreateObject("scripting.filesystemobject")
lRow = 2
Set oFLDR = oFS.getfolder("\\Server04\av\SharePoint_Beschlagliste\Pulk")
For Each oFILE In oFLDR.Files
If oFILE Like "*.xls" Or oFILE Like "*.xlsm" Or oFILE Like "*.xlsx" Then
lRow = lRow
Set wkbMy = Workbooks.Open(oFILE)
For Each wsMy In wkbMy.Worksheets
If wsMy.Name Like "BL_*" Then
Dim wsMyZeile As Long, wsMyletzte As Long
wsMyletzte = wsMy.Cells(Rows.Count, 1).End(xlUp).Row
For wsMyZeile = 5 To wsMyletzte
If wsMy.Cells(wsMyZeile, 1)  "" Then
wsMy.Range("A" & wsMyZeile & ":B" & wsMyZeile).Copy
ThisWorkbook.Worksheets(1).Cells(lRow, 5).PasteSpecial Paste:= _
xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
wsMy.Range("G" & wsMyZeile & ":N" & wsMyZeile).Copy
ThisWorkbook.Worksheets(1).Cells(lRow, 7).PasteSpecial Paste:= _
xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
wsMy.Range("AA" & wsMyZeile & ":AD" & wsMyZeile).Copy
ThisWorkbook.Worksheets(1).Cells(lRow, 1).PasteSpecial Paste:= _
xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
wsMy.Range("AE" & wsMyZeile & ":AF" & wsMyZeile).Copy
ThisWorkbook.Worksheets(1).Cells(lRow, 13).PasteSpecial Paste:= _
xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
lRow = lRow + 1
End If
Next wsMyZeile
End If
Next
wkbMy.Close False
''Kill wkbMy ' Befehl für das löschen der Datei
End If
Next
Speicher = "SharePoint_Beschlagliste"
Pfad = "\\Server04\av\SharePoint_Beschlagliste"
DName = Speicher
Dateiname = Pfad & "\" & DName & "_" & Date & ".xls"
ThisWorkbook.SaveAs Filename:=Dateiname
End If
Application.ScreenUpdating = True
'Application.DisplayAlerts = True
End Sub


5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn Ordner leer Mappe schliessen
06.11.2007 11:19:00
Thorsten
Hallo,
ich hab mnir deinen code nicht angeschaut, aber wenn du mit einer Schleife über alle Daten läufst, soll dein Projekt am Ende geschlossen werden?
such mal in Excel nach dem Close Befehlt. die syntax hab ich leider nciht im Kopf.
grüsse
Thorsten

AW: Wenn Ordner leer Mappe schliessen
06.11.2007 12:20:47
volker
Danke Thorsten,
hab die Lösung von Tino erhalten.
Vielen Dank für die Mühe Gruss volker

AW: Wenn Ordner leer Mappe schliessen
06.11.2007 11:23:00
Tino
Hallo,
geht es so?

Sub auto_open()
'Zeileneinlesen()
Dim fs As Object, ordner As Object
Dim unterOdner As Variant, dateien As Variant
If Cells(2, 5) = 0 Then
Dim oFS As Object, oFLDR As Object, oFILE As Object
Dim lRow As Long
Dim wkbMy As Workbook, wsMy As Worksheet, lngZeile As Long, lngLetzte As Long
'    *Prüfe Inhalt ****************************************************************
Set fs = CreateObject("Scripting.filesystemobject")
Set ordner = fs.getfolder("\\Server04\av\SharePoint_Beschlagliste\Pulk")
unterOdner = ordner.subfolders.Count
dateien = ordner.Files.Count
If (dateien * 1) + (unterOdner * 1) = 0 Then
GoTo Abbruch:
End If
Application.ScreenUpdating = False
'Application.DisplayAlerts = False
Set oFS = CreateObject("scripting.filesystemobject")
lRow = 2
Set oFLDR = oFS.getfolder("\\Server04\av\SharePoint_Beschlagliste\Pulk")
For Each oFILE In oFLDR.Files
If oFILE Like "*.xls" Or oFILE Like "*.xlsm" Or oFILE Like "*.xlsx" Then
lRow = lRow
Set wkbMy = Workbooks.Open(oFILE)
For Each wsMy In wkbMy.Worksheets
If wsMy.Name Like "BL_*" Then
Dim wsMyZeile As Long, wsMyletzte As Long
wsMyletzte = wsMy.Cells(Rows.Count, 1).End(xlUp).Row
For wsMyZeile = 5 To wsMyletzte
If wsMy.Cells(wsMyZeile, 1)  "" Then
wsMy.Range("A" & wsMyZeile & ":B" & wsMyZeile).Copy
ThisWorkbook.Worksheets(1).Cells(lRow, 5).PasteSpecial Paste:= _
xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
wsMy.Range("G" & wsMyZeile & ":N" & wsMyZeile).Copy
ThisWorkbook.Worksheets(1).Cells(lRow, 7).PasteSpecial Paste:= _
xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
wsMy.Range("AA" & wsMyZeile & ":AD" & wsMyZeile).Copy
ThisWorkbook.Worksheets(1).Cells(lRow, 1).PasteSpecial Paste:= _
xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
wsMy.Range("AE" & wsMyZeile & ":AF" & wsMyZeile).Copy
ThisWorkbook.Worksheets(1).Cells(lRow, 13).PasteSpecial Paste:= _
xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
lRow = lRow + 1
End If
Next wsMyZeile
End If
Next
wkbMy.Close False
''Kill wkbMy ' Befehl für das löschen der Datei
End If
Next
Speicher = "SharePoint_Beschlagliste"
Pfad = "\\Server04\av\SharePoint_Beschlagliste"
DName = Speicher
Dateiname = Pfad & "\" & DName & "_" & Date & ".xls"
ThisWorkbook.SaveAs Filename:=Dateiname
End If
Application.ScreenUpdating = True
'Application.DisplayAlerts = True
Exit Sub
Abbruch:
Application.DisplayAlerts = False
Application.Quit
End Sub


Gruss
Tino

Anzeige
AW: Code vor Deklarierung übersehen! Sorry
06.11.2007 11:55:25
Tino
Hallo,
habe übersehen dass in deinem Code vor der Deklarierzung noch eine CodeZeile steht.
so ist es etwas besser.

Sub auto_open()
'Zeileneinlesen()
Dim fs As Object, ordner As Object
Dim unterOdner As Variant, dateien As Variant
Dim oFS As Object, oFLDR As Object, oFILE As Object
Dim lRow As Long
Dim wkbMy As Workbook, wsMy As Worksheet, lngZeile As Long, lngLetzte As Long
'    *Prüfe Inhalt ****************************************************************
Set fs = CreateObject("Scripting.filesystemobject")
Set ordner = fs.getfolder("\\Server04\av\SharePoint_Beschlagliste\Pulk")
unterOdner = ordner.subfolders.Count
dateien = ordner.Files.Count
If (dateien * 1) + (unterOdner * 1) = 0 Then
GoTo Abbruch:
End If
If Cells(2, 5) = 0 Then
Application.ScreenUpdating = False
'Application.DisplayAlerts = False
Set oFS = CreateObject("scripting.filesystemobject")
lRow = 2
Set oFLDR = oFS.getfolder("\\Server04\av\SharePoint_Beschlagliste\Pulk")
For Each oFILE In oFLDR.Files
If oFILE Like "*.xls" Or oFILE Like "*.xlsm" Or oFILE Like "*.xlsx" Then
lRow = lRow
Set wkbMy = Workbooks.Open(oFILE)
For Each wsMy In wkbMy.Worksheets
If wsMy.Name Like "BL_*" Then
Dim wsMyZeile As Long, wsMyletzte As Long
wsMyletzte = wsMy.Cells(Rows.Count, 1).End(xlUp).Row
For wsMyZeile = 5 To wsMyletzte
If wsMy.Cells(wsMyZeile, 1)  "" Then
wsMy.Range("A" & wsMyZeile & ":B" & wsMyZeile).Copy
ThisWorkbook.Worksheets(1).Cells(lRow, 5).PasteSpecial Paste:= _
xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
wsMy.Range("G" & wsMyZeile & ":N" & wsMyZeile).Copy
ThisWorkbook.Worksheets(1).Cells(lRow, 7).PasteSpecial Paste:= _
xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
wsMy.Range("AA" & wsMyZeile & ":AD" & wsMyZeile).Copy
ThisWorkbook.Worksheets(1).Cells(lRow, 1).PasteSpecial Paste:= _
xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
wsMy.Range("AE" & wsMyZeile & ":AF" & wsMyZeile).Copy
ThisWorkbook.Worksheets(1).Cells(lRow, 13).PasteSpecial Paste:= _
xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
lRow = lRow + 1
End If
Next wsMyZeile
End If
Next
wkbMy.Close False
''Kill wkbMy ' Befehl für das löschen der Datei
End If
Next
Speicher = "SharePoint_Beschlagliste"
Pfad = "\\Server04\av\SharePoint_Beschlagliste"
DName = Speicher
Dateiname = Pfad & "\" & DName & "_" & Date & ".xls"
ThisWorkbook.SaveAs Filename:=Dateiname
End If
Application.ScreenUpdating = True
'Application.DisplayAlerts = True
Exit Sub
Abbruch:
Application.DisplayAlerts = False
Application.Quit
End Sub


Gruss
Tino

Anzeige
Tino, PERFEKT!! Vielen Dank
06.11.2007 12:18:00
volker
Gruss volker

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige