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

Endlosschlaufe beim Öffnen aus Folder

Endlosschlaufe beim Öffnen aus Folder
07.01.2020 18:53:00
Patricia
Hallo zusammen
Ich bin ganz neu hier.
Ich versuche eine Prozedur zu erstellen, um Files aus einem Folder auszulesen, einen Bereich zu kopieren von einem ws in ein anderes und File wieder schliessen (speichern in einem anderen Pfadt).
Es läuft eigentlich gut, ausser dass ich eine Endlosschlaufe habe.
Habe schon mal ab Celle C2 das Probefile ausgelesen (Namen), evtl. könnte man damit was machen anstatt mit den fname?
Aber ich bin noch zu schwach im VBA und das selber herauszufinden, und ich habe schon lange genug geübt bis ich diesen Code hatte... sorry.
Wäre toll wenn mir jemand helfen könnt! Ist sicher sehr kompliziert geschrieben von mir..

Private Sub CommandButton1_Click()
Dim wb                      As Workbook
Dim wbThis                  As Workbook     'workbook where range and path is stored
Dim wbTarget                As Workbook     'workbook from where the data is to be copied from,  _
_
_
_
(aka Overnights file)
Dim OpenPath As String
OpenPath = Sheets("Sheet1").Range("B1").Value ' Path wo Files gespeichert sind
Dim SavePath As String
SavePath = Sheets("sheet1").Range("b6") ' Path wo Files gespeichert sind
Dim rngCopy                 As String        ' Bereich der kopiert werden soll
rngCopy = Sheets("sheet1").Range("b2").Value
Dim ss                      As Worksheet    '1st Worksheet where copy range is ==>source sheet
Dim ds                      As Worksheet    '2nd Worksheet where range shall be copied to ==>    _
_
_
_
destination sheet
Dim namess                  As String       'get value/name of source sheet in cell b4
Dim nameds                  As String       'get value/name of destination sheet in b5
namess = Sheets("Sheet1").Range("b4").Value
nameds = Sheets("Sheet1").Range("b5").Value
Set wbThis = ActiveWorkbook ''set to the current active workbook (the source book, the Master!)
Dim SaveNameStart       As String
SaveNameStart = Sheets("Sheet1").Range("B7").Value ' die ersten 5 Zeichen für den neuen  _
Filenamen
Dim NewFileName         As String
Fname = Dir(OpenPath)
Do While Fname  ""
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
Set wbTarget = Workbooks.Open(filename:=OpenPath & Fname)
Sheets(namess).Range(rngCopy).Copy
Sheets(nameds).Range("a10").PasteSpecial Paste:=xlPasteAll
Sheets(nameds).Range("A10").Select
NewFileName = Sheets(namess).Range("d1").Value & Sheets(namess).Range("d2").Value _
& Sheets(namess).Range("d3").Value 'get file name (concatenate) from period in macro file    _
_
_
_
and various cells in target wb
wbTarget.SaveAs filename:=SavePath & SaveNameStart & NewFileName & ".xlsx"
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
'close the overnight's file
wbTarget.Close
wbThis.Activate
Loop
End Sub

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Endlosschlaufe beim Öffnen aus Folder
07.01.2020 18:55:32
Regina
Hi,
wenn ich das richtig sehe, fehlt vor dem Loop das nächste Dir, damit zur nächsten Datei gewechselt wird:
Private Sub CommandButton1_Click()
Dim wb                      As Workbook
Dim wbThis                  As Workbook     'workbook where range and path is stored
Dim wbTarget                As Workbook     'workbook from where the data is to be copied from,  _
_
_
_
_
(aka Overnights file)
Dim OpenPath As String
OpenPath = Sheets("Sheet1").Range("B1").Value ' Path wo Files gespeichert sind
Dim SavePath As String
SavePath = Sheets("sheet1").Range("b6") ' Path wo Files gespeichert sind
Dim rngCopy                 As String        ' Bereich der kopiert werden soll
rngCopy = Sheets("sheet1").Range("b2").Value
Dim ss                      As Worksheet    '1st Worksheet where copy range is ==>source sheet
Dim ds                      As Worksheet    '2nd Worksheet where range shall be copied to ==>    _
_
_
_
_
destination sheet
Dim namess                  As String       'get value/name of source sheet in cell b4
Dim nameds                  As String       'get value/name of destination sheet in b5
namess = Sheets("Sheet1").Range("b4").Value
nameds = Sheets("Sheet1").Range("b5").Value
Set wbThis = ActiveWorkbook ''set to the current active workbook (the source book, the Master!)
Dim SaveNameStart       As String
SaveNameStart = Sheets("Sheet1").Range("B7").Value ' die ersten 5 Zeichen für den neuen  _
Filenamen
Dim NewFileName         As String
Fname = Dir(OpenPath)
Do While Fname  ""
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
Set wbTarget = Workbooks.Open(filename:=OpenPath & Fname)
Sheets(namess).Range(rngCopy).Copy
Sheets(nameds).Range("a10").PasteSpecial Paste:=xlPasteAll
Sheets(nameds).Range("A10").Select
NewFileName = Sheets(namess).Range("d1").Value & Sheets(namess).Range("d2").Value _
& Sheets(namess).Range("d3").Value 'get file name (concatenate) from period in macro file    _
_
_
_
_
and various cells in target wb
wbTarget.SaveAs filename:=SavePath & SaveNameStart & NewFileName & ".xlsx"
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
'close the overnight's file
wbTarget.Close
wbThis.Activate
Dir()
Loop
End Sub

