MS-Office-Forum

Zurück   MS-Office-Forum > Windows, Anwendungen & Co. > Windows
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 26.11.2017, 21:12   #1
Boost12
MOF User
MOF User
Standard Windows 7 (x32/x64) alle Versionen - Datei per Batch kopieren und umbenennen

Einen schönen Abend!

Ich hoffe ihr könnt mir weiter helfen.

Ich habe mir eine Batch erstellt aber diese funktioniert nicht richtig.

Habe auch schon einige Foren durchstöbert jedoch leider ohne den passenden Erfolg.

Ich habe eine Excel-Datei mit einem Datum z.B. 01.01.2018 jetzt möchte ich per Batch die Datei kopieren.
Am besten für einen ganzen Monat oder sogar für ein Jahr.
Das ich den Wert 01.01.2018 nehme und ein Enddatum eingeben kann.

Habe es geschafft, dass ich eine Zahl fortlaufend kopieren kann oder das hinter dem Datum eine fortlaufende Zahl angehangen wird, aber nicht, dass nur das Datum +1 (einen Tag) erweitert wird.

Vielleicht habt ihr ja eine Idee für mich.

Ich danke Euch :-)

Geändert von Boost12 (26.11.2017 um 21:24 Uhr).
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 27.11.2017, 08:19   #2
haklesoft
MOF Koryphäe
MOF Koryphäe
Standard

Batches sind etwas aus der Mode gekommen ; - da finden sich vermutlich nicht mehr so viele, die sich damit gut auskennen und Verbesserungsvorschläge zu Deinem Code machen könnten.

Um ein gültiges künftiges Datum zu ermitteln scheint es mir einfacher ein aktuelleres Programm anzuwenden wie z. B. PowerShell, VBS, AutoIt oder gar Excel-VBA.

__________________

Hang loose, haklesoft
haklesoft ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 27.11.2017, 19:09   #3
Boost12
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hi!

Ich danke dir schon mal.
Da hast du vielleicht sogar Recht.

Habe mich vielleicht auch nicht richtig ausgedrückt.
Das Datum ist der Name der Excel Datei jetzt wollte ich die Datei nicht 365 mal für ein ganzes Jahr kopieren und per Hand für jeden Tag manuell das Datum ändern. :-)

Mit VBA kann man das nicht wirklich realisieren oder?
Wollte auch nicht unbedingt ein Programm runterladen aber bleibt mir vielleicht nichts anderes übrig, wenn ich mit dem Batch nicht weiter komme :-)

Ich danke dir auf alle Fälle :-)
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 28.11.2017, 13:37   #4
haklesoft
MOF Koryphäe
MOF Koryphäe
Standard

Hi,

ich verstehe Deine Erklärungen so, dass Du von der selben Exceldatei jeden Tag eine Sicherungskopie anlegen willst, die so heissen soll wie das gerade aktuelle Datum?

Zitat:

Mit VBA kann man das nicht wirklich realisieren oder?

Aber sicher doch!

__________________

Hang loose, haklesoft
haklesoft ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 28.11.2017, 23:09   #5
Boost12
Threadstarter Threadstarter
MOF User
MOF User
Standard

Ja kann man so sagen.

Ich habe in Excel einige Programmierungen und Makros laufen.
Ich befülle jeden Tag aufs neue die Tabelle mit neuen Daten.

Brauche also keine Sicherungskopie von der befüllten Tabelle sondern nur für jeden Tag im Jahr die leere Arbeitsmappe.

Deswegen würde ich gern die schon leere programmierte Excel Tabelle 365 mal kopieren und automatisch soll die Batch das Datum als Dateinamen erweitern.

Sprich ich gebe ein Start und ein Enddatum ein und so oft soll die Datei kopiert werden.
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 29.11.2017, 12:51   #6
haklesoft
MOF Koryphäe
MOF Koryphäe
Standard

Die Mehrfachablage einer neu angelegten Exceldatei könntest Du mit diesem Code vornehmen:
Code:

Option Explicit

' Speichert neue leere Exceldatei mehrfach unter Datums-Dateinamen
Sub saveBlankWorkbookFiles()
    Dim sStart As String, lStart As Long
    Dim sEnde As String, lEnde As Long
    Dim sDatum As String, i As Long, c As Long
    Const sTitel As String = "Leere Exceldateien anlegen"
    Const sExt As String = ".xlsx"  ' ggf. anpassen
    Const sPfad = "C:\Temp\"        ' <== ANPASSEN
    
    sStart = InputBox("Starttag eingeben", sTitel, Format(CDate(Now), "dd.MM.yyyy"))
    If Len(sStart) > 5 Then
        lStart = CLng(CDate(sStart))
        If lStart < 42000 Or lStart > 50000 Then
            MsgBox "Startdatum ausserhalb des zulässigen Bereichs", vbCritical, sTitel
            Exit Sub
        End If
    Else
        Exit Sub
    End If
    
    sEnde = InputBox("Endtag eingeben", sTitel, Format(CDate(Now), "dd.MM.yyyy"))
    If Len(sEnde) > 5 Then
        lEnde = CLng(CDate(sEnde))
        If lEnde < 42000 Or lStart > 50000 Then
            MsgBox "Enddatum ausserhalb des zulässigen Bereichs", vbCritical, sTitel
            Exit Sub
        End If
    Else
        Exit Sub
    End If
    
    If MsgBox("Jetzt " & lEnde + 1 - lStart & " Exceldateien anlegen?", vbQuestion + vbYesNo, sTitel) <> vbYes Then Exit Sub
    
    Workbooks.Add   ' neue leere Exceldatei ohne Makros erstellen
    With ActiveWorkbook
        For i = lStart To lEnde
            sDatum = Format(CDate(i), "yyyyMMdd")
            If Dir(sPfad & sDatum & sExt) = "" Then
                .SaveAs sPfad & sDatum & sExt
                c = c + 1
            End If
        Next i
        .Close SaveChanges:=False
    End With
    MsgBox c & " Dateien neu angelegt" & vbCrLf & lEnde + 1 - lStart - c & " Dateien waren vorhanden", vbInformation, sTitel
End Sub

__________________

Hang loose, haklesoft
haklesoft ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 30.11.2017, 21:06   #7
Boost12
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hi haklesoft!

Ich danke dir.
Der Code funktioniert super.

Aber habe da ein Problem. Er funktioniert nicht für meine Zwecke.
Ich kann xls Dateien kopieren aber keine xlsm

Meine ganzen Makros und Verweise sollen bestehen bleiben, also alle Formatierungen.

Grüße :-)
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 01.12.2017, 08:10   #8
haklesoft
MOF Koryphäe
MOF Koryphäe
Standard

Hi,

unter der Voraussetzung, dass Du Dir eine Vorlage(ohne Daten) Deiner Datei erstellst, bräuchtest Du nur diese zwei Zeilen anzupassen:
Code:

    Const sExt As String = ".xlsx"  ' ggf. anpassen

    Workbooks.Add   ' neue leere Exceldatei ohne Makros erstellen
Aber wenn Du Dir schon eine Vorlage erstellst könntest Du Deine Arbeitsweise ändern, in dem Du nicht im Voraus Leerdateien speicherst, sondern die Vorlage täglich neu startest und direkt unter dem aktuellen Datum speichern lässt, bevor Du Daten eingibst.

Warum muss denn Code (welcher?) in jeder Tagesdatei enthalten sein? Lade doch hier mal ein ggf. anonymisiertes Muster hoch.

__________________

Hang loose, haklesoft
haklesoft ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 01.12.2017, 18:07   #9
Boost12
Threadstarter Threadstarter
MOF User
MOF User
Standard

Leider habe ich die Datei nur auf der Arbeit.

Ich möchte die Datei ohne Eintrage in der Tabelle kopieren.
Werde vorhandene Daten die ich in die Tabelle eingetragen habe vor dem kopieren löschen.
Es geht mir darum, das ich die Excel Datei mit allen Makros und Verweise kopieren kann.

Habe es heute per Hand gemacht, jedoch erstmal nur bis Ende Februar.

In die Datei werden Meetings eingetragen und wann bestimmte Lieferanten kommen oder Arbeitsberichte abgegeben werden müssen.

Deswegen muss ich meine Datei für ein Jahr vorspeichern, dass wenn ich heute einen Anruf bekomme mit Details für den z.B. 15.7.2018. Das ich diese direkt zu dem passenden Tag eintragen kann.


Hoffe ihr könnt mir folgen :-)
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 02.12.2017, 11:10   #10
haklesoft
MOF Koryphäe
MOF Koryphäe
Standard

Nun ja. Wenn Du das so machen willst, sollten winzige Änderungen an den Dir hier gezeigten Codezeilen reichen. Ich schlage m und ' vor.

__________________

Hang loose, haklesoft

Geändert von haklesoft (02.12.2017 um 11:13 Uhr).
haklesoft ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 02.12.2017, 15:23   #11
Boost12
Threadstarter Threadstarter
MOF User
MOF User
Standard

Ich habe es schon mit der Endung .xlsm versucht aber dann bekomme ich leider nur eine Fehlermeldung.

Bin leider nicht so bewandert mit VBA, weiß nicht was ich ändern könnte damit die Kopie so vorgenommen wird wie ich es gern hätte.

Könntest du mir vielleicht Hilfestellung geben? :-)
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.12.2017, 08:07   #12
haklesoft
MOF Koryphäe
MOF Koryphäe
Standard

Ein wenig was über VBA lernen solltest Du schon, da wir hier eher Hilfe zur Selbsthilfe praktizieren, als fertige Codes abzuliefern.

