Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Name eines Verzeichnisses in Zelle übernehmen
#1
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
Antworten Top
#2
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
Antworten Top
#3
Hola,

zur Info...

http://ms-office-forum.net/forum/showthr...p?t=341591

Gruß,
steve1da
Antworten Top
#4
(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
Antworten Top
#5
(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
Antworten Top
#6
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.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Antworten Top
#7
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
Antworten Top
#8
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
Antworten Top
#9
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.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Antworten Top
#10
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
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste