Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1724to1728
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

String soll etwas nicht enthalten

String soll etwas nicht enthalten
18.11.2019 13:06:49
Norbert
Hallo,
mir fehlt ein Codeschnipsel zum Erfolg.
Ich habe ein Programm welches einen Ordner durchläuft und Dateien einliest, die einem bestimmten Muster entsprechen. Dieses Programm funktioniert einwandfrei. Ich benötige eine Anpassung. Meine derzeitige String-Anweisung sieht so aus:
strDatei = Dir(strOrdner & "\" & "DE*. ")
Es werden also alle Dateien eingelesen die mit DE beginnen.
Ich will nun aber Dateien ausschließen die nach dem DE ein SOAP enthalten.
Kommt SOAP darin vor, soll die Datei übersprüngen werden.
Ich habe das hier versucht:
strDatei = Dir(strOrdner & "\" & "DE*. & !"*SOAP*" ")
Ich dachte "!" würde für nicht stehen?
Leider liest das Makro jetzt gar nichts mehr ein.
Wie bekomme ich meine obige Anweisung so hin, dass Dateien mit SOAP im Namen nicht berücksichtigt werden?
Weiß jemand Rat?
Beste Grüße
Norbert

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: String soll etwas nicht enthalten
18.11.2019 13:08:52
Norbert
So naürlich:
strDatei = Dir(strOrdner & "\" & "DE*." & !"*SOAP*" ")
BG
Norbert
AW: String soll etwas nicht enthalten
18.11.2019 13:09:15
Norbert
So naürlich:
strDatei = Dir(strOrdner & "\" & "DE*." & !"*SOAP*")
BG
Norbert
AW: zusätzliche If-Abfrage
18.11.2019 13:19:47
Fennek
Hallo,

strDatei = dir(strOrdner & "\" & "DE*.*")
if instr(1, strDatei, "SOAP") = 0 then
mfg
AW: zusätzliche If-Abfrage
18.11.2019 13:23:23
Norbert
Hallo Fennek,
verstehe.
Es ist also nicht möglich, dass direkt im String als Ausschlusskriterium zu nennen?
Was gebe ich denn dann bei der Then an?
Ich will ja, dass die Schleife wieder von vorne mit der nächsten Datei beginnt..
Wenn ich Then angebe und dann das Makro wieder aufrufe kommt es zu einer Endlosschleife.
Gibt es da sowas wie next file?
Danke & BR
Norbert
Anzeige
AW: Workbook.Open?
18.11.2019 13:47:11
Fennek
was Du mit den Dateien geplant hast, kommt zwischen IF.. THEN und ENDIF.
Wenn möglich, kannst Du den (gekürzten) Code posten?
AW: Workbook.Open?
18.11.2019 14:20:22
Norbert
Hier aufs wesentliche Reduziert:
Range("B:B", "C:C").Clear
Set FSO = CreateObject("Scripting.FileSystemObject")
strOrdner = ThisWorkbook.Path
strDatei = Dir(strOrdner & "\" & "DE*.")
Tabelle1.AutoFilterMode = False
Do While strDatei ""
intPos = InStr(strDatei, "DE")
strNummer = Mid(strDatei, intPos + 3, 3)
lngZeileFrei = Tabelle1.Range("B" & Tabelle1.Rows.Count).End(xlUp).Row + 1
Tabelle1.Range("B" & lngZeileFrei).Value = "DE" & strNummer
Set f = FSO.getfile(strOrdner & "\" & strDatei)
Tabelle1.Range("C" & lngZeileFrei).Value = f.DateLastModified
strDatei = Dir
Loop
End If
End Sub
-------
Mein konkretes Problem ist, dass ich mit StrDatei alle Dateien einlese, die mit DE beginnen.
Mit welcher Anweisung überspringe ich die Dateien, die im Namen nach dem DE ein SOAP enthalten?
Das Makro soll dann natürlich zur nächsten Datei weiterspringen usw.
Danke & BR
Norbert
Anzeige
AW: so?
18.11.2019 16:09:11
Fennek
ich habe das so verstanden:

sub Test()
Range("B:B", "C:C").Clear
Set FSO = CreateObject("Scripting.FileSystemObject")
strDatei = Dir(ThisWorkbook.Path & "\" & "DE*.")
Tabelle1.AutoFilterMode = False
Do While strDatei  ""
if InStr(strDatei, "SOAP") = 0 then
strNummer = Mid(strDatei, intPos + 3, 3)
lngZeileFrei = Tabelle1.Range("B" & Tabelle1.Rows.Count).End(xlUp).Row + 1
Tabelle1.Range("B" & lngZeileFrei).Value = "DE" & strNummer
Set f = FSO.getfile(strOrdner & "\" & strDatei)
Tabelle1.Range("C" & lngZeileFrei).Value = f.DateLastModified
End If
strDatei = Dir
Loop
End Sub

Anzeige
AW: so?
18.11.2019 17:22:16
Norbert
Funktioniert. Danke!!!
BR
Norbert
AW: meinst Du das?
18.11.2019 17:29:24
Fennek

sub Test()
with createObject("Scripting.FileSystemObject")
set fld = .GetFolder(ThisWorkbook.Path)
for each f in fld.Files
if left(f.name, 2) = "DE" and instr(1, f.name, "SOAP") = 0 then
lr = lr + 1
cells(lr, 1) = f.name
cells(lr, 2) = f.f.DateLastModified
end if
next f
end with
end sub
(ungeprüft)

38 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige