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

Files in neuen Folder kopieren

Files in neuen Folder kopieren
28.04.2021 11:47:24
Patricia
Hallo ihr Lieben
Mein Makro, welches ich für einen Kollegen erstellt habe, ist letztes Jahr tip top gelaufen... nun geht aber irgendwie nichts mehr.
Das Ziel wäre: Files öffnen, unter neuen Namen in neuem Folder speichern.
Das Dokument wird zwar irgendwie geöffnet, aber dann nicht gespeichert.
Ist etwas am Code falsch?

Sub Copy_Files_with_new_name()
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 Path1                   As String       'path in which the files are which shall be opened
Dim Path2                   As String       'path in which new files shall be safed
Dim NewFileName             As String       'neuer Speichername
Dim SaveNameSEC_CC          As String       'Save Name SEC&CC
Dim SaveNamePeriod          As String       'Save Name Period
Dim fname                   As String
Dim Dateiname               As String
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
'.Application.StatusBar = "Zur Zeit wird das Makro ausgeführt"
End With
Set wbThis = ActiveWorkbook                 'set to the current active workbook (the source book, the Master!)
Path1 = sht_makro.Range("Path1").Value                            ' Path wo Files gespeichert sind
Path2 = sht_makro.Range("Path2").Value                            ' Path wo Files gespeichert sind
SaveNamePeriod = sht_makro.Range("B7").Value                         ' Cellname Periode - (currently in cell B7 in File Makro)
SaveNameSEC_CC = sht_makro.Range("b8").Value
'Öffnet die Files des "openPath"
fname = Dir(Path1)
Do While fname  ""
Set wbTarget = Workbooks.Open(Filename:=Path1 & fname)
Dateiname = wbTarget.Name
NewFileName = wbThis.Sheets("Sheet1").Range("b7").Value
wbTarget.SaveAs Filename:=NewFileName & Dateiname, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
wbTarget.Close
fname = (Dir)
Loop
'dann wieder zum Makrofile wechseln
wbThis.Activate
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
End With
End Sub
https://www.herber.de/bbs/user/145832.xlsm

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Files in neuen Folder kopieren
28.04.2021 13:46:18
Nepumuk
Hallo Patricia,
in B7 steht kein Pfad sondern: _OL1_2021
NewFileName = wbThis.Sheets("Sheet1").Range("b7").Value
Gruß
Nepumuk
AW: Files in neuen Folder kopieren
28.04.2021 15:00:49
Patricia
Ihr seid einfach Spitze!!!
Vielen Dank für die prompte Hilfe, jedesmal SEHR dankbar dafür!
Lg
Patricia
AW: Files in neuen Folder kopieren
28.04.2021 21:41:09
Patricia
Ah wenn ich nochmals stören dürfte...
Mein Kollege hat das Makro nun laufen lassen, welches ein File öffnet und dann gewisse worksheets kopiert.
Nun stoppt das Makro also relativ oft weil er das File nicht öffnen kann.
Wenn ich das Makro beende und das File normal zu öffnen versuche, kommt diese Meldung:
"We found a problem with some content in xxx.xlsm. Do you want to try to recover as much as we can....".
ich kann dann einfach auf yes drücken und das file öffnet sich ganz normal. Ich sehe auch nicht, dass irgend etwas mit dem File nicht korrekt wäre.
Kann ich das im Makro irgendwie verhindern, dass das Makro wegen dieser Meldung unterbricht?
Ich habe schon was eingefügt, (enable events), aber ich denke das ist nicht am richtigen Ort, nämlich dann wenn er das file öffnet.
Wie muss ich den Code anpassen?
VIELEN DANK
Patricia

Sub Copy_Paste_worksheets_in_Path2()
Dim fname As String
Dim wbTarget As Workbook    'workbook from where the data is to be copied from, (aka Overnights file)
Dim wbThis As Workbook      'Workbook (Master) - here "Makro_MIS.xls"
Dim Path1 As String         'path in which the files are which shall be opened
Dim sht1_name As String     'Name des worksheets von wo kopiert wird (in Zelle B24 Makro_MIS.xls)
Dim sht2_name As String     'Name des worksheets wohin es kopiert werden soll (in Zelle B26 Makro_MIS.xls)
Dim sht3_name As String
Dim sht4_name As String
Dim sht5_name As String
Dim sht6_name As String
Dim sht7_name As String
Dim sht8_name As String
Dim sht1_text As String
Dim sht1_range As Range     'welche Zelle/Range der kopiert werden soll (in Zelle B25 in Makor_MIS.xls)
Dim sht3_text As String
Dim sht3_range As Range     'welche Zelle/Range wohin kopiert werden soll (in Zelle B27 in Makor_MIS.xls)
Dim objCell As Range        'Falls auf eine Zelle im Bereich benötigt wird
Set wbThis = ThisWorkbook
Path1 = Sheets("Sheet1").Range("B2").Value          ' Path wo Files gespeichert sind
sht1_name = Sheets("Sheet1").Range("B24").Value     ' Name des worksheets welches kopiert werden soll
sht2_name = Sheets("Sheet1").Range("B26").Value     ' Name des worksheets 2 welches kopoiert werden soll
sht3_name = Sheets("Sheet1").Range("B28").Value     ' Name des worksheets welches kopiert werden soll
sht4_name = Sheets("Sheet1").Range("B30").Value     ' Name des worksheets 2 welches kopoiert werden soll
sht5_name = Sheets("Sheet1").Range("B32").Value     ' Name des worksheets welches kopiert werden soll
sht6_name = Sheets("Sheet1").Range("B34").Value     ' Name des worksheets 2 welches kopoiert werden soll
sht7_name = Sheets("Sheet1").Range("B36").Value     ' ame des worksheets welches kopiert werden soll
sht8_name = Sheets("Sheet1").Range("B38").Value     ' Name des worksheets 2 welches kopoiert werden soll
sht1_text = Sheets("Sheet1").Range("B25").Value     ' Falls nur bestimmter Bereich kopiert werden soll
Set sht1_range = Range(Range("B25").Text)
sht3_text = Sheets("Sheet1").Range("B29").Value     ' Falls nur bestimmter Bereich kopiert werden soll
Set sht3_range = Range(Range("B29").Text)
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
'        .Application.StatusBar = "Zur Zeit wird das Makro ausgeführt"
End With
'Öffnet die Files des "openPath"
fname = Dir(Path1)
Do Until fname = vbNullString
'Files öffnen
Set wbTarget = Workbooks.Open(Filename:=Path1 & fname)
'worksheet Cover unprotect
wbTarget.Sheets("Cover").Unprotect
'worksheets kopieren (Worksheet Zelle B24):
wbThis.Sheets(sht1_name).Range(sht1_text).Copy
wbTarget.Sheets(sht1_name).Range(sht1_text).PasteSpecial Paste:=xlPasteAll
'worksheets kopieren (Worksheet Zelle B28):
wbThis.Sheets(sht3_name).Range(sht3_text).Copy
wbTarget.Sheets(sht3_name).Range(sht3_text).PasteSpecial Paste:=xlPasteAll
'worksheets kopieren (Worksheet Zelle B32):
wbThis.Sheets(sht5_name).Cells.Copy
wbTarget.Sheets(sht5_name).Cells.PasteSpecial Paste:=xlPasteAll
'worksheets kopieren (Worksheet Zelle B36):
wbThis.Sheets(sht7_name).Cells.Copy
wbTarget.Sheets(sht7_name).Cells.PasteSpecial Paste:=xlPasteAll
'        'Damit in kopiertem Bereich nicht *REV!kommt, muss jede Zelle angefasst werden
'        For Each objCell In wbTarget.Sheets(sht2_name).Range(sht2_text)
'        objCell.Formula = objCell.Formula
'        Next
'worksheet Cover protect
wbTarget.Sheets("Cover").Protect
'wbTarget.Sheets("MIS input").Range("f31").Select
wbTarget.Save
wbTarget.Close
fname = (Dir)
Loop
'dann wieder zum Makrofile wechseln
wbThis.Activate
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
End With
End Sub

Anzeige
AW: Files in neuen Folder kopieren
29.04.2021 08:52:43
Nepumuk
Hallo Patricia,
versuche es mal so:

Set wbTarget = Workbooks.Open(Filename:=Path1 & fname, CorruptLoad:=xlRepairFile)
Gruß
Nepumuk
AW: Files in neuen Folder kopieren
29.04.2021 17:40:33
Patricia
Hallo Nepomuk
Also das hat nun geklappt.
Aber wenn ich nun dieses Dokument per Makro nochmals weiterbearbeite (siehe Makro unten) und andere Schritte ausführe, es dann wieder speichern will, kommt ein Fehler beim WBTraget.save
Run-time error: 1004" - method "savo of object'_Workbook failed.
Wenn ich das Dokument im normalen Excel öffne, dann erscheint im Dateiname "repariert".
Verstehe das nicht - dieses Makro ist vorher so gut gelaufen - ich bin wohl einfach zu dumm dafür:-(..
Liebe grüsse
Patricia

Sub Copy_Paste_worksheets_in_Path2()
Dim fname As String
Dim wbTarget As Workbook    'workbook from where the data is to be copied from, (aka Overnights file)
Dim wbThis As Workbook      'Workbook (Master) - here "Makro_MIS.xls"
Dim Path1 As String         'path in which the files are which shall be opened
Dim sht1_name As String     'Name des worksheets von wo kopiert wird (in Zelle B24 Makro_MIS.xls)
Dim sht2_name As String     'Name des worksheets wohin es kopiert werden soll (in Zelle B26 Makro_MIS.xls)
Dim sht3_name As String
Dim sht4_name As String
Dim sht5_name As String
Dim sht6_name As String
Dim sht7_name As String
Dim sht8_name As String
Dim sht1_text As String
Dim sht1_range As Range     'welche Zelle/Range der kopiert werden soll (in Zelle B25 in Makor_MIS.xls)
Dim sht3_text As String
Dim sht3_range As Range     'welche Zelle/Range wohin kopiert werden soll (in Zelle B27 in Makor_MIS.xls)
Dim objCell As Range        'Falls auf eine Zelle im Bereich benötigt wird
Set wbThis = ThisWorkbook
Path1 = Sheets("Sheet1").Range("B2").Value          ' Path wo Files gespeichert sind
sht1_name = Sheets("Sheet1").Range("B24").Value     ' Name des worksheets welches kopiert werden soll
sht2_name = Sheets("Sheet1").Range("B26").Value     ' Name des worksheets 2 welches kopoiert werden soll
sht3_name = Sheets("Sheet1").Range("B28").Value     ' Name des worksheets welches kopiert werden soll
sht4_name = Sheets("Sheet1").Range("B30").Value     ' Name des worksheets 2 welches kopoiert werden soll
sht5_name = Sheets("Sheet1").Range("B32").Value     ' Name des worksheets welches kopiert werden soll
sht6_name = Sheets("Sheet1").Range("B34").Value     ' Name des worksheets 2 welches kopoiert werden soll
sht7_name = Sheets("Sheet1").Range("B36").Value     ' ame des worksheets welches kopiert werden soll
sht8_name = Sheets("Sheet1").Range("B38").Value     ' Name des worksheets 2 welches kopoiert werden soll
sht1_text = Sheets("Sheet1").Range("B25").Value     ' Falls nur bestimmter Bereich kopiert werden soll
Set sht1_range = Range(Range("B25").Text)
sht3_text = Sheets("Sheet1").Range("B29").Value     ' Falls nur bestimmter Bereich kopiert werden soll
Set sht3_range = Range(Range("B29").Text)
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
'        .Application.StatusBar = "Zur Zeit wird das Makro ausgeführt"
End With
'Öffnet die Files des "openPath"
fname = Dir(Path1)
Do Until fname = vbNullString
'Files öffnen
Set wbTarget = Workbooks.Open(Filename:=Path1 & fname, CorruptLoad:=xlRepairFile)
'worksheet Cover unprotect
wbTarget.Sheets("Cover").Unprotect
'worksheets kopieren (Worksheet Zelle B24):
wbThis.Sheets(sht1_name).Range(sht1_text).Copy
wbTarget.Sheets(sht1_name).Range(sht1_text).PasteSpecial Paste:=xlPasteAll
'worksheets kopieren (Worksheet Zelle B28):
wbThis.Sheets(sht3_name).Range(sht3_text).Copy
wbTarget.Sheets(sht3_name).Range(sht3_text).PasteSpecial Paste:=xlPasteAll
'worksheets kopieren (Worksheet Zelle B32):
wbThis.Sheets(sht5_name).Cells.Copy
wbTarget.Sheets(sht5_name).Cells.PasteSpecial Paste:=xlPasteAll
'worksheets kopieren (Worksheet Zelle B36):
wbThis.Sheets(sht7_name).Cells.Copy
wbTarget.Sheets(sht7_name).Cells.PasteSpecial Paste:=xlPasteAll
'        'Damit in kopiertem Bereich nicht *REV!kommt, muss jede Zelle angefasst werden
'        For Each objCell In wbTarget.Sheets(sht2_name).Range(sht2_text)
'        objCell.Formula = objCell.Formula
'        Next
'worksheet Cover protect
wbTarget.Sheets("Cover").Protect
'wbTarget.Sheets("MIS input").Range("f31").Select
wbTarget.Save
wbTarget.Close
fname = (Dir)
Loop
'dann wieder zum Makrofile wechseln
wbThis.Activate
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
End With
End Sub

Anzeige
AW: Files in neuen Folder kopieren
29.04.2021 17:47:01
Nepumuk
Hallo Patricia,
da kann ich dir leider nicht weiterhelfen, ich habe keine korrupte Datei mit der ich das testen könnte.
Gruß
Nepumuk
AW: Files in neuen Folder kopieren
29.04.2021 20:13:30
Patricia
..komisch - bei mir läuft das Makro wunderbar, aber bei meinem Kollegen nicht!
Aber in Zukunft muss er das machen.. es scheint, dass die Files bei ihm Fehler erzeugen und bei mir nicht...
Eine Idee an was das liegen könnte?
AW: Files in neuen Folder kopieren
29.04.2021 20:19:19
Nepumuk
Hallo Patricia,
nein, keinen blassen Schimmer-
Gruß
Nepumuk

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige