Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1696to1700
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Alle genutzten Spalten durchsuchen - VBA
12.06.2019 13:44:48
Marco
Hallo Zusammen,
ich habe gerade eine Blockade und bräuchte daher einmal Eure Hilfe.
Ich passe gerade ein Makro an. Dieses möchte ich gerne allgemein nutzbar machen. Den Pfad habe ich schon über einen Folder-Picker erweitert.
Momentan werden in allen xlsx-Dateien eines Verzeichnisses vorgegebene Spalten anhand der vorgegebenen Überschriften durchsucht.
Dieses möchte ich allerdings ändern, so dass alle genutzen Spalten durchsucht werden. Ich habe den Abschnitt entsprechend kommentiert.
Es wäre super, wenn jemand von Euch weiß wie ich die Stelle am besten ändern muss.
Danke und Viele Grüße
Marco
Sub SearchAndCopyData()
'Variablen
Dim fso As Object, strFind As String, wsTarget As Worksheet, file As Object, sh As  _
Worksheet, rngCol As Range, c As Range, firstAddress As String, dblKosten As String, strFolder As String, strHeader As Variant
'Ordner in dem sich die xlsx-Dateien befinden (im Beispiel der aktuelle Pfad in dem sich  _
diese Mappe befindet)
Dim oFileDialog As FileDialog
Set oFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
With oFileDialog
.Title = "Wählen Sie bitte den gewünschten Ordner aus!"
.ButtonName = "Übernehmen"
.InitialFileName = "C:\"
.Show
strFolder = .SelectedItems(1)
End With
Set oFileDialog = Nothing
'Objekte
Set fso = CreateObject("Scripting.FileSystemObject")
'Sheet festlegen in das die Daten kopiert werden
Set wsTarget = Sheets(1)
'Eingabeaufforderung für die Nummer
strFind = InputBox("Wonach wollen Sie suchen:", "Inhalt suchen", "Suchwort")
If strFind  "" Then
'Screenflicker und Dialoge unterdrücken
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Ausgabebereich löschen
wsTarget.Range("A2:DK1000").Clear
'Für jede Datei im Ordner ...
For Each file In fso.GetFolder(strFolder).Files
'Wenn es eine 'xlsx' Datei ist
If LCase(fso.GetExtensionName(file.Name)) = "xlsx" Then
'Mappe öffnen
Set wbSearch = GetObject(file.Path)
' Alle Sheets der Datei durchsuchen
For Each sh In wbSearch.Sheets
With sh.UsedRange
'Suche Spaltenüberschrift
'!!!Hier möchte ich, dass anstelle von Spaltennamen Alle genutzten Spalten  _
durchsucht werden!!!
For Each strHeader In Array("SPALTE1", "SPALTE2", "SPALTE3")
Set rngCol = sh.UsedRange.Find(strHeader, LookIn:=xlValues, LookAt:= _
xlWhole)
If Not rngCol Is Nothing Then Exit For
Next
'Wurde eine der Spalten gefunden, suche Inhalt
If Not rngCol Is Nothing Then
Set c = .Find(strFind, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
firstAddress = c.Address
Do
'Nummer wurde gefunden ... extrahiere Wert
dblKosten = sh.Cells(c.Row, rngCol.Column).Value
' und schreibe Ihn in unser Sammelsheet in die nächste  _
freie Zeile zusammen mit Inventarnummer und Pfad zur Datei
wsTarget.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0). _
Resize(1, 3).Value = Array(strFind, dblKosten, file.Path)
'Suche weiter
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address  firstAddress
End If
End If
End With
Next
' schließe die Mappe
wbSearch.Close False
End If
Next
'Spaltenbreiten automatisch anpassen
wsTarget.Range("A:D").EntireColumn.AutoFit
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End If
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alle genutzten Spalten durchsuchen - VBA
12.06.2019 15:02:56
Piet
Hallo marco
wenn ich deinen Code richtig verstehe hast du dir die Antwort schon selbst gegeben. Du siehst sie nur Nicht! Schau mal hier:
For Each strHeader In Array("SPALTE1", "SPALTE2", "SPALTE3")
Set rngCol = sh.UsedRange.Find(strHeader, LookIn:=xlValues, LookAt:=xlWhole)
Probier es bitte mal mit: - For Each strHeader In sh.UsedRange
Würde mich freuen wenn es damit problemlos klappt.
mfg Piet
AW: Alle genutzten Spalten durchsuchen - VBA
12.06.2019 15:17:01
Marco
Hallo Piet,
danke für Deine Antwort.
Ja genau das habe ich gesucht - hatte nur ein Brett vorm Kopf. Scheint jetzt alles soweit zu funktionieren.
Zumindest war das die Stelle wo ich nicht weiter kam.
Viele Grüße
Marco
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige