Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1600to1604
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
Datei in anderem Ordner neu erstellen
07.01.2018 14:48:04
Michael
Liebe Experten,
ich möchte gern folgendes über wahrscheinlich mehrere Makros erledigen lassen. Vorweg noch die Info, das Workbook besteht aus zwei Sheets.
1. Das Workbook soll in einem anderen Ordner unter dem Namen "Auszahlungsstatistik KW01-2019" gespeichert werden. Das ist bestimmt noch einfach.
2. In der neu erstellten Datei soll das Sheet 1 nun "01-19" und das Sheet 2 "KW01" heißen.
3. In Sheet 1 sollen die Inhalte (nicht die Formatierungen und Formeln) der Zellen C6:I17 gelöscht werden. Zellen C6:I7 sind Dropdown Felder, C11:I11 sind Formeln
4. In Zelle C5 soll das Datum in das der 1. Kalenderwoche 2019 geändert werden.
5. In Sheet 2 soll in Zelle L2 der Eintarg zu "2019" geändert werden.
6. Nun wird es komplizierter. In Sheet 2 sollen in bestimmten Zellen der Bezug von '01-18' in '01-19' geändert werden, der Rest der Formel sollte unangetastet bleiben. (Betrifft die Zellen C11:C17; D11:D17; E11:E17; G11:G17; E24; E30; E35; L9)
7. Und zu guter Letzt sollen die Einträge der folgenden Zellen im Sheet 2 den Eintrag aus dem Original aus anderen Zellen übernehmen. F21 (neues WKB) bekommt den Inhalt aus E21 (altes WKB); F24 (neu) aus E24 (alt); F30 (neu) aus E30 (alt) und F35 (neu) aus E35 (alt).
Das ist echt eine Menge, aber ich hoffe bei Euch Hilfe zu finden.
Beste Grüße
Michael

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Beispieldatei
07.01.2018 19:58:26
Werner
Hallo Michael,
was hälst du davon, wenn du mal deine Datei mit den zwei Blättern hier hochlädst. Ich glaube kaum, dass das hier jemand aufgrund deiner Beschreibung nachbastelt.
Gruß Werner
AW: Beispieldatei
07.01.2018 21:52:50
Werner
Hallo Michael,
ich kann mir das frühestens morgen Nachmittag anschauen. Kann im Moment keine .xlsm herunterladen. Ich lass mal auf offen, vielleicht hat ja jemand anderes heute Nacht noch die Muse.
Gruß Werner
Anzeige
AW: Datei in anderem Ordner neu erstellen
07.01.2018 23:00:57
fcs
Hallo Michael,
nachfolgend ein entsprechender Satz von Makros
Die Nr. 6 - Formeln anpassen - kann nach meiner Einschätzung im Makro weggelassen werden, da sich die Formeln mit der Umbenennung der Blätter automatisch anpassen.
Den gesamten Code kopierst du am besten in ein neues Modul in deiner persönlichen Makroarbeitsmappe.
Dann kannst du deine vorhandenen Dateien makrofrei lassen.
Gruß
Franz
'Code in einem allgemeinen Modil
'2019-01-07 erstellt unter Office Pro 2010 - Excel 2010 - Windows Vista
Option Explicit
Private wkbOrig As Workbook, wkbNeu As Workbook
Private wksOrig1 As Worksheet, wksOrig2 As Worksheet, wksNeu1 As Worksheet, wksNeu2 As  _
Worksheet
Private varNameNeu, varPfadNeu
Private intKW As Integer, intJahr As Integer
Public Sub Statistik_Neue_Datei()
Dim StatusCalc As Long
Set wkbOrig = ActiveWorkbook
Call subNeueDatei_erstellen
If varPfadNeu = "" Or varNameNeu = "" Then
MsgBox "Bitte erst die neue Datei erstellen", vbOKOnly, "Neue Datei erstellen"
Else
'Makrobremsen lösen
With Application
.ScreenUpdating = False
StatusCalc = .Calculation
.Calculation = xlCalculationManual
End With
Set wksOrig1 = wkbOrig.Worksheets(1)
Set wksOrig2 = wkbOrig.Worksheets(2)
'Neue Datei öffnen
Set wkbNeu = Application.Workbooks.Open( _
Filename:=varPfadNeu & Application.PathSeparator & varNameNeu)
Set wksNeu1 = wkbNeu.Worksheets(1)
Set wksNeu2 = wkbNeu.Worksheets(2)
'Tabellenblätter in Neuer Datei umbenennen
wksNeu1.Name = Format(intKW, "00") & "-" & Right(intJahr, 2)
wksNeu2.Name = "KW" & Format(intKW, "00")
With wksNeu1
'Konstanten im Bereich löschen
.Range("C6:I17").SpecialCells(xlCellTypeConstants).ClearContents
'Datum des Montags der 1. KW im Jahr eintragen
.Range("C5").Value = fncDatumKW_DE(intJahr, 1, 1)
End With
With wksNeu2
'Jahr eintragen
.Range("L2").Value = intJahr
'Formeln anpassen in Zell-Bereichen C11:C17; D11:D17; E11:E17; G11:G17; E24; E30;  _
E35; L9
'sollte nicht erforderlich sein _
mit der Umbenennung des Tabellenblatts werden Formeln automatisch angepasst
'Daten aus Originaldatei in neue Datei übernehmen
.Range("F21") = wksOrig2.Range("E21").Value
.Range("F24") = wksOrig2.Range("E24").Value
.Range("F30") = wksOrig2.Range("E30").Value
.Range("F35") = wksOrig2.Range("E35").Value
End With
'Makrobremsen zurücksetzen
With Application
.ScreenUpdating = True
.Calculation = StatusCalc
End With
End If
'Variablen zurücksetzen
varNameNeu = "": varPfadNeu = ""
Set wkbOrig = Nothing: Set wksOrig1 = Nothing: Set wksOrig2 = Nothing
Set wkbNeu = Nothing: Set wksNeu1 = Nothing: Set wksNeu2 = Nothing
End Sub
Private Sub subNeueDatei_erstellen()
Dim strZ As String
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Bitte Ordner für neue Datei auswählen bzw. erstellen"
If .Show = -1 Then
varPfadNeu = .SelectedItems(1)
EingabeNameNeu:
varNameNeu = VBA.InputBox(Prompt:="Name der neuen Datei?", _
Title:="Neue Arbeitsmappe für KW01 erstellen", _
Default:="Auszahlungsstatistik KW01-2019")
If varNameNeu = False Or varNameNeu = "" Then
varNameNeu = ""
Else
strZ = ""
If fncheckFilename(varNameNeu, strZ) = False Then
MsgBox "Der Dateiname """ & varNameNeu & """ enthält unzulässige(s) Zeichen  _
" _
& strZ, _
vbOKOnly + vbInformation, "Neue Datei erstellen-Prüfen Dateiname"
GoTo EingabeNameNeu
End If
If varNameNeu Like "* KW##-####" Then
intKW = Val(Left(Right(varNameNeu, 7), 2))
intJahr = Val(Right(varNameNeu, 4))
If intKW  53 Then
MsgBox "Unzulässige KW """ & intKW & """ im Dateinamen!", _
vbInformation + vbOKOnly, "Datei neu erstellen-Prüfen Dateiname"
GoTo EingabeNameNeu
ElseIf intJahr  "" Then
If MsgBox("Die Datei " & vbLf _
& varPfadNeu & Application.PathSeparator & varNameNeu & vbLf _
& "existiert schon" & vbLf & "Datei überschreiben?", _
vbOKCancel + vbQuestion, _
"Neue Datei erstellen") = vbCancel Then
varNameNeu = ""
GoTo weiter01
End If
End If
'neue Datei erstellen
wkbOrig.SaveCopyAs Filename:=varPfadNeu & Application.PathSeparator &  _
varNameNeu
weiter01:
End If
Else
varPfadNeu = ""
End If
End With
End Sub
Public Function fncDatumKW_DE(ByVal intJahr As Integer, _
Optional ByVal intKW As Integer = 1, _
Optional ByVal intWT As Integer = 1) As Date
'Ermittelt das Datum eines Wochentags in einer KW für Deutschland
'intKW = Nummer der Kalenderwoche
'intWT = Wochentag - 1 = Mo, 2 = Di, ..., 7 = So
Dim WT_Jan_01 As Integer
Dim datDatum As Date
datDatum = VBA.DateSerial(intJahr, 1, 1) '1. Januar des Jahres
WT_Jan_01 = VBA.Weekday(datDatum, vbMonday)
If WT_Jan_01 ")
fncheckFilename = True
For i = LBound(arrZeichen) To UBound(arrZeichen)
If InStr(1, strName, arrZeichen(i)) > 0 Then
strZ = strZ & "  " & arrZeichen(i)
End If
Next
If Not VBA.IsMissing(varNotDesired) Then
For i = LBound(varNotDesired) To UBound(varNotDesired)
If InStr(1, strName, varNotDesired(i)) > 0 Then
strZ = strZ & "  " & varNotDesired(i)
End If
Next
End If
If strZ  "" Then fncheckFilename = False
End Function

Anzeige
Nachtrag
07.01.2018 23:09:04
fcs
Hallo Michael,
hab gerade gesehen, dass du in deiner Datei schon Makros hast.
Dann kannst du meinen Code auch in ein Modul in deiner Datei kopieren.
Es sei denn, du möchtest deine Datei ohne diese Makros per E-Mail versenden.
Gruß
Franz
AW: Datei in anderem Ordner neu erstellen
09.01.2018 07:57:11
Michael
Hallo Franz,
was du gemacht hast ist genial! Es funktioniert fast perfekt. Was ich vergessen habe, beide Worksheets sind durch ein Passwort geschützt. Die Inhalte können so wohl nicht gelöscht werden. Wenn ich das Makro ohne aktiven Schutz ausführe, klappt es wunderbar. Also müsste der Schutz irgendwie erst aufgehoben werden und am Ende auch wieder aktiviert werden.
Gruß Micha
Anzeige
AW: Datei in anderem Ordner neu erstellen
09.01.2018 08:07:53
Michael
Nachtrag
Hallo Franz,
kann das Makro so umgeschrieben werden, dass es den Dateinamen der Vorlage übernimmt mit dem Zusatz "-2019" (also KW02-2019, KW03-2019 usw.) Wenn ich die Datei KW02 aus diesem Jahr fürs nächste Jahr erstellen lassen, dass sowohl der Dateiname sich ändert als auch die Datumsangaben?
Gruß Micha
AW: Datei in anderem Ordner neu erstellen
09.01.2018 23:39:43
fcs
Hallo Michael,
ich hab die Makros angepasst.
1.Passwort-Schutz der Blätter wird verarbeitet.
Paawort musst du an den entsprechenden Stellen im Code anpassen.
2. Der Dateiname der Original-Datei wird verwendet für die neue Datei.
Die Prüfung auf unzulässige Zeichen im Dateinamen kann jetzt entfallen.
Im Makro zur Erdtellung der neuen Datei msst aber einiges umgestellt werden.
Aus deiner Formulierung
.... werden, dass es den Dateinamen der Vorlage übernimmt mit dem Zusatz "-2019" ....

ist nicht eindeutig klar ob der Dateiname der Vorlage mit z.B. "KW02" oder "KW02-2018 endet.
Ich hab beide Variantenins Makro eingebaut.
Text-Datei mit neuen Makros:
https://www.herber.de/bbs/user/118835.txt
Gruß
Franz
Anzeige
AW: Datei in anderem Ordner neu erstellen
11.01.2018 14:41:04
Michael
Hallo Franz,
ich komme erst heute dazu dein Makro zu testen und dabei kommt folgende Fehlermeldung.
Dateiname-Vorlage: KW01
Syntax (* KW##-#### oder * KW##) für KW und/oder Jahr im alten
Dateinamen stimmen nicht mit der Vorgabe überein

Ich verstehe da leider nur Bahnhof.
Gruß Micha
AW: Datei in anderem Ordner neu erstellen
12.01.2018 10:13:28
fcs
Hallo Micha,
wenn du das Makro startest, dann muss die Vorlage die aktive Datei sein.
So wie du es beschrieben hast hat die Vorlage entweder einen Dateinamen in der Form
TextText KW02.xlsm
oder
TextText KW02-2018.xlsm
Das Makro prüft ob der Dateiname ohne die Namens-Erweiterung auf " KW02" endet oder
" KW02-2018".
Dabei kann die Nr. der KW beliebig sein (aber es müsen 2 Ziffern sein), ebenso das Jahr (hier 4 Ziffern).
Stimmt der Dateiname nicht mit dieser Syntax überein, dann bricht das Makro mit der Meldung ab. Entscheidend ist hierbei auch das Leerzeichen vor "KW".
Ist der Dateiname anders aufgebaut, dann muss ggf. der Vergleichswert für Like und die Berechnung von KW und Jahr angepasst werden.
Aus dem Datei-Namen wird dann für die neue Datei die Nr. der KW und das neue Jahr ermittelt, fehlt das Jahr im Dateinamen, dann muss das Jahr in der angezeigten Input-Box bestätigt/eingegeben werden.
Gruß
Franz
Anzeige
AW: Datei in anderem Ordner neu erstellen
12.01.2018 11:53:21
Michael
Hallo Franz,
dies bedeutet eigentlich nur, wenn die Ursprungsdatei nur "KW02", "KW03" usw. heisst muss ich für dieses jahr nur das Leerzeichen entfernen? Und für die Folgejahre wieder hinzufügen!
Gruss Micha
AW: Datei in anderem Ordner neu erstellen
12.01.2018 14:23:15
fcs
Hallo Micha,
es reicht, wenn du im Code in beiden Zeilen mit Like das Leerzeichen zwischen * und KW im Vergleichs-Ausdruck löscht. Dann ist egal was vor "KW" steht.
            If varNameAlt Like "*KW##-####" Then
'Originaldateiname ähnlch abdefg KW00-2018
intKW = Val(Left(Right(varNameAlt, 7), 2))
intJahr = Val(Right(varNameAlt, 4)) + 1
varNameNeu = Left(varNameAlt, Len(varNameAlt) - 4) & intJahr
ElseIf varNameAlt Like "*KW##" Then
'Originaldateiname ähnlch abdefg KW00
intKW = Val(Right(varNameAlt, 2))
Du musst dann nochmal prüfen, ob der generierte neue Dateiname passt.
Evtl. muss man da nochmals ein wenig anpassen.
Gruß
Franz
Anzeige
AW: Datei in anderem Ordner neu erstellen
12.01.2018 14:35:35
Michael
Hallo Franz,
meine Intuition war richtig und ich habe es so geändert wie ich dachte. Und es funktioniert.
von meiner Seite habe ich nur noch einen letzten Wunsch.
Ist es möglich auch das Datum + 1Jahr in der jeweiligen Datei zu ändern.
Gruß Micha

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige