Registriert seit: 21.04.2015
Version(en): 2010
05.04.2017, 09:35
(Dieser Beitrag wurde zuletzt bearbeitet: 05.04.2017, 09:35 von IRATA.)
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
Registriert seit: 21.04.2015
Version(en): 2010
06.04.2017, 06:55
(Dieser Beitrag wurde zuletzt bearbeitet: 06.04.2017, 07:28 von IRATA.
Bearbeitungsgrund: Makro in Codetags gesetzt
)
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
Registriert seit: 16.04.2014
Version(en): xl2016/365
Registriert seit: 21.04.2015
Version(en): 2010
(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
Registriert seit: 21.04.2015
Version(en): 2010
(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
Registriert seit: 14.04.2014
Version(en): Office 2013/2016/2019/365
Hallo IRATA
Vorab:
Ich habe gegen Crosspost nichts, wenn zumindest ein Hinweis dabeisteht das es dort oder dort auch hineingestellt wurde.
Nur kurz mein Senf dazu und meine Sichtweise.
Zitat: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...
Gerade das kann vollkommen schief gehen
was ich z.B immer zu hören bekomme ist folgendes:
warum soll ich nur in einem Forum fragen, wenn ich was haben will, werde ich doch auch Angebote einholen und nicht das erste Angebot wahrnehmen.
Damit ich einen besseren Überblick bekomme und um das Beste für mich herauszufiltern.
Stimmt, vollkommen und mache ich auch, wenn ich Angebote brauche.
Aber es kommt auf die Sichtweise an!!!
Das was in Foren geboten wird ist nicht vergleichbar mit Angeboten, sondern eine Dienstleistung auch wenn jetzt dafür kein Geld bezahlt wird, so wird zumindest Zeit aufgewendet.
Stelle Dir mal vor die möchtest etwas kaufen, bestellst du dann auch in mehreren Betrieben das Gleiche?, weil es könnte ja sein das einer der Betriebe schneller liefert und mit einem vielleicht sogar noch besserem Produkt.
Das ist dann jedem klar, dass dies nicht gemacht wird, denn das kostet ja Geld.
Oder angenommen du würdest in deiner Firma eine Hilfestellung benötigen und du schreibst an ALLE deine KollegenInnen die vielleicht helfen könnten ein Mail (als Blindkopie) mit Anhang deiner Liste, mit der Bitte um Hilfe..... (denn es wird ja schnell Hilfe benötigt.)
Was glaubst Du wird passieren, wenn du später mal wieder so ein Mail schreiben würdest?
Aber in Foren …………..macht ja nix, kostet ja auch nix.
lg Chris
Feedback nicht vergessen.
3a2920576572206973742064656e20646120736f206e65756769657269672e
Registriert seit: 21.04.2015
Version(en): 2010
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
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo,
mal als Ansatz
Code: Sub Tree(ByVal objFolder As Object, ByRef lngZeile As Long, ByVal intLevel As Integer)
Dim objSubFolder As Object
Dim lngC As Long
For Each objSubFolder In objFolder.subfolders
Cells(lngZeile, intLevel).Value = objSubFolder.Name
lngZeile = lngZeile + 1
Tree objSubFolder, lngZeile, intLevel + 1
' MsgBox objFolder.subfolders.Count
If intLevel = 3 And lngC < 5 And objFolder.subfolders.Count < 5 Then
Do Until lngC = 5
lngZeile = lngZeile + 1
lngC = lngC + 1
Loop
lngC = 0
End If
Next
End Sub
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 14.04.2014
Version(en): Office 2013/2016/2019/365
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
lg Chris
Feedback nicht vergessen.
3a2920576572206973742064656e20646120736f206e65756769657269672e
Registriert seit: 29.09.2015
Version(en): 2030,5
06.04.2017, 18:00
(Dieser Beitrag wurde zuletzt bearbeitet: 06.04.2017, 18:00 von snb.)
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
|