Anzeige
Archiv - Navigation
1764to1768
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
Kopieren der Datei mit Änderung von Attr
11.06.2020 23:11:16
Attr
Hallo Leute,
ich habe von der aktiver Zelle die Datei (C:\Lokal\Sergej\ID-Nummer.MA per CMD an 20 Standorte kopiert. Die Attribute der Zieldatei habe ich vor und nach dem Kopiervorgang geändert. Die Dateiattribute zu ändern dauert länger als die Datei zu kopieren. Lässt sich bitte der untere Code grundsätzlich per VBA vereinfachen/optimieren?
Sub START_MAKROS()
Dim strFile As String
strFile = Environ("Temp") & "\" & Format(Now, "YYYY-MM-DD_HH_MM_SS") & "_copy.cmd"
Open strFile For Output As #1
Print #1, "color  17"
Print #1, "chcp 65001"
Print #1, "cls"
Print #1, "attrib -r -s -h /S /D "; """"; "P:\Daten\DE-WUP01\Einstellungen\Nova\ _
Standards\makros\" & ActiveCell.Offset(0, 1); """"
Print #1, "attrib -r -s -h /S /D "; """"; "P:\Daten\DE-KAM16\Einstellungen\Nova\ _
Standards\makros\" & ActiveCell.Offset(0, 1); """"
Print #1, "attrib -r -s -h /S /D "; """"; "P:\Daten\DE-TES04\Einstellungen\Nova\ _
Standards\makros\" & ActiveCell.Offset(0, 1); """"
'usw.
Print #1, "xcopy "; """"; ActiveCell; """"; " "; """"; "P:\Daten\DE-WUP01\Einstellungen\ _
Nova\Standards\makros\"; """"; " /Y"
Print #1, "xcopy "; """"; ActiveCell; """"; " "; """"; "P:\Daten\DE-KAM16\Einstellungen\ _
Nova\Standards\makros\"; """"; " /Y"
Print #1, "xcopy "; """"; ActiveCell; """"; " "; """"; "P:\Daten\DE-TES04\Einstellungen\ _
Nova\Standards\makros\"; """"; " /Y"
'usw.
Print #1, "attrib +r +s +h /S /D "; """"; "P:\Daten\DE-WUP01\Einstellungen\Nova\ _
Standards\makros\" & ActiveCell.Offset(0, 1); """"
Print #1, "attrib +r +s +h /S /D "; """"; "P:\Daten\DE-KAM16\Einstellungen\Nova\ _
Standards\makros\" & ActiveCell.Offset(0, 1); """"
Print #1, "attrib +r +s +h /S /D "; """"; "P:\Daten\DE-TES04\Einstellungen\Nova\ _
Standards\makros\" & ActiveCell.Offset(0, 1); """"
'usw.
Close #1
End Sub
Beste Grüße,
Sergej

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren der Datei mit Änderung von Attr
12.06.2020 16:49:22
Attr
Hallo Sergej,
das Makro zum Erstellen der cmd-Datei (Textdatei) könnte man auch in die folgende Form bringen.
Das wird aber nichts daran ändern wie lange die Ausführung der Datei daurt, um die Dateien zu kopieren und die Dateiattribute anzupassen.
LG
Franz
Sub START_MAKROS()
Dim strFile As String
Dim strZelle As String, strZelleOffset As String
Dim arrO() As String, iO
Dim strpfad As String
strZelle = ActiveCell.Text
strZelleOffset = ActiveCell.Offset(0, 1).Text
ReDim arrO(1 To 3) '3 entsprechend der ANzahl der Ordner anpassen
iO = 0
iO = iO + 1: arrO(iO) = "DE-WUP01"
iO = iO + 1: arrO(iO) = "DE-KAM16"
iO = iO + 1: arrO(iO) = "DE-TES04"
'usw.
strFile = Environ("Temp") & "\" & Format(Now, "YYYY-MM-DD_HH_MM_SS") & "_copy.cmd"
Open strFile For Output As #1
Print #1, "color  17"
Print #1, "chcp 65001"
Print #1, "cls"
For iO = 1 To UBound(arrO)
strpfad = "P:\Daten\" & arrO(iO) & "\Einstellungen\Nova\Standards\makros\"
Print #1, "attrib -r -s -h /S /D "; """"; strpfad & strZelleOffset; """"
Print #1, "xcopy "; """"; strZelle; """"; " "; """"; strpfad; """"; " /Y"
Print #1, "attrib +r +s +h /S /D "; """"; strpfad & strZelleOffset; """"
Next
Close #1
End Sub

Anzeige
AW: Kopieren der Datei mit Änderung von Attr
13.06.2020 09:39:38
Attr
Einen wunderschönen guten Morgen Franz,
dein Code gefällt mir sehr gut (übersichtlich).
Wie kann ich bitte beim Ausführen des Makros, abfragen, ob alle Standorte (iO) abgearbeitet werden sollen oder nur ein Standort den man auswählt oder in einem Inputbox oder ähnliches eintippt (Bsp. DE-KAM16).
Beste Grüße,
Sergej
AW: Kopieren der Datei mit Änderung von Attr
13.06.2020 10:53:28
Attr
Hallo Sergej,
ich hab dir mal 2 Varianten für die Standort-Auswahl erstellt.
Variante 1: eingegeben wird der Name
Variante 2: Auswahl über eine Nummer in der Liste der angezeigten Standorte. Diese funktioniert bis ca. 40 Standorte
LG
Franz

Sub START_MAKROS_Variante_1()
Dim strFile As String
Dim strZelle As String, strZelleOffset As String
Dim arrO() As String, iO
Dim strpfad As String
Dim varAuswahl
strZelle = ActiveCell.Text
strZelleOffset = ActiveCell.Offset(0, 1).Text
ReDim arrO(1 To 3) '3 entsprechend der ANzahl der Ordner anpassen
iO = 0
iO = iO + 1: arrO(iO) = "DE-WUP01"
iO = iO + 1: arrO(iO) = "DE-KAM16"
iO = iO + 1: arrO(iO) = "DE-TES04"
'usw.
varAuswahl = InputBox("Welcher Standort soll aktualisiert werden?" & vbLf & vbLf _
& "Bitte Groß-/Kleinschreibung beachten!", _
"Standort-Aktualisierung", "ALLE")
If varAuswahl = "" Then Exit Sub
'Prüfen, ob gültiger Standort eingegeben wurde
If varAuswahl  "ALLE" Then
For iO = 1 To UBound(arrO)
If varAuswahl = arrO(iO) Then Exit For
Next
If iO = UBound(arrO) + 1 Then
If MsgBox("Der eingegebene Standort """ & varAuswahl _
& """ ist nicht in Liste vorhanden!", vbRetryCancel, _
"Standort-Auswahl") = vbCancel Then
Exit Sub
Else
GoTo Auswahl
End If
End If
End If
strFile = Environ("Temp") & "\" & Format(Now, "YYYY-MM-DD_HH_MM_SS") & "_copy.cmd"
Open strFile For Output As #1
Print #1, "color  17"
Print #1, "chcp 65001"
Print #1, "cls"
For iO = 1 To UBound(arrO)
If varAuswahl = arrO(iO) Or varAuswahl = "ALLE" Then
strpfad = "P:\Daten\" & arrO(iO) & "\Einstellungen\Nova\Standards\makros\"
Print #1, "attrib -r -s -h /S /D "; """"; strpfad & strZelleOffset; """"
Print #1, "xcopy "; """"; strZelle; """"; " "; """"; strpfad; """"; " /Y"
Print #1, "attrib +r +s +h /S /D "; """"; strpfad & strZelleOffset; """"
End If
Next
Close #1
End Sub
Sub START_MAKROS_Variante_2()
Dim strFile As String
Dim strZelle As String, strZelleOffset As String
Dim arrO() As String, iO
Dim strpfad As String
Dim varAuswahl, sMsg As String
strZelle = ActiveCell.Text
strZelleOffset = ActiveCell.Offset(0, 1).Text
ReDim arrO(1 To 3) '3 entsprechend der Anzahl der Standorte anpassen
iO = 0
iO = iO + 1: arrO(iO) = "DE-WUP01"
iO = iO + 1: arrO(iO) = "DE-KAM16"
iO = iO + 1: arrO(iO) = "DE-TES04"
'usw.
sMsg = "Standort-Auswahl"
For iO = 1 To UBound(arrO)
sMsg = sMsg & vbLf & iO & " - " & arrO(iO)
Next
sMsg = sMsg & vbLf & "99 = ALLE" & vbLf & "Bitte Nummer eingeben"
Auswahl:
varAuswahl = Val(InputBox(sMsg, "Standort-Auswahl", 99))
Select Case varAuswahl
Case 0 'Abbgebrochen
Exit Sub
Case 99, 1 To UBound(arrO)
Case Else
If MsgBox("Unzulässige Zahl wurde eingegeben", _
vbRetryCancel, "Standort-Auswahl") = vbCancel Then
Exit Sub
Else
GoTo Auswahl
End If
End Select
strFile = Environ("Temp") & "\" & Format(Now, "YYYY-MM-DD_HH_MM_SS") & "_copy.cmd"
Open strFile For Output As #1
Print #1, "color  17"
Print #1, "chcp 65001"
Print #1, "cls"
For iO = 1 To UBound(arrO)
If varAuswahl = iO Or varAuswahl = 99 Then
strpfad = "P:\Daten\" & arrO(iO) & "\Einstellungen\Nova\Standards\makros\"
Print #1, "attrib -r -s -h /S /D "; """"; strpfad & strZelleOffset; """"
Print #1, "xcopy "; """"; strZelle; """"; " "; """"; strpfad; """"; " /Y"
Print #1, "attrib +r +s +h /S /D "; """"; strpfad & strZelleOffset; """"
End If
Next
Close #1
End Sub

Anzeige
AW: Kopieren der Datei mit Änderung von Attr
13.06.2020 11:03:02
Attr
Hallo Franz,
vielen herzlichen Dank.
Ich habe beide Varianten getestet:
Variante 1: Das Makro bleibt hier "GoTo Auswahl" stehen. Soll ich dies auskommentieren oder fehlt mir etwas?
Variante 2: Funktioniert perfekt
Beste Grüße,
Sergej
AW: Kopieren der Datei mit Änderung von Attr
13.06.2020 11:33:37
Attr
Hallo Sergej,
ich hab das Makro getestet, es läuft bei mir ohne Probleme.
Bei falsch eingegebenem Standort soll das Makro hier ggf. zurückspringen zur Eingabe.
Fehlt bei dir evtl die Zeile
Auswahl:

vor der Anzeige der Inputbox?
LG
Franz
AW: Kopieren der Datei mit Änderung von Attr
13.06.2020 11:43:02
Attr
Hallo Franz,
genau die Zeile "Auswahl:" hat gefehlt. Jetzt geht es ;-)
Beste Grüße,
Sergej
Anzeige

202 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige