Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

VBScript Fehlermeldung mit der Methode GetExtensionName

Frage Entwicklung VB for Applications

Mitglied: lionne

lionne (Level 1) - Jetzt verbinden

15.03.2011, aktualisiert 16:20 Uhr, 6051 Aufrufe, 22 Kommentare

Hallo Zusammen,

Ich habe ein Skript mit dem ich in einer csv Datei bestimmte Werte(Datum ,Dateiname, usw...) auslese und in einer Array schreibe. Das funktioniert soweit gut.

Mein Problem ist in gleichen Ordner, wo die csv Dateien liegen, sind auch pdf Dateien vorhanden und ich möchte die gelesene Dateiname(aus der csv Datei) mit dem Name der pdf Datei vergleichen, aber leider bekomme ich immer folgende Fehlermeldung(siehe rote Zeile).

Kann jemand mir sagen was falsch ist? Ich habe schon in Internet gesucht und nicht gefunden.

Danke im Voraus
Lionne

01.
Const forReading = 1 
02.
Dim fso, file, column 
03.
Dim textline 'TextZeile 
04.
Dim inputDir, targetTypeCsv, targetTypePdf, Dateiname 
05.
 
06.
Set fso=CreateObject("Scripting.FileSystemObject") 
07.
inputDir = "C:\Temp\" 
08.
targetTypeCsv = "csv" 
09.
targetTypePdf = "pdf" 
10.
 
11.
For Each file In fso.GetFolder(inputDir).Files 'alle Dateien des inputDirs durchgehen 
12.
	 
13.
	'1. CVS Dateien nach eineinder öffnen und 'Datum und Dateiname in einer Array auslesen 
14.
	If LCase(fso.GetExtensionName(file.Name)) = LCase(targetTypeCsv) Then 'Test Datei-Typ 
15.
 
16.
		Set file = fso.OpenTextFile(file, forReading, False) 
17.
		while not file.AtEndOfStream 
18.
			textline=file.Readline() 
19.
			column=Split(textline,"|")	 
20.
	 
21.
	'2. Alle pdf Dateien in Odner durchgehen und prüfen, ob eine die gleiche Dateiname wie die "gelesene Dateiname" hat 
22.
	If LCase(fso.GetExtensionName(file.Name)) = LCase(targetTypePdf) Then ' ##red 'Fehlermeldung ab hier: "800A01B6 --> Object doesn't support this property or method: Name" 
23.
		Dateiname = file.Name  
24.
		MsgBox "Dateiname_CSV: " & Dateiname 
25.
		if column(44) = Dateiname Then 
26.
			MsgBox "Pdf_Dateiname: " & Dateiname 'pdf Dateiname ausgeben 
27.
		End if	 
28.
			 
29.
	End if 
30.
			 
31.
	 
32.
	wend		 
33.
file.Close  
34.
 
35.
	End If 
36.
	 
37.
Next
Mitglied: bastla
15.03.2011 um 17:20 Uhr
Hallo lionne!

Du hast zunächst ein Objekt namens "file" für die Dateien des durchsuchten Ordners erzeugt, und in Zeile 16 den selben Variablenname für die auszulesende Datei verwendet - das kann so nicht gut gehen ...

Wenn Du übrigens mehrere Zeilen darauf hin überprüfen willst, ob es eine passend benannte "pdf"-Datei gibt, würde ich vorweg alle diese Dateinamen (klein geschrieben) in einen einzigen String (zB mit Trennzeichen ":") packen
:dateiname1:dateiname2:...:dateiname153:
und müsste dann nur noch diesen String (nach dem Teilstring zB ":dateiname5:" durchsuchen ...

Grüße
bastla

P.S.: Wenn Du Variablen per "Dim" deklarierst, dann aber konsequenter Weise auch ein "Option Explicit" an den Anfang setzen ...
Bitte warten ..
Mitglied: lionne
15.03.2011 um 21:11 Uhr
Hallo bastla,

danke für deinen Hinweis. Ich habe es korrigiert.

Das Problem, das ich momentan habe ist:

Ich versuche 2 Strings zu vergleichen
- String1 aus einer Spalte der CSV-Datei und String2 aus pdf-Dateiname und ich bekomme immer das Ergebnis, dass beide String nicht gleich sind. (siehe Zeile 39)

- Und beim erstellen des Verzeichnis habe ich folgende Fehlermeldung: ##red code: 800A0034 --> Bad file name or number (siehe Zeile 59)

Kann bitte Jemand mir einen Tipp geben, was falsch ist?

Mein Code:
01.
    Option Explicit 
02.
Const forReading = 1 
03.
Dim fso, file, column 
04.
Dim textline 'TextZeile 
05.
Dim inputDir, targetTypeCsv, targetTypePdf, filenamePdf 
06.
Dim datumAb, filenameAusCsv, filePdf 
07.
Dim folder, folders, ZielPfad, archiveDir, filePfad 
08.
 
09.
Set fso = CreateObject("Scripting.FileSystemObject") 
10.
inputDir = "C:\Temp\Test\" 
11.
archiveDir = "E:\Load\ArchivFile\" 
12.
 
13.
targetTypeCsv = "csv" 
14.
targetTypePdf = "pdf" 
15.
 
16.
For Each file In fso.GetFolder(inputDir).Files 'alle Dateien des inputDirs durchgehen 
17.
     
18.
    '1. CVS Dateien nach eineinder öffnen und 'Datum und Dateiname in einer Array auslesen 
19.
    If LCase(fso.GetExtensionName(file.Name)) = LCase(targetTypeCsv) Then 'Test Datei-Typ 
20.
 
21.
        Set file = fso.OpenTextFile(file, forReading, False) 
22.
        While Not file.AtEndOfStream 
23.
            textline = file.Readline() 
24.
            column = Split(textline, "|") 
25.
             
26.
            datumAb = column(43) 
27.
            filenameAusCsv = column(44) 
28.
         
29.
    Wend 
30.
file.Close 'Datei Schliessen 
31.
 
32.
    End If 
33.
     
34.
    '2. Alle pdf Dateien in Odner durchgehen und prüfen, ob eine die gleiche Dateiname wie die "gelesene Dateiname" hat 
35.
    For Each filePdf In fso.GetFolder(inputDir).Files 
36.
        If LCase(fso.GetExtensionName(filePdf.Name)) = LCase(targetTypePdf) Then 
37.
            filenamePdf = Trim(filePdf.Name) 
38.
            
39.
            If filenameAusCsv = Trim(filenamePdf) Then 'Hier bekomme ich die Meldung, dass beiden Dateiname nicht sind und das stimmt nicht 
40.
                '3 Wenn vorhanden, dann Ordner aus Datum bauen und die gefundene Datei umbenenen und reinspeichern 
41.
                 
42.
                    folders = Array(Left(datumAb, 5), Mid(datumAb, 5, 2), Right(datumAb, 2)) 'Folders = Array(JJJJ, MM, TT) 
43.
                    '----------------Ausgabe am Bildschirm ------------------ 
44.
                   MsgBox "datumAb: " & datumAb          'datumAb = 20110319 
45.
                   MsgBox "Jahr: " & Left(datumAb, 5)    'Left(datumAb, 5) --> ergibt 201 statt 2011 
46.
                   MsgBox "Monat: " & Mid(datumAb, 5, 2) 'Mid(datumAb, 5, 2) --> ergibt 10 statt 03 
47.
                   MsgBox "Tag: " & Right(datumAb, 2)    'Right(datumAb, 2) --> ergibt 4 statt 15 
48.
                   '----------------------------------------------------------- 
49.
                     
50.
                Else: MsgBox "Dateiname sind: " & "nicht gleich" 
51.
                
52.
                 
53.
                'ZielPfad = ZielOrdner (für jede Datei erneut den ZielOrdner (Start-Ordner) vorgeben) 
54.
                ZielPfad = archiveDir 
55.
                 
56.
                'Odner erstellen 
57.
                For Each folder In folders 
58.
                    ZielPfad = ZielPfad & "\" & folder 'zielPfad um jeweiligen Teilpfad verlängern 
59.
                    If Not fso.folderExists(ZielPfad) Then fso.CreateFolder (ZielPfad) 'Fhlermeldung  'code: 800A0034 --> Bad file name or number 
60.
                Next 
61.
                 
62.
                'Dateien verschieben 
63.
                If Not fso.FileExists(ZielPfad & "\" & filePdf.Name) Then 'gleichnamige Datei bereits vorhanden? 
64.
                    filePdf.Move ZielPfad & "\"  'Zielangabe mit abschließendem "\" = Ordner 
65.
                End If 
66.
                 
67.
            End If    'filenameAusCsv = filenamePdf 
68.
                 
69.
        End If 
70.
    Next '2 
71.
     
72.
Next '1 
73.
 
Danke im Voraus
Lionne
Bitte warten ..
Mitglied: bastla
15.03.2011 um 21:25 Uhr
Hallo lionne!

Vorweg: Du verwendest immer noch die Variable "file" für zwei verschiedene Zwecke (was zumindest kein guter Stiil ist) ...

Du könntest allerdings aus dem Dateiobjekt "file" per "OpenAsTextStream"-Methode den gesamten Inhalt in eine Variable einlesen - zB
rows = Split(file.OpenAsTextStream.ReadAll, vbCrLf)
und erhieltest damit ein (0-basiertes) Array "rows()", dessen erste oder letzte Zeile sich mit
columns = Split(rows(0), "|"
bzw
columns = Split(rows(UBound(rows)), "|"
auslesen ließe ...
Besteht Deine jeweilige "csv"-Datei nur aus einer Zeile, bzw befindet sich die gesuchte Information in der letzten Zeile? So wäre zumindest Deine Vorgangsweise zu deuten ...
- String1 aus einer Spalte der CSV-Datei und String2 aus pdf-Dateiname und ich bekomme immer das Ergebnis, dass beide String nicht gleich sind. (siehe Zeile 39)
Können sie ja eigentlich nicht sein, da Du ja Name + Extension vergleichst - verwende die Methode "GetBaseName" (und beachte ggf auch die Groß-/Kleinschreibung)
Wenn "datumAb" den Inhalt "20110319" hat, wieso willst Du dann für das Jahr die ersten ("Left") 5 Stellen verwenden? Und "ergibt 4 statt 15" ergibt für mich in diesem Zusammenhang (der Tag wäre "19") überhaupt keinen Sinn ...
Noch zur Zeile 59: Lass Dir doch einfach vorweg jeweils den Zielpfad ausgeben (wobei ich anstelle einer "MsgBox" lieber "WScript.Echo" verwenden, und dann das Script über
cscript //nologo Script.vbs
aus einer CMD-Shell starte - erspart eine Menge "OK"-Klickerei), um dem Fehler auf die Spur zu kommen ...

Grüße
bastla
Bitte warten ..
Mitglied: lionne
15.03.2011 um 22:05 Uhr
Hallo bastla,

vielen Dank für diene Antwort. Meine CSV Datei besteht aus mehreren Zeilen und die Iformationen, die ich brauche sind immer in der Spalten Nr. 43 und 44 gespeichert

Gruß
Lionne
Bitte warten ..
Mitglied: bastla
15.03.2011 um 22:18 Uhr
Hallo lionne!

Wenn demnach jede Zeile jeder Datei zu verarbeiten ist, müsste der gesamte Teil 2 (+ 3) innerhalb der "csv"-Verarbeitungsschleife - egal, ob mit zeilenweisem Einlesen oder der "ReadAll"-Variante und danach
01.
For Each row In rows 
02.
    column = Split(row, "|") 
03.
    .... 
04.
    'Teil 2 
05.
Next
Grüße
bastla
Bitte warten ..
Mitglied: lionne
16.03.2011 um 10:46 Uhr
Hallo bastla,

ich verstehe nicht weiss du meinst. Kannst du bitte noch erklären?
Danke und Gruß
Lionne

Zitat von bastla:
Hallo lionne!

Wenn demnach jede Zeile jeder Datei zu verarbeiten ist, müsste der gesamte Teil 2 (+ 3) innerhalb der
"csv"-Verarbeitungsschleife - egal, ob mit zeilenweisem Einlesen oder der "ReadAll"-Variante und danach
01.
For Each row In rows 
02.
>     column = Split(row, "|") 
03.
>     .... 
04.
>     'Teil 2 
05.
> Next 
06.
> 
Grüße
bastla
Bitte warten ..
Mitglied: bastla
16.03.2011 um 11:24 Uhr
Hallo lionne!

Derzeit wird aus jeder "csv"-Datei nur die letzte Zeile verwendet - innerhalb der Schleife (Zeilen 22 bis 29) werden ja die Variablen "datumAb" und "filenameAusCsv" immer wieder überschrieben, sodass nach Zeile 29 die Werte der letzten Zeile in diesen Variablen enthalten sind - dann erst (und daher nur einmal je "csv"-Datei") wird die passende "pdf"-Datei verarbeitet (Schritte 2 und 3).

Soll dies allerdings für jede Zeile der "csv"-Datei erfolgen, müssten die Zeilen 29 bis 32 nach unten in die Zeile 71 "wandern" ...

Grüße
bastla

P.S.: Anstelle von "While - Wend" gäbe es inzwischen "Do While - Loop" ...
Bitte warten ..
Mitglied: lionne
16.03.2011 um 12:08 Uhr
Danke bastla. Ich habe es jetzt verstanden
Bitte warten ..
Mitglied: 76109
16.03.2011 um 14:10 Uhr
Hallo Lionne!

Ergänzend zu baslta's Kommentar:
Und beim erstellen des Verzeichnis habe ich folgende Fehlermeldung: ##red code: 800A0034 --> Bad file name or number (siehe Zeile 59)
Kein Wunder, da in der Variablen 'DatumAb' (Csv-Spalte 44 alias Array-Column(43)) mit Sicherheit kein Datum im Format "20110319" vorzufinden ist.

Und egal wie, dies stimmt ebenfalls nicht (hat bastla aber auch schon drauf hingewiesen!):
01.
folders = Array(Left(datumAb, 5), Mid(datumAb, 5, 2), Right(datumAb, 2)) 'Folders = Array(JJJJ, MM, TT) 
Laß Dir den Inhalt der Variablen 'DatumAb' in einer MsgBox ausgeben (MsgBox DatumAb) oder besser noch, schau in Excel oder im Text-Editor nach, was in der Csv-Datei-Datums-Spalte tatsächlich drinn steht (eine Zahl oder ein Datum in anderem Format...?).

Und bitte bitte, gib unterschiedlichen Datei-Objecten auch unterschiedliche Variablen-Namen. Das betrifft die Variable 'File' in Codezeile 16 und 21. Ein Each-Object sollte innerhalb der Schleife bis zum Next-Object seine Gültigkeit behalten und nicht nochmal für ein anderes Object (Set File) innerhalb der Schleife missbraucht werden. Das zeugt von schlechtem Programmierstil und verursacht Fehler.

Gruß Dieter
Bitte warten ..
Mitglied: lionne
16.03.2011 um 14:15 Uhr
Hallo bastla,

das Script funktioniert jetzt wie ich mir vorgestellt habe. Die ausgaben aus der csv-Datei werde ich später in einer Variable speicher und wolte erstmal das Skript zu laufen bringen bevor ich noch grosse Änderungen mache.

Eine Frage: Kannst du mir bitte sagen warum die pdf Dateien nicht verschoben werden(siehe Zeile 58)? Was habe ich da falsch gemacht. Bitte einen Tipp, ich hänge schon seit 30 min drauf

Danke und Gruß
Lionne

01.
Option Explicit 
02.
Const forReading = 1 
03.
Dim fso, file, column 
04.
Dim textline 'TextZeile 
05.
Dim inputDir, targetTypeCsv, targetTypePdf, filenamePdf 
06.
Dim datumAb, filenameAusCsv, filePdf 
07.
Dim folder, folders, ZielPfad, archiveDir, filePfad, rows 
08.
 
09.
Set fso=CreateObject("Scripting.FileSystemObject") 
10.
inputDir = "C:\Temp\Test\" 
11.
archiveDir	=	"E:\\Archiv\ArchivDateien\"				 
12.
 
13.
 
14.
targetTypeCsv = "csv" 
15.
targetTypePdf = "pdf" 
16.
 
17.
For Each file In fso.GetFolder(inputDir).Files 'alle Dateien des inputDirs durchgehen 
18.
	 
19.
	'1. CVS Dateien nach eineinder öffnen und 'Datum und Dateiname in einer Array auslesen 
20.
	If LCase(fso.GetExtensionName(file.Name)) = LCase(targetTypeCsv) Then 'Test Datei-Typ 
21.
 
22.
		Set file = fso.OpenTextFile(file, forReading, False) 
23.
		 
24.
		Do While not file.AtEndOfStream 'while not file.AtEndOfStream 
25.
			textline=file.Readline() 
26.
			column=Split(textline,"|") 
27.
			 
28.
			'--------------------Werte speichern------------------------- 
29.
			datumAb 		= column(43)  
30.
			filenameAusCsv = column(44)  
31.
		 
32.
	'*** 2.   Dateiname.pdf  = "gelesene Dateiname" ?**************** 
33.
		For Each filePdf In fso.GetFolder(inputDir).Files 'alle Dateien des inputDirs durchgehen 
34.
	 
35.
			If LCase(fso.GetExtensionName(filePdf.Name)) = LCase(targetTypePdf) Then  
36.
				 
37.
				filenamePdf = fso.GetBaseName(filePdf.Name) 'z.B. Meine_Datei_20110310.pdf, dann filenamePdf = Meine_Datei_20110310 
38.
				Folders = Array(Mid(datumAb, 2,4), Mid(datumAb, 6, 2), Mid(datumAb, 8,2)) 'Folders = Array(JJJJ, MM, TT) 'datumAb = "20110315" 
39.
				 
40.
				if Mid(filenameAusCsv, 2,18) = filenamePdf Then ' filename aus Csv-Datei = Pdf filename ? 
41.
					 
42.
					'3a. ZielPfad = ZielOrdner (für jede Datei erneut den ZielOrdner (Start-Ordner) vorgeben) 
43.
					zielPfad = archiveDir 
44.
					 
45.
					'3b. Wenn vorhanden, dann Ordner aus datumAb erstellen 
46.
					For Each folder In  folders 
47.
						zielPfad = zielPfad & "\" & folder 'zielPfad um jeweiligen Teilpfad verlängern  
48.
						If Not fso.folderExists(zielPfad) Then fso.CreateFolder(zielPfad) 'und bei Bedarf erstellen 
49.
					Next '3b 
50.
					 
51.
				Else 
52.
				'----------------Ausgabe am Bildschirm ------------------ 
53.
				'wscript.echo "nicht gleich: " & "Nein" 
54.
				'----------------------------------- ------------------ 
55.
					 
56.
				'3c Test FileExists(ZielPfad & ...), Datei.Move --> Datei Verschieben 
57.
					If Not fso.FileExists(ZielPfad & "\" & filePdf.Name) Then 'gleichnamige Datei bereits vorhanden? 					 
58.
						filePdf.Name.Move  ZielPfad & "\" 'Zielangabe mit abschließendem "\" = Ordner 
59.
					End If '3c 
60.
					 
61.
				End if 'filename aus Csv-Datei = Pdf filename ?				 
62.
			End if ' LCase... 
63.
		Next 'Each filePdf 
64.
	'****2 Ende**********************************************************************************************************************************		 
65.
						 
66.
	loop'wend		 
67.
file.Close  
68.
	End If 'Test Datei-Typ		 
69.
Next '1 For
Bitte warten ..
Mitglied: 76109
16.03.2011 um 14:33 Uhr
Hallo Lionne!

Versuch mal in Codezeile 58 mit:
01.
filePdf.Move ZielPfad & "\"
Gruß Diete
Bitte warten ..
Mitglied: lionne
16.03.2011 um 14:43 Uhr
Hallo Dieter,

danke. Ich habe raus gefunden: es gabt 2 Fehlern.

Fehler 1: die If-Schleife(Zeile 56-59) lagt ausserhalb des Block. Musste vor der Schleife 51 liegen.

Fehler 2: filePdf.Name.Move --> habe ich korrigiert

Gruß
Lionne
Bitte warten ..
Mitglied: 76109
16.03.2011 um 15:35 Uhr
Hallo Lionne!

Da frage ich mich natürlich, warum Du für jede einzelne Csv-Zeile noch zusätzlich jedesmal alle Pdf-Dateien einliest und dann einen Namens-Vergleich machst, anstatt mit dem Csv-Spalte-Dateinamen einen FileExist-Test zu machen und dann gegebenenfalls zu verschieben?

In welchem Format steht denn jetzt eigentlich der Dateiname in der Csv-Datei bzw. inwiefern unterscheidet der sich vom Namen der Pdf-Datei?

Gruß Dieter
Bitte warten ..
Mitglied: lionne
16.03.2011 um 17:25 Uhr
Zitat von 76109:
Hallo Lionne!

Da frage ich mich natürlich, warum Du für jede einzelne Csv-Zeile noch zusätzlich jedesmal alle Pdf-Dateien
einliest und dann einen Namens-Vergleich machst, anstatt mit dem Csv-Spalte-Dateinamen einen FileExist-Test zu machen und dann
gegebenenfalls zu verschieben?

In welchem Format steht denn jetzt eigentlich der Dateiname in der Csv-Datei bzw. inwiefern unterscheidet der sich vom Namen der
Pdf-Datei?

Gruß Dieter

Hallo Dieter,

ich habe CSV Dateien und Pdf zu verfügung. Beiden Dateien gehören zusammen und ich muss bevor ich die Pdf Datei verschiebe sicherstellen, dass die verschobenen Pdf Dateienname in eine CSV-Datei erhalten sind.

Was meinst du mit: FileExist-Test?

sorry, wenn ich so blöde Frage Stelle. Ich bin ganz neu in der Programmierung Welt. Und wenn ich hier auf "administrator"Seite sehe, was hier so programmiert und wie hier Problem lösst, frage ich mich immer wie lange ich brauchen werde um so gut wie auch zu sein.

Gruß
Lionne
Bitte warten ..
Mitglied: bastla
16.03.2011 um 18:44 Uhr
Hallo lionne!

Gemeint ist einfach, dass Du, nachdem der Name der "pdf"-Datei ausgelesen wurde, ja nicht den gesamten Ordner durchsuchen musst, sondern ganz gezielt mit
01.
PDFPath = inputDir & "\" & Mid(filenameAusCsv, 2,18) 
02.
If fso.FileExists(PDFPath) Then
das Vorhandensein der entsprechenden Datei feststellen kannst - zum Verschieben wäre dann "fso.MoveFile" zu verwenden ...

Noch eine Frage zu
Mid(filenameAusCsv, 2,18)
Ließe sich hier der entsprechende Teilstring nicht anhand von Trennzeichen bestimmen?

Grüße
bastla
Bitte warten ..
Mitglied: 76109
16.03.2011 um 19:02 Uhr
Hallo Lionne!

Also, in Deinem Skript liest Du ja die Dateinamen der Pdf-Datei aus und dann liest Du zusätzlich alle Pdf-Dateien ein und vergleichst den Namen mit dem Namen aus der Csv-Datei, anstatt - mit dem Pdf-Namen aus der Csv-Datei den Du ja bereits hast - zu prüfen, ob die Pdf-Datei im 'InputDir' existiert.

Du machst Dir ja leider nicht die Mühe, gestellte Fragen zu beantworten! Von daher schematisch in etwa so:
01.
filenameAusCsv = column(44) 
02.
.... 
03.
If Fso.FileExist(InputDir & filenameAusCsv & ?????) Then  
04.
.... 
05.
End if
Gruß Dieter

[edit] zu langsam [/edit]

@bastla
Das "/" ist im InputDir schon drinnen
Bitte warten ..
Mitglied: lionne
16.03.2011 um 19:06 Uhr
Zitat von bastla:
Ließe sich hier der entsprechende Teilstring nicht anhand von Trennzeichen bestimmen?

Hallo bastla,

nicht das ich wuste. In der csv-Datei steht der Name zwischen Hochkomma z.B. |"Beispieldatei.pdf"|

Das Datum genauso.

Danke und Gruß
Lionne
Bitte warten ..
Mitglied: bastla
16.03.2011 um 19:13 Uhr
Hallo lionne!

Das sichere Entfernen der (aller) Hochkommata kannst Du gleich mit
01.
filenameAusCsv = Replace(column(44), """", "")
durchführen - dann ist es egal, wie lang der String ist.

Ansonsten wäre auch
01.
filenameAusCsv = column(44) 
02.
filenameAusCsv = Mid(filenameAusCsv, 2, Len(filenameAusCsv) - 2)
noch sicherer als die Angabe einer konstanten Länge ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
16.03.2011 um 19:24 Uhr
@lionne und @bastla

Falls 44 nicht gerade die letzte Spalte ist, dann ließe sich das auch so erledigen:
01.
Columns = Split(CsvLine, """|""")
Gruß Dieter
Bitte warten ..
Mitglied: bastla
16.03.2011 um 19:34 Uhr
@Dieter
Das "/" ist im InputDir schon drinnen
Ist zwar ein "\" , aber macht auch nix (und noch nicht mal 3 "\" wären ein Problem) ...

Grüße
bastla
Bitte warten ..
Mitglied: lionne
17.03.2011 um 11:00 Uhr
Hallo Zusammen,

vielen Dank für die zahlreiche Antwort und Tipps. Ich schließe jetzt die Frage und setze es als gelöst

Danke und Gruß,
Lionne
Bitte warten ..
Mitglied: 76109
17.03.2011 um 13:14 Uhr
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
Fehlermeldung "DotNet Memory Management Global " (5)

Frage von xXEddiXx zum Thema Windows Server ...

Outlook & Mail
Fehlermeldung beim schließen von Outlook 2016 auf Terminalserver (7)

Frage von Tommy1983 zum Thema Outlook & Mail ...

Entwicklung
gelöst Get ip from external txt file and use in vbscript (5)

Frage von thankusomuch zum Thema Entwicklung ...

Sicherheits-Tools
OfficeScan11 Agent Installation - Fehlermeldung (1)

Frage von Chaser21a zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...