Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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)
Registriert seit: 11.04.2014
Version(en): Office 2003 - Office 2007 - Office 365
08.02.2020, 14:15
(Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2020, 14:16 von marose67.)
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.
Registriert seit: 11.04.2014
Version(en): Office 2003 - Office 2007 - Office 365
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 Tabelle6Option 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.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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

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:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• marose67
Registriert seit: 11.04.2014
Version(en): Office 2003 - Office 2007 - Office 365
09.02.2020, 10:32
(Dieser Beitrag wurde zuletzt bearbeitet: 09.02.2020, 10:32 von marose67.)
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.