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.

Platzhalter erkennen
#11
Hi Marcus,

das ist das Tolle an MS. Next ohne For bedeutet auch oft If ohne End if wie in diesem Fall ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#12
Hallo André,

toll wäre wenn MS mich verstehen würde.
Das mit dem "End If" stimmt wohl. Aber es werden mir nur aus dem ersten Link 3 Files gezählt. Angezeigt wird mir aber nichts. Ich mache für heute
Schluss. Morgen versuche ich es wieder. Durch meinen Depressionen bin ich wieder überfordet. Bis Morgen!

Gruß
Marcus

Wissen ist Macht - es ist aber nicht schlimm nicht alles zu wissen.
Man muss nicht alles wissen - man muss nur wissen wo es steht, oder wo man Hilfe bekommt.
Antworten Top
#13
Hallo und guten Morgen,

so - ich bin schon ein Stück weiter. Allerdings stimmt da noch immer etwas nicht. Folgendes Problem:
Ich habe 3 Pfade eingestellt. Die Sollen auch in 3 Spalten anezeigt werden. Das macht der Code zwar, aber doppelt und durcheinander.


Zitat:Microsoft Excel Objekt Tabelle6
Option Explicit 

Sub Dateinmen_auflisten()
Dim x As Integer
Dim y As Integer
Dim StrAnzahl As Variant
Dim strPfad(3) As Variant
Dim FSO As Object
Dim strGef As Object
Dim strext As String
strext = ".xls"
strPfad(1) = "C:\02_Excel\06_Excel_allgemein\"
strPfad(2) = "C:\02_Excel\07_Forumsarbeiten\"
strPfad(3) = "c:\100_Test\"
y = 1
'Application.ScreenUpdating = False
UsedRange.Clear
For x = 1 To 3
        For StrAnzahl = 1 To x
            Set FSO = CreateObject("Scripting.FilesystemObject")
                For Each strGef In FSO.getfolder(strPfad(x)).Files
                    If LCase(FSO.getextensionname(strGef)) Like (strext) Then
                        'y = y + 1
                    End If
                    y = y + 1
            Cells(y, StrAnzahl) = strGef
                ActiveSheet.Hyperlinks.Add Anchor:=Cells(y, StrAnzahl), Address:= _
    strGef, TextToDisplay:=strGef.Name
        Next
Next
Next
'Application.ScreenUpdating = True
End Sub

    'x = x + 1
    'ActiveSheet.Hyperlinks.Add Anchor:=Cells(x, 1), Address:= _
    'strGef, TextToDisplay:=strGef.Name



Könnte vielleicht noch mal jemand über den Code schauen?

Gruß
Marcus

Wissen ist Macht - es ist aber nicht schlimm nicht alles zu wissen.
Man muss nicht alles wissen - man muss nur wissen wo es steht, oder wo man Hilfe bekommt.
Antworten Top
#14
Moin Marrcus,

insbesondere das End If war verkehrt und eine Schleife zu viel. Hier mal der korrigierte und kommentierte Code. Ich schreib die Kommentare meist für jede Zeile. Ist zwar nicht immer und unbedingt nötig, aber anderererseits Smile sieht man zuweilen etwas besser durch und was man will und wozu es gehört. Man könnte sogar erst mal in Kommentaren programmieren und dann schauen, wie der zugehörige Code genau auszusehen hat.
Man könnte z.B. auch die Pfade auf dem Blatt in Zeile 1 eintragen und von dort in den Code übernehmen oder zumindest verarbeiten, dann wäre das makro recht flexibel.

Code:
Sub Dateinmen_auflisten()
'Variablendeklarationen
Dim x As Integer, y As Integer
Dim StrAnzahl As Variant, strPfad(3) As Variant
Dim FSO As Object, strGef As Object
Dim strext As String
'Erweiterung festlegen
strext = "xlsx"
'Pfade festlegen. Alternativ Array aus Zelleintraegen bilden?
strPfad(1) = "C:\02_Excel\06_Excel_allgemein\"
strPfad(2) = "C:\02_Excel\07_Forumsarbeiten\"
strPfad(3) = "c:\100_Test\"
'Application.ScreenUpdating = False
'benutzten bereich leeren
ActiveSheet.UsedRange.Clear
'Schleife ueber Arrayeintraege, bei Zellbereich Ubound verwenden
For x = 1 To 3
  'Zeilenzaehler auf 1 setzen
  y = 1
  'FSO initialisieren
  Set FSO = CreateObject("Scripting.FilesystemObject")
  'Schleife ueber alle Files eines Pfades
  For Each strGef In FSO.getfolder(strPfad(x)).Files
    'Wenn die extension stimmt, dann
    If LCase(FSO.getextensionname(strGef)) Like (strext) Then
      'Zeilenzaehler hochsetzen
      y = y + 1
      'Dateiname eintragen
      Cells(y, x) = strGef
      'Hyperlink bilden
      ActiveSheet.Hyperlinks.Add Anchor:=Cells(y, x), Address:= _
      strGef, TextToDisplay:=strGef.Name
    'Ende Wenn die extension stimmt, dann
    End If
  'Ende Schleife ueber alle Files eines Pfades
  Next
'Ende Schleife ueber Arrayeintraege, bei Zellbereich Ubound verwenden
Next
'Application.ScreenUpdating = True
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • marose67
Antworten Top
#15
Hallo André,
schon Brötchen geholt?

Danke für die eingefügten Erläuterungen. Damit werde ich das besser Nachvollziehen können. Ich werde mir das ganz genau anschauen und mit meinem Code vergleichen. Wäre doch gelacht, wenn ich daraus nicht etwas lernen könnte.

Danke vielmals und einen schönen Sonntag

Marcus

Hallo André,

dank deiner Hilfe habe ich es hinbekommen, so wie ich es mir vorstelle. Danke!!!!!!!! :100:

Wissen ist Macht - es ist aber nicht schlimm nicht alles zu wissen.
Man muss nicht alles wissen - man muss nur wissen wo es steht, oder wo man Hilfe bekommt.
Antworten Top


Gehe zu:


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