tsukisan
Goto Top

Mit VBS nach Dateien suchen und mit Word auflisten - immer zu viele Spalten am Ende

Hallo Scripter,

irgendwie finde ich nicht das Problem.
Mit unten aufgeführten Code möchte ich einfach nur nach Dateien auf einer Partition suchen und diese
auflisten.
Das funktioniert auch bestens, aber am Ende des erstellten Dokuments ist
1) bei einer gefundenen Datei eine Spalte zu viel
2) bei mehr als einer gefundenen Datei zwei Spalten zu viel.

Diese sind leer und "nerven"

Schaut euch bitte mal diesen Script für VBS an. Vielleicht findet ihr den Fehler ja.

Dim Filter , X

Set objWord = CreateObject("Word.Application")  
Set objDoc = objWord.Documents.Add()
Set objRange = objDoc.Range()
objDoc.Tables.Add objRange,1,1
Set objTable = objDoc.Tables(1)

Filter = inputbox("Bitte geben Sie den Dateifilter ein","Mit Word Dateien suchen und auflisten","*.Test")  
msgbox "Befehl wird ausgeführt! Bitte warten!",,"Mit Word...."  
objWord.FileSearch.FileName = Filter
objWord.FileSearch.LookIn = "D:\"  
objWord.FileSearch.SearchSubfolders = True
objWord.FileSearch.Execute

objWord.Visible = True

For Each objFile in objWord.FileSearch.FoundFiles	
	if not objFile = "" then objTable.Rows.Add()  
	objTable.Cell(x, 1).Range.text = objFile
    	if not objFile = "" then x = x + 1  
	
Next

msgbox "Befehl ausgeführt!Es wurden " & x & " Dateien gefunden und aufgelistet.",,"Mit Word...."  

Set objword = nothing
Set objDoc = nothing
Set objRange = nothing
Set objTable = nothing

Danke euch, für die "unnötige" Zeit, mal über diesen Script zu schauen.

Tsuki

Content-ID: 119258

Url: https://administrator.de/contentid/119258

Ausgedruckt am: 24.11.2024 um 01:11 Uhr

bastla
bastla 28.06.2009 um 21:36:03 Uhr
Goto Top
Hallo TsukiSan!

Versuch es so (dann wird auch die erste gefundene Datei in der Liste aufscheinen):
Dim Filter , X

Set objWord = CreateObject("Word.Application")  
Set objDoc = objWord.Documents.Add()
Set objRange = objDoc.Range()

Filter = inputbox("Bitte geben Sie den Dateifilter ein","Mit Word Dateien suchen und auflisten","*.Test")  
msgbox "Befehl wird ausgeführt! Bitte warten!",,"Mit Word...."  
objWord.FileSearch.FileName = Filter
objWord.FileSearch.LookIn = "D:\"  
objWord.FileSearch.SearchSubfolders = True
objWord.FileSearch.Execute

Found = objWord.FileSearch.FoundFiles.Count
objDoc.Tables.Add objRange,Found,1
Set objTable = objDoc.Tables(1)

objWord.Visible = True
For Each objFile in objWord.FileSearch.FoundFiles	
    if not objFile = "" then  
            x = x + 1
            objTable.Cell(x, 1).Range.text = objFile
	end if
Next

msgbox "Befehl ausgeführt!Es wurden " & x & " Dateien gefunden und aufgelistet.",,"Mit Word...."  

Set objword = nothing
Set objDoc = nothing
Set objRange = nothing
Set objTable = nothing
Alternativ könntest Du in Deinem bisherigen Code einfach die Zeilen 17 bis 23 ändern auf:
Neu = False
For Each objFile in objWord.FileSearch.FoundFiles	
	if not objFile = "" then  
           x = x + 1
           If Neu Then objTable.Rows.Add()
           objTable.Cell(x, 1).Range.text = objFile
           Neu = True
	end if
Next
Grüße
bastla
TsukiSan
TsukiSan 29.06.2009 um 03:03:22 Uhr
Goto Top
Hallo bastla,

danke, so geht's! Mit dem Hinzufügen von der Variable "Neu" in meinen Code - so wie du beschrieben hast - ist es ausreichend.
Nur mag das VBS da "End If" nicht. Hab ich entfügt und schon läuft's.

Vielen Dank und mir ist geholfen face-smile

Gruß

Tsuki