Anzeige
AW: Endlosschlaufe beim Öffnen aus Folder
07.01.2020 19:07:15
Luschi
Hallo Patricia,
der Tipp von Regina ist zwar richtig, aber nicht ganz korrekt:
    Fname = Dir()
Loop
Gruß von Luschi
aus klein-Paris
AW: Endlosschlaufe beim Öffnen aus Folder
07.01.2020 19:09:16
Regina
... stimmt, Asche auf mein Haupt, war ein schnellschuss vom Smartphone aus....
Gruß
Regina
AW: Endlosschlaufe beim Öffnen aus Folder
08.01.2020 08:38:07
Patricia
Ihr seid unglaublich!!! Das hätte ich nie herausgefunden... bin so eine Anfängerin:-(.
Vielen vielen Dank!
Nun funktioniert das Makro einfach noch nicht so recht wenn ich den Button clicke, sondern nur wenn ich es über F8 laufen lasse.. aber das kriege ich auch noch irgendwie hin!
AW: Endlosschlaufe beim Öffnen aus Folder
08.01.2020 10:21:17
Regina
Hi,
was heißt "nicht so recht"? Fehlermeldungen? Oder hast Du Probleme den Code daran zu binden?
Gruß Regina
Anzeige
AW: Endlosschlaufe beim Öffnen aus Folder
08.01.2020 11:04:37
Patricia
Das mit dem Makro anbinden hat nun geklappt!
Jetzt habe ich noch ein Problem: und zwar dass das enable.events und display.alerts = false beim loop nicht funktioniert. Beim 1. File geht es durch, aber beim 2. erscheint trotzdem eine Meldung von Exel (workbook contains links...).
Wie kann ich das ausschalten? Habe es evtl. am falschen Ort platziert?
Do While fname ""
Set wbTarget = Workbooks.Open(Filename:=OpenPath & fname)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
Sheets(namess).Range(rngCopy).Copy
Sheets(nameds).Range("a10").PasteSpecial Paste:=xlPasteAll
'Sheets(nameds).Range("A10").Select
NewFileName = Sheets(namess).Range("d1").Value & " " & Sheets(namess).Range("d6").Value _
& " " & Sheets(namess).Range("d2").Value 'get file name (concatenate) from period in macro file and various cells in target wb
wbTarget.SaveAs Filename:=SavePath & SaveNameStart & NewFileName & ".xlsx"
wbTarget.Close 'close the overnight's file
fname = (Dir)
Loop
Anzeige
AW: Endlosschlaufe beim Öffnen aus Folder
08.01.2020 12:01:35
Regina
... die 3 Befehle Application .... gehören vor die Schleife...
und nach dem Loop alles wieder auf True setzen
Gruß
Regina
AW: Endlosschlaufe beim Öffnen aus Folder
08.01.2020 12:06:07
Patricia
Geht leider nicht, denn vor der Schlauf befinde ich mich in einem anderen Sheet, dort wo ich die Prozedur gespeichert habe.
Aber nicht so schlimm, ist immerhin nun schon viel schneller als vorher alles manuell bei über 40 Dokumenten!
AW: Endlosschlaufe beim Öffnen aus Folder
08.01.2020 12:18:44
Regina
... diese 3 Befehle beziehen sich nicht auf das Sheet, sondern auf die Anwendung, also Excel... Sollte also egal sein, wo auf welchem Sheet Du Dich befindest.
Sonst musst Du mal den ganzen Code posten...
Gruß
Regina
Anzeige
AW: Endlosschlaufe beim Öffnen aus Folder
08.01.2020 13:57:08
Patricia
...ist aber wirklich nicht so tragisch wenn das jetzt nicht funktionieren würde..
Sub Copy_Path1_to_Path2()
Dim wbThis                  As Workbook     'workbook where range and path is stored
Dim wbTarget                As Workbook     'workbook from where the data is to be copied from,  _
Dim OpenPath As String
OpenPath = Sheets("Sheet1").Range("Path1").Value ' Path wo Files gespeichert sind
Dim SavePath As String
SavePath = Sheets("sheet1").Range("Path2") ' Path wo Files gespeichert sind
Dim rngCopy                 As String        ' Bereich der kopiert werden soll
rngCopy = Sheets("sheet1").Range("b2").Value
Dim ss                      As Worksheet    '1st Worksheet where copy range is ==>source sheet
Dim ds                      As Worksheet    '2nd Worksheet where range shall be copied to ==>  _
destination sheet
Dim namess                  As String       'get value/name of source sheet in cell b4
Dim nameds                  As String       'get value/name of destination sheet in b5
namess = Sheets("Sheet1").Range("b4").Value
nameds = Sheets("Sheet1").Range("b5").Value
Set wbThis = ActiveWorkbook ''set to the current active workbook (the source book, the Master!)
Dim SaveNameStart       As String
SaveNameStart = Sheets("Sheet1").Range("B7").Value ' die ersten 5 Zeichen für den neuen  _
Filenamen
Dim NewFileName         As String
fname = Dir(OpenPath)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
Do While fname  ""
Set wbTarget = Workbooks.Open(Filename:=OpenPath & fname)
Sheets(namess).Range(rngCopy).Copy
Sheets(nameds).Range("a10").PasteSpecial Paste:=xlPasteAll
'Sheets(nameds).Range("A10").Select
NewFileName = Sheets(namess).Range("d1").Value & "_" & Sheets(namess).Range("d6").Value _
& "_" & Sheets(namess).Range("d2").Value 'get file name (concatenate) from period in macro  _
file and various cells in target wb
wbTarget.SaveAs Filename:=SavePath & SaveNameStart & NewFileName & ".xlsx"
wbTarget.Close 'close the overnight's file
fname = (Dir)
Loop
wbThis.Activate
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub

Anzeige
AW: Endlosschlaufe beim Öffnen aus Folder
08.01.2020 14:44:53
Regina
Hi,
da habe ich mich auch vertan, die meldung, die angezeigt wird, wird nicht durch DisplayAlerts ausgeschaltet, sondern erscheint, wenn die Datei, die Du öffnest, Verknüpfungen zu anderen Dateien enthält. Das auszuschalten geht meiens Wissens nur, in dem man in das Workbook_Open-Ereignis der entsprechenden Datei einen Befehl zur Unterdrückung dieser Meldung reinschreibt.
Da müsstest Du dann aber jede der betroffenen Dateien "anfassen", und wenn es für Dich so ok ist...
Gruß
Regina

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige