Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Excel 2016 VBA Dateiliste aus Excel in Laufwerk Verzeichnisse vergleichen und Hyperlinks generieren bei gefunden und kopieren

Mitglied: RogerSchnufi

RogerSchnufi (Level 1) - Jetzt verbinden

12.10.2019 um 13:18 Uhr, 212 Aufrufe, 4 Kommentare

Hallo Zusammen,

ich benötige dringend eure Unterstützung, ich kaum VBA Erfahrung habe. Ich benutze Excel 2016.

Ich habe ein Excel mit einer Spalte ab Zelle A5 mit tausenden von Dateiennamen, welche nun in mehreren Laufwerken oder in bestimmten Verzeichnissen (inkl deren Unterverzeichnisse) suchen möchte.

Sozusagen so
etnweder die Dateiname suche in den Laufwerkern A und C oder auch in Laufwerk C innerhalb eines bestimmten Vereichnisses suchen, dabei alle darin enthaltenen Unterverzeichnisse mitberücksichtigenl.

Die allfällige gefundenen Dateien in einem LW/Verzeichnisse soll dann in der Spalte E mit einer URL (Laufwerk/Verzeichnis/Unterverzeichnissenamen) hinzugefügt werden.

Diese gefundene Datei soll dann zusätliche in ein bestimmtes zusätliches Verzeichnis kopiert oder verschoben werrden.

Gruss, Roger
Mitglied: nc6400
LÖSUNG 12.10.2019, aktualisiert um 17:06 Uhr
Zitat von RogerSchnufi:
ich benötige dringend eure Unterstützung, ich kaum VBA Erfahrung habe. Ich benutze Excel 2016.
Dringend wollen viele, ohne ein Minimum an Code was du schon probiert hast hat das doch ein Gschmäkle ala macht mir doch bitte meine Arbeit die ich angenommen habe obwohl ich keine Ahnung davon habe.
Sozusagen so
etnweder die Dateiname suche in den Laufwerkern A und C oder auch in Laufwerk C innerhalb eines bestimmten Vereichnisses suchen, dabei alle darin enthaltenen Unterverzeichnisse mitberücksichtigenl.
Check.
Die allfällige gefundenen Dateien in einem LW/Verzeichnisse soll dann in der Spalte E mit einer URL (Laufwerk/Verzeichnis/Unterverzeichnissenamen) hinzugefügt werden.
"Allfällige"? Fallen die aus dem All oder was? Was soll passieren wenn mehr wie eine Datei gefunden wurde ?? Nebeneinander, untereinander, kreuz und quer??
Diese gefundene Datei soll dann zusätliche in ein bestimmtes zusätliches Verzeichnis kopiert oder verschoben werrden.
Erneut, was soll passieren wenn mehrere Dateien dieses Namens gefunden wurden? Eine überschreibt die andere?? Neuer Dateiname/ neues Verzeichnis??

Also nochmal überdenken und dann nochmal ganz genau beschreiben.

p.s. Google würgen hilft übrigens auch am Samstag
https://stackoverflow.com/questions/30511217/optimize-speed-of-recursive ...
Bitte warten ..
Mitglied: RogerSchnufi
13.10.2019 um 09:16 Uhr
Hallo hey sorry, dass ich scheinbar nicht genügend klar ausgedrückt habe und sorry, dass ich kaum Ahnung habe. Das ist ja der Grund wieso ich mich melden.

Anyway, hier mehr detailliert

a) konfigurierbare Parameter ein Laufwerksbuchstaben oder bestimmtes Hauptverzeichnis jeweils Suche inkl. deren Unterverzeichnisse sowie ein Verzeichnis, welche die gefundene Datei kopiert werden soll.

Ich gehe aus Performance Gründen davon aus, es ist einfacher zuerst alle Dateien aus den obigen Laufwerken/Verzeichnisse auslesen und dann erst mit der eigentlichen Dateiliste zu vergleichen, somit

1. Suche alle Dateien in den obigen parametersierten Laufwerken/Verzeichnisse
2. Vergleiceh die gefundenen Dateinamen mit dereren Dateinamen in der Tabelle "Dateiliste" ab A6 bis zum Ende (ca. 15'000 Dateien)

2.1. sind beiden Dateinamen gleich, dann in der Spalten E auf der gleichen Zeile ein Hyperlink des Verzeichnisses generieren
2.2. kopiere oder verschiebe (ggf. auch parametriesierbar) die gefunden Datei in ein parametrisieres Verzeichnis (siehe a)
2.3. schreib dann auch in der Spalte F den Hyperlink mit dem Verzeichnigs/Dateinamen des neuen Ortes
2.4. sind allfällilge doppelte Dateinamen gefunden worden und ist zuvor bereits eine kopiert/verschoeben worden, also die Spalte F bereits befüllt, dann nichts unternehmen (sollte eigentlich nur 1 mal vorkommen)

ist das nun ausführlicher?
Bitte warten ..
Mitglied: RogerSchnufi
13.10.2019 um 10:07 Uhr
Habe diesen Code aber folgende Probleme

a) es werden nicht alle Unterverzeichnisse aufgerufen sonder nur auf einem Unterverzeichnis, es sind aber viele weitere unter unter unter verzeichnisse Ebenen vorhanden


Sub Beispielaufruf_fListFiles_Versuch1()

Dim sourceFolder As String
sourceFolder = "C:\temp\Testverzeichnis\Source"

fListFilesTest sourceFolder, True, , "*"

End Sub

Sub fListFilesTest(ByVal sPath As String, _
Optional ByVal bSubfolders As Boolean = False, _
Optional ByVal sFilenameFilter As String = "*", _
Optional ByVal sExtensionFilter As String = "*")

Dim oFS As Object
Dim oFolder As Object
Dim oSubfolder As Object
Dim oFile As Object

Dim targetFolder As String
targetFolder = "C:\temp\Testverzeichnis\Traget\"

Set oFS = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFS.GetFolder(sPath)
For Each oFile In oFolder.Files

If oFile.Name Like sFilenameFilter & "." & sExtensionFilter Then

' ' Dateiendung
' Debug.Print oFS.GetExtensionName(oFile)

' ' Dateiname
' Debug.Print oFS.GetBaseName(oFile)

' ' Laufwerksname
' Debug.Print oFS.GetDriveName(oFile)

' gesamter Pfad
Debug.Print oFile.Path

' ' Pfad
' Debug.Print oFile.ParentFolder

' Dateiname + Endung
Debug.Print oFile.Name

End If

i = 1
iT = 1

BisEndeSpalteA = (ThisWorkbook.Sheets("Dateiliste").Cells(1048576, 1).End(xlUp).Row - 6)
For iT = 1 To BisEndeSpalteA

Debug.Print "Vergleiche S: " & oFile.Name
Debug.Print "Vergleiche T: " & ThisWorkbook.Sheets("Dateiliste").Range("A6").Offset(iT, 0).Value

If ThisWorkbook.Sheets("Dateiliste").Range("A6").Offset(i, 0).Value = oFile.Name Then

'gefundene Dateinamen ab B6 einfügen
ThisWorkbook.Sheets("Dateiliste").Range("B6").Offset(i, 0) = oFile.Name

'gefundenes Verzeichnis ab C6 einfügen
ThisWorkbook.Sheets("Dateiliste").Range("C6").Offset(i, 0) = oFile.Path

'Hyperlink der gefundenen Datei und Verzeichnis ab D6 erstellen
With Worksheets("Dateiliste")
.Hyperlinks.Add Anchor:=.Range("D6").Offset(i, 0), _
Address:=oFile.Path, _
ScreenTip:="Teste URL", _
TextToDisplay:=oFile.Name
End With

'Alternativ verschieben
'oFS.movefile oFile.Path, targetFolder & oFile.Name
'Alternativ kopieren
oFS.copyfile oFile.Path, targetFolder & oFile.Name, True
'Debug.Print "Kopiert nach: " & targetFolder & oFile.Name

End If
i = i + 1
Next iT
Next

If bSubfolders Then
For Each oSubfolder In oFolder.SubFolders
fListFiles oSubfolder
Next
End If

Set oFile = Nothing
Set oSubfolder = Nothing
Set oFolder = Nothing
Set oFS = Nothing
End Sub
Bitte warten ..
Mitglied: RogerSchnufi
13.10.2019 um 11:01 Uhr
Sub SucheVergleich()

Dim sourceFolder As String
sourceFolder = "C:\temp\Testverzeichnis\Source"

'Call ClearImmediateWindow

'fListFilesTest sourceFolder, True, , "*"
fListFilesTest sourceFolder, True

End Sub
Sub ClearImmediateWindow()
Application.VBE.Windows("Direktbereich").Visible = True
Application.VBE.Windows("Direktbereich").SetFocus
SendKeys "^{HOME}+^{END}{DEL}", False
End Sub

Sub fListFilesTest(Optional ByVal sPath As String, _
Optional ByVal bSubfolders As Boolean = False, _
Optional ByVal sFilenameFilter As String = "*", _
Optional ByVal sExtensionFilter As String = "*")

'Sub fListFilesTest(ByVal sPath As String, _
' Optional ByVal bSubfolders As Boolean = False, _
' Optional ByVal sFilenameFilter As String = "*", _
' Optional ByVal sExtensionFilter As String = "*")

'sPath = "C:\temp\Testverzeichnis\Source"

Dim oFS As Object
Dim oFolder As Object
Dim oSubfolder As Object
Dim oFile As Object

Dim targetFolder As String
targetFolder = "C:\temp\Testverzeichnis\Target\"

Set oFS = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFS.GetFolder(sPath)
For Each oFile In oFolder.Files

If oFile.Name Like sFilenameFilter & "." & sExtensionFilter Then

Debug.Print "-----------------"
Debug.Print "Datei in LW gefunden"

' ' Dateiendung
' Debug.Print oFS.GetExtensionName(oFile)

' ' Dateiname
' Debug.Print oFS.GetBaseName(oFile)

' ' Laufwerksname
' Debug.Print oFS.GetDriveName(oFile)

' gesamter Pfad
Debug.Print oFile.Path

' ' Pfad
' Debug.Print oFile.ParentFolder

' Dateiname + Endung
Debug.Print oFile.Name
Debug.Print "-----------------"

End If

Call Vergleich(oFile.Name, oFile.Path, targetFolder)

Next

If bSubfolders Then
For Each oSubfolder In oFolder.SubFolders
'Call Vergleich("test", oFolder.SubFolders, targetFolder)
fListFiles oSubfolder
Next
End If

Set oFile = Nothing
Set oSubfolder = Nothing
Set oFolder = Nothing
Set oFS = Nothing
End Sub

Sub Vergleich(fileName As String, filePath As String, Optional targetFolder As String)

Dim oFS As Object
Set oFS = CreateObject("Scripting.FileSystemObject")

i = 1
iT = 1

BisEndeSpalteA = (ThisWorkbook.Sheets("Dateiliste").Cells(1048576, 1).End(xlUp).Row - 6)
For iT = 1 To BisEndeSpalteA

Debug.Print "Vergleiche S: " & fileName
Debug.Print "Vergleiche T: " & ThisWorkbook.Sheets("Dateiliste").Range("A6").Offset(iT, 0).Value

If ThisWorkbook.Sheets("Dateiliste").Range("A6").Offset(i, 0).Value = fileName Then

'gefundene Dateinamen ab B6 einfügen
ThisWorkbook.Sheets("Dateiliste").Range("B6").Offset(i, 0) = fileName

'gefundenes Verzeichnis ab C6 einfügen
ThisWorkbook.Sheets("Dateiliste").Range("C6").Offset(i, 0) = filePath

'Hyperlink der gefundenen Datei und Verzeichnis ab D6 erstellen
With Worksheets("Dateiliste")
.Hyperlinks.Add Anchor:=.Range("D6").Offset(i, 0), _
Address:=filePath, _
ScreenTip:="Teste URL", _
TextToDisplay:=fileName
End With

'Alternativ verschieben
'oFS.movefile oFile.Path, targetFolder & oFile.Name
'Alternativ kopieren
oFS.copyfile filePath, targetFolder & fileName, True

Debug.Print "---------------------------------------"
Debug.Print "Kopiert nach: " & targetFolder & fileName
Debug.Print "---------------------------------------"

'MsgBox "Gefunden: " & targetFolder & fileName

'TARGET - kopiertes Verzeichnis ab E6 einfügen
ThisWorkbook.Sheets("Dateiliste").Range("E6").Offset(i, 0) = targetFolder

'TARGET - Hyperlink der kopierten Datei und Verzeichnis ab F6 erstellen
With Worksheets("Dateiliste")
.Hyperlinks.Add Anchor:=.Range("F6").Offset(i, 0), _
Address:=targetFolder, _
ScreenTip:="Teste URL", _
TextToDisplay:=fileName
End With

End If
i = i + 1
Next iT
End Sub
Bitte warten ..
Ähnliche Inhalte
Microsoft Office

Excel VBA Vergleich von Tabellenbereichen

gelöst Frage von BaseBubbleMicrosoft Office3 Kommentare

Hallo in die Runde! Ich bin noch nicht so sehr fit mit VBA und stehe gerade etwas auf dem ...

VB for Applications

InStr - Vergleich schlägt fehl (Excel VBA)

gelöst Frage von MrCountVB for Applications2 Kommentare

Servus zusammen, ich habe hier ein kleines Excel-VBA Problem: Ausgangslage: Wert aus Zelle (x,y) wird in Variable "Wert" gespeichert. ...

Microsoft Office

Excel Tabellen Vergleich

gelöst Frage von Dr.CornwallisMicrosoft Office1 Kommentar

Liebe Gemeinde, ich habe einen VBA Code, dieser vergleicht eine Spalte mit anderen Spalten aus anderen Blättern. Verglichen wird ...

Visual Studio

Aus Excel Hyperlink eine Verknüpfung erstellen

gelöst Frage von KnuefiVisual Studio14 Kommentare

Hallo zusammen, ich benötige euren Fachmänischen Rat. Ich habe eine Excel Liste mit Namen mit einen Hyperlink bzw. Pfad ...

Neue Wissensbeiträge
Firewall
Übernahme von SOPHOS durch Thoma Bravo
Information von Dilbert-MD vor 9 StundenFirewall1 Kommentar

Kam die Tage per Newsletter: Zitat: " Das Sophos Board of Directors hat gestern bekanntgegeben, dass die Private-Equity-Investment-Firma Thoma ...

Windows Netzwerk

Ereignis-ID 20226 RasClient Ursachencode 829 VPN Verbindung wird abgebrochen

Anleitung von Hardstyles vor 6 TagenWindows Netzwerk

Hallo zusammen, nach Stundenlanger Analysen und test konnten wir den Fehler Lösen. es geht um folgende Fehler Meldung in ...

Windows 10

Windows 10 Version 1903: Update KB4522015 blockt VMware Workstation

Information von kgborn vor 10 TagenWindows 10

Nur eine kurze Information für Leute, die schon Windows 10 Version 1903 in Betrieb haben und dort VMware Workstation ...

VB for Applications

Fritzbox Telefonbuch - XML-Importdatei aus Excel erstellen

Tipp von PeterleB vor 10 TagenVB for Applications1 Kommentar

Das Thema geistert schon seit Jahren durch verschiedene Foren. Habe mich jetzt mal damit etwas intensiver befasst und hoffe, ...

Heiß diskutierte Inhalte
Switche und Hubs
24 Rasperry PI vernetzen, was nimmt man da?
gelöst Frage von clkdivSwitche und Hubs25 Kommentare

Hallo, ich möchte 24 Raspberries vernetzen. Bis jetzt waren es 4 Stück, ich habe dafür einen cheap-o-cheap Edimax-Hub benutzt, ...

LAN, WAN, Wireless
Hausnetzwerk mit Routern
Frage von perhaps-labs.comLAN, WAN, Wireless22 Kommentare

Hallo an Alle, ich habe ein Riesenhaus erworben und möchte nun überall ein Netzwerk dafür installieren. Das Haus hat ...

E-Mail
Optionen des Mails-Empfangs
Frage von SchauerE-Mail19 Kommentare

Hallo an Alle. ich habe die Aufgabe bekommen zu recherchieren, welche Optionen sich anbieten Mails zu empfangen. Klingt banal, ...

Firewall
Welche Anbieter, Geräte und Programme gelten als sicher?
Frage von NordicMikeFirewall16 Kommentare

Moin zusammen, wenn man sich die vielen Sicherheitslösungungen ansieht, erkenn man nicht, auf was man sich einlassen würde. Man ...