Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1312to1316
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
Inhaltsverzeichnis

application.filesearch

application.filesearch
12.05.2013 14:32:03
Marco
Hallo liebe Excelgemeinde,
ich breche mir die Finger mit dem Dir Ersatz für filesearch in excel2010.
Ich will also nur in einem Ordner die Dateien auslesen.
Kann mir jemand einen Ansatz geben?
vielen Dank Marco
Option Explicit
Public Sub ReadFromFile_ADO()
Dim Col As ADODB.Field
Dim objFS As FileSearch
Dim objSh As Worksheet
Dim strPath As String
Dim intIndex As Integer
Dim objADO As Object
Dim lngRow As Long, intCol As Integer
Dim blnFirst As Boolean
On Error GoTo ErrExit
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
.Cursor = xlWait
End With
Set objSh = Sheets("Ausgabe")
objSh.Range("A2:H65536").ClearContents
objSh.Range("A2:A65536").ClearFormats
For intIndex = 1 To .FoundFiles.Count
blnFirst = True
Set objADO = ExcelTable(.FoundFiles(intIndex), "Faxe", "A15:I35")
Do Until objADO.EOF
For Each Col In objADO.fields
If (IsNull(Col.Value) Or Col.Value = "") And intCol = 0 Then Exit For
intCol = intCol + 1
objSh.Cells(lngRow, intCol) = Col.Value
If blnFirst Then
objSh.Hyperlinks.Add Anchor:=objSh.Cells(lngRow, intCol), Address:=.FoundFiles( _
intIndex)
blnFirst = False
End If
Next
If intCol > 0 Then lngRow = lngRow + 1
intCol = 0
objADO.MoveNext
Loop
objADO.Close
Set objADO = Nothing
Next
End If
End With
Set objFS = Nothing
Set objSh = Nothing
ErrExit:
If Err.Number > 0 Then
MsgBox Err.Number & vbLf & Err.Description, , "Fehler"
Err.Clear
End If
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Calculation = xlCalculationAutomatic
.Cursor = xlDefault
End With
End Sub

Public Function ExcelTable(ByRef Path As String, ByRef Table As String, ByRef SourceRange As  _
String) As ADODB.Recordset
Dim SQL As String
Dim Con As String
SQL = "select * from [" & Table & "$" & SourceRange & "]"
Con = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Extended Properties=Excel 8.0;" _
& "Data Source=" & Path & ";"
Set ExcelTable = New ADODB.Recordset
ExcelTable.Open SQL, Con, adOpenKeyset, adLockOptimistic
End Function

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: application.filesearch
12.05.2013 15:02:22
Firmus
Hi Marco,
hier ein VBA, das ich erst kürzlich zusammenzimmerte.
Aufgabe:
Sammle aus allen XLS-files in einem Verzeichnis den Inhalt des 1. Sheets und
kopiere ihn in einem neuen workbook+sheet untereinander.
Als Vorspann steht in der Spalte A immer der Dateiname der Ursprungsdatei.
Wenn Du die innere Schleife rausnimmst, sollte es für Dich passen.
Copyright: Kann ich nicht einzelnen angeben; generell Tante Google, Schwerpunkt Herber.de
Option Explicit
Sub UTIL100neu_MergeTestfiles()
Dim Datei As String
Dim wbFR, wbTO As Workbook
Dim wsFR, wsTO As Worksheet
Dim wsTOnextZ As Long
Dim wsFRanzZ As Long
Dim t1, t2, t3, t4, t5, icol, irow As Long
Dim wbFRname As String
Dim RangeZZ As String
Dim OutfileName As String
Dim Pfad As String
' ChDir "D:\TMP"
Pfad = "D:\Data\Analysis\Analysis1\Test\"
ChDrive Pfad       'es wird die erste Stelle aus Laufwerksbuchstabe genommen
ChDir Pfad
OutfileName = "Test-Merge_" & Format((Now), "YYYYMMDD-hhmmss")
' Output-File erzeugen und Überschriften setzen.
'Rechnername = Environ("COMPUTERNAME")
icol = 1
irow = 1
Workbooks.Add
Worksheets(1).Name = "AsOf-" & Format((Now), "YYYYMMDD-hhmmss")
Datei = Dir(Pfad & "*.xls")
Application.ScreenUpdating = False
'Active Mappe
Set wbTO = ActiveWorkbook
Set wsTO = ActiveSheet
wsTOnextZ = wsTO.UsedRange.Rows.Count + 1
Do While Datei  ""
'Öffnet eine Datei
Workbooks.Open Pfad & Datei
Set wbFR = ActiveWorkbook
wbFRname = ActiveWorkbook.Name
Range("A:Z").Select
Selection.UnMerge
wsFRanzZ = ActiveSheet.UsedRange.Rows.Count
RangeZZ = "A1:Z" & Trim(Str(wsFRanzZ))          'Bereich auswählen+kopieren
Range(RangeZZ).Select
Selection.Copy
wbTO.Activate
wsTO.Activate
Cells(wsTOnextZ, 1).Value = wbFRname        'Dateiname in spalte A
Range("B" & Trim(Str(wsTOnextZ))).Select    'ausgewählten Bereich anfügen
ActiveSheet.Paste
Application.CutCopyMode = False
wsTOnextZ = wsTOnextZ + wsFRanzZ
'Schliesst die geöffnete Datei
wbFR.Activate
ActiveWorkbook.Close False
'Prüft für die nächste Datei
Datei = Dir()
Loop
Application.ScreenUpdating = True
MsgBox "fertig  -  aber das Ergebnis NICHT  abgespeichert."
End Sub

Gruss,
Firmus

Anzeige
AW: application.filesearch
12.05.2013 15:55:47
ing.grohn
Hallo Marco,
probier mal:
Sub Dateiliste()
Dim Pfad1 As String
Dim Name1 As String
Dim i As Long
i = 1
Pfad1 = "c:\Excel\"    ' Pfad setzen.
Name1 = Dir(Pfad1, vbDirectory)    ' Ersten Eintrag abrufen.
Do While Name1  ""    ' Schleife beginnen.
' Aktuelles und übergeordnetes Verzeichnis ignorieren.
If Name1  "." And Name1  ".." Then
' Mit bit-weisem Vergleich sicherstellen, daß Name1 ein
' Verzeichnis ist.
'If (GetAttr(Pfad1 & Name1) And vbDirectory) = vbDirectory Then
Cells(i, 1).Value = Name1  ' Eintrag nur anzeigen, wenn es sich
i = i + 1
'End If    ' um ein Verzeichnis handelt.
End If
Name1 = Dir    ' Nächsten Eintrag abrufen.
Loop
End Sub

(ist im Prinzip aus der Excelhilfe)
Mit freundlichen Grüßen
Albrecht

Anzeige
AW: application.filesearch
12.05.2013 16:45:44
Marco
Vielen Dank Euch beiden,
ich werde mal mein Glück versuchen.
viele Grüße
Marco

AW: application.filesearch
12.05.2013 16:54:41
Marco
Vielen Dank Euch beiden,
ich werde mal mein Glück versuchen.
viele Grüße
Marco

33 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige