Hallo,
ich hab da ein Problem, wo ich nicht weiterkomme. Ob es an der Schwierigkeit oder daran liegt, daß ich das Einfache übersehe, kann ich nicht sagen, aber auch die SuFu gab keinen Treffer.
Ich habe in einem Ordner ein Verzeichnis, welches als Name die jeweilige Jahreszahl (z.B. 2017) trägt. in diesem Verzeichnis sind unter Umständen mehrere Verzeichnisse mit dem Erstellungsdatum als Name (z.B. 0405 - für 5.April). Wenn bei Jahreswechsel automatisch das neu erstellte Verzeichnis (z.B. 2018) genommen wird, wäre super, aber ließe sich sicher auch per Hand ändern, wenn der Rest erst einmal klappt...
mein Ziel war/ist, daß in meiner Tabelle dieser Name (z.B. 0405) automatisch eingeblendet wird. Dieser Verzeichnisname (z.B. 0405) sollte dann wie eine Zahl behandelt werden.
Dann mit dem aktuellen Datum verglichen werden und das Ergebnis (Differenz in Tagen) in einer anderen Zelle abgelegt werden. Je nach Größe der Zahl (Differenz in Tagen), sollte das Feld mit dem Ergebnis zusätzlich noch eingefärbzt werden.
Letzteres würde ich selbst über die bedingte Formatierung hinbekommen, aber an den ersten Schritten scheitere ich...
Wer kann mir den passenden Denkanstoß geben, oder gar eine Lösung nennen ?
MfG
Hallo,
bin in den Weiten der virtuellen Welt fündig geworden, aber ein (kleines?) Restproblem bleibt...
Die folgenden Zeilen:
Code:
Sub Main()
Dim strStartPath As String, lngZeile As Long, intLevel As Integer, objFS As Object, objFolder As Object
strStartPath = "Lw:\Pfadangabe\"
lngZeile = 1
intLevel = 1
Set objFS = CreateObject("scripting.filesystemobject")
Set objFolder = objFS.GetFolder(strStartPath)
Tree objFolder, lngZeile, intLevel
Set objFolder = Nothing
Set objFS = Nothing
End Sub
Sub Tree(ByVal objFolder As Object, ByRef lngZeile As Long, ByVal intLevel As Integer)
Dim objSubFolder As Object
For Each objSubFolder In objFolder.subfolders
Cells(lngZeile, intLevel).Value = objSubFolder.Name
lngZeile = lngZeile + 1
Tree objSubFolder, lngZeile, intLevel + 1
Next
End Sub
...machen genau das, was ich brauche. Ab der Pfadangabe werden die tieferen Verzeichnisse jeweils um eine Spalte versetzt angezeigt. Da ich aus der letzten Verzeichnisebene je Startverzeichnis, den Max-Wert benötige, müßten dort 5 Zellen festgelegt sein, auch wenn zur Zeit nur 2 Verzeichnisse vorhanden wären, da es sonst mit der Max-Wert-Erfassung zu Verschiebungen käme und diese dann Verzeichnisübergreifend sein könnten.
Beispiel:
HV = HauptVerzeichnis
UV = UnterVerzeichnis
UUV - Verzeichnisse im Unterverzeichnis
SA = Spalte A
Z1 = Zeile 1
Eingelesen wurden
1.HV SA/Z1
1.UV SB/Z2
1.UUV SC/Z3
2.UUV SC/Z4
2.HV SA/Z5
1.UV SB/Z6
1.UUV SC/Z7
2.UUV SC/Z8
Da es 4 - 5 UUV geben kann, sollten diese 5 Möglichkeiten zumindest als leere Zellen eingeplant werden, damit es bei der Auswertung der Spalte C nicht zu falschen Ergebnissen kommt.
Das 1.UV trägt momentan den Namen 2017 und die vorhandenen UUV die Namen 111 und 403 (1.UUV am 11.Januar und das 2.UUV am 3.April erstellt). Nun sollte aus dem Block der 5 Zellen in Spalte C des jeweiligen UV die höchste Zahl mit dem aktuellen Datum verglichen werden und dann den Hintergrund der dazu gewählten Zelle, je größer der Abstand wird, von Grün in Gelb und dann in Rot einfärben.
Letzteres sollte mir mit der bedingten Formatierung gelingen, aber was das Vorhalten der 5 Zellen für die UUV angeht, da hab ich keinen Plan...
MfG
(06.04.2017, 07:26)steve1da schrieb: [ -> ]Hola,
zur Info...
http://ms-office-forum.net/forum/showthr...p?t=341591
Gruß,
steve1da
Ich weiß, daß ich meine Frage in zwei Foren gestellt habe...
1. was soll mir Dein Hinweis sagen?
2. Wie trägt er zur Lösung meines Problems bei?
3. Ich dacht es geht in den Foren darum, sein Wissen mit anderen zu teilen, oder geht es nur darum, die Zahl der "Beiträge" zu erhöhen...?
MfG
(06.04.2017, 07:43)IRATA schrieb: [ -> ]Ich weiß, daß ich meine Frage in zwei Foren gestellt habe...
1. was soll mir Dein Hinweis sagen?
2. Wie trägt er zur Lösung meines Problems bei?
3. Ich dacht es geht in den Foren darum, sein Wissen mit anderen zu teilen, oder geht es nur darum, die Zahl der "Beiträge" zu erhöhen...?
MfG
Ich beging das Vergehen, meine Frage in 2 Foren zu stellen... - ich hoffe mal, daß das, wenn ich mal ein neues Auto brauche, bei den Händlern nicht dazu führt, daß ich keines bekomme...
Hallo
Spielregeln sind in Ordnung und manchmal sogar sinnvoll. Da es aber meist mehrere Lösungsansätze gibt, ist es oft hilfreich, auch diese zu erfahren und zu vergleichen.
Noch viel sinnvoller ist es, sich mehrere Meinungen aus unterschuedlichen Informationsquellen zu besorgen, sonst könnte es, wie im realen Leben zu Fehlinformationen kommen und diese dann noch als "Wissen" weitergegeben werden...
Künftig werde ich versuchen, selbst darauf hinweisen, ob und wo ich meine Fragen schon gestellt hab...
MfG
Hallo noch mal
Ich hatte es ja selbst schon geschrieben, daß ich künftig versuchen werde, es hinzuzufügen, wo und was ich auch anderswo erfragt habe.
Ein Schmunzeln kann ich mir allerdings nicht verkneifen, wenn ich versuche den Sinn zu erkennen, warum sich von den Kommentaren (in beiden Foren) kein einziger auch nur im Ansatz mit der Lösung meines Problems befaßt...
Wer meint, für eine andere Meinung/Sichtweise die Blockieren-Liste füllen zu müssen, ich bin so tolerant, dies als andere Meinung/Sichtweise zu akzeptieren und gelten zu lassen...
Nun soll es aber auch gut sein, denn mit dem Thema hat das überhaupt nicht mehr zu tun und die Grundsatzfragen wurden geklärt.
MfG
Hi,
reicht es nicht einfach den letzten erstellten Ordner auszulesen?
Code:
Sub FolderLastCreated()
Dim strStartPath As String, objFS As Object, objFolder As Object
Dim d_FolderLastCreated As String
'Anpassen
'*****************************************
strStartPath = "c:\dein\Pfad\"
'********************************************
Set objFS = CreateObject("scripting.filesystemobject")
Set objFolder = objFS.GetFolder(strStartPath)
d_FolderLastCreated = myTree(objFolder)
MsgBox "Im Verzeichnis: " & strStartPath & " heißt der letzte erstellte Order: " & Split(d_FolderLastCreated, "#")(1) & " erstellt am : " _
& Split(d_FolderLastCreated, "#")(0)
Set objFolder = Nothing
Set objFS = Nothing
End Sub
Function myTree(ByVal objFolder As Object)
Static vDate As Date
Static sFolder
Dim objSubFolder As Object
For Each objSubFolder In objFolder.subfolders
If objSubFolder.DateCreated > vDate Then
sFolder = objSubFolder.Name
vDate = objSubFolder.DateCreated
End If
myTree objSubFolder
Next
myTree = vDate & "#" & sFolder
End Function
oder wenn es unbedingt sein muss halt deinen "Wert" von dem Ordner
Code:
Option Explicit
Sub FolderLastCreated()
Dim strStartPath As String, objFS As Object, objFolder As Object
Dim d_FolderLastCreated As String
'anpassen
'*****************************************
strStartPath = "c:\dein\Pfad\"
'********************************************
Set objFS = CreateObject("scripting.filesystemobject")
Set objFolder = objFS.GetFolder(strStartPath)
d_FolderLastCreated = myTree(objFolder)
MsgBox "Im Verzeichnis: " & strStartPath & " heißt der letzte erstellte Order: " & Split(d_FolderLastCreated, "#")(1) & " mit Zahlenwert : " _
& Split(d_FolderLastCreated, "#")(0)
Set objFolder = Nothing
Set objFS = Nothing
End Sub
Function myTree(ByVal objFolder As Object)
Static vDate As Long
Static sFolder
Dim objSubFolder As Object
For Each objSubFolder In objFolder.subfolders
If Val(objSubFolder.Name) > vDate Then
sFolder = objSubFolder.Name
vDate = Val(objSubFolder.Name)
End If
myTree objSubFolder
Next
myTree = vDate & "#" & sFolder
End Function
Der letzt erstellter Ordner im Ordner 'G:\OF'
Code:
Sub M_snb()
MsgBox Split(CreateObject("wscript.shell").exec("cmd /c dir G:\OF\* /b/o-d/ad").stdout.readall, vbCrLf)(0)
End Sub