Eine Meldung "geht nicht" ohne zu zeigen, was Du genau gemacht hast und welche Fehler konkret bemängelt werden, ist nicht förderlich.

Mit den Codeänderungen, die ich Dir vorgeschlagen hatte funktioniert es bei mir durchaus. Im nachfolgenden Code habe ich noch den direkten Bezug auf die Makro-Ausgangsdatei gesetzt. Die Makrodatei wird zum Schluss entfernt, damit Du konkret die Datei öffnen kannst, die Du gerade bearbeiten willst.

Vor dem Aufruf des Makros musst Du natürlich bereits vorhandene Eingabedaten entfernen.
Code:

Sub saveBlankXLSMWorkbookFiles()
    Dim sStart As String, lStart As Long
    Dim sEnde As String, lEnde As Long
    Dim sDatum As String, i As Long, c As Long
    Const sTitel As String = "Kopie/n der Exceldatei anlegen"
    Const sExt As String = ".xlsm"  ' ggf. anpassen
    Const sPfad = "C:Temp"        ' <== ANPASSEN
    
    sStart = InputBox("Starttag eingeben", sTitel, Format(CDate(Now), "dd.MM.yyyy"))
    If Len(sStart) > 5 Then
        lStart = CLng(CDate(sStart))
        If lStart < 42000 Or lStart > 50000 Then
            MsgBox "Startdatum außerhalb des zulässigen Bereichs", vbCritical, sTitel
            Exit Sub
        End If
    Else
        Exit Sub
    End If
    
    sEnde = InputBox("Endtag eingeben", sTitel, Format(CDate(Now), "dd.MM.yyyy"))
    If Len(sEnde) > 5 Then
        lEnde = CLng(CDate(sEnde))
        If lEnde < 42000 Or lStart > 50000 Then
            MsgBox "Enddatum außerhalb des zulässigen Bereichs", vbCritical, sTitel
            Exit Sub
        End If
    Else
        Exit Sub
    End If
    
    If MsgBox("Jetzt " & lEnde + 1 - lStart & " Exceldateien anlegen?", vbQuestion + vbYesNo, sTitel) <> vbYes Then Exit Sub
    
    ' Workbooks.Add   ' keine neue leere Exceldatei ohne Makros erstellen
    With ThisWorkbook      ' ActiveWorkbook    ' mit der Makrodatei arbeiten
        For i = lStart To lEnde
            sDatum = Format(CDate(i), "yyyyMMdd")
            If Dir(sPfad & sDatum & sExt) = "" Then
                .SaveAs sPfad & sDatum & sExt
                c = c + 1
            End If
        Next i
        MsgBox c & " Dateien neu angelegt" & vbCrLf & lEnde + 1 - lStart - c & " Dateien waren vorhanden", vbInformation, sTitel
        .Close SaveChanges:=False
    End With
End Sub

__________________

Hang loose, haklesoft
haklesoft ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 05.12.2017, 18:17   #13
Boost12
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo haklesoft,

ja da hast du Recht ich muss mir noch vieles über VBA anschauen.
Habe mir auch deswegen deine beiden Codes gegenübergestellt um zu schauen was der zweite jetzt genau anders macht und zerlege sie mir.
So kann ich Schritt für Schritt sehen für welche Zeile was zuständig ist.

Ich möchte mich ganz recht herzlich bei dir bedanken, auch wenn das Forum für die Unterstützung genutzt werden soll anstatt fertige Codes für andere zu erstellen.

Dein Code funktioniert sehr gut. Ich bin wirklich begeistert. Wäre bestimmt nie allein darauf gekommen diese Änderungen am Code vorzunehmen damit dieser auch ohne Fehler läuft.

Grüße Boost12

Ich danke dir :-)
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.12.2017, 03:34   #14
Zappelin
Neuer Benutzer
Neuer Benutzer
Standard

Hi Boost12,

ist wohl nicht mehr aktuell, aber ich hätte das so gelöst:

@echo off & setlocal
set datum="%date:~-4%.%date:~-7,2%.%date:~-10,2%"
set zeit="%time:~0,2%-%time:~3,2%-%time:~6,2%"
set quelle= <- hier der Name Deiner Excel-Datei
set ziel=%datum%_%zeit%.xlsx
copy %quelle% %ziel%
end

Das erzeugt bei jedem Start eine neue Kopie, deren Dateiname aus Datum und Zeit besteht (für besseres Sortieren im amerikanischen Format und sekundengenau). Über die Variablen kann man das noch beliebig verfeinern, z.B. mit Pfadangaben.

Gruss, Zappelin

Geändert von Zappelin (15.12.2017 um 03:39 Uhr).
Zappelin ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.12.2017, 15:33   #15
Boost12
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hi Zappelin!

Danke auch für deine Antwort aber der Code ist leider nicht das, was ich gesucht habe. Aber danke für deine Mühe :-)

Grüße Boost12
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:09 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.