Страницы: 1
RSS
Запуск самого "свежего" xls файла (vbs)
 
Добрый день, форумчане! Задача - запустить в папке самый "свежий" с т.з. даты изменения xls файл. Все это надо сделать на vbs. откопал в инете такой скрипт, но он открывает все найденные файлы. Подскажите пжл - что нужно исправить?  
 
Dim objShell  
Set objShell = WScript.CreateObject ("WScript.Shell")  
Dim objFSO, objFile, objDir, i, fn  
Set objFSO = CreateObject("Scripting.FileSystemObject")  
Set objDir = objFSO.GetFolder(objShell.CurrentDirectory)  
For Each objFile In objDir.Files  
   If lcase(Right(objFile.Name,3))= "xls" then  
Set fs1 = CreateObject("Scripting.FileSystemObject")  
Set f = fs1.GetFile(objFile)  
last = CDate(f.DateLastModified)  
If last > prev Then  
prev = last: fn = objFile  
End If  
Next  
objShell.Run fn  
WScript.Sleep 1000    
End If    
Next
 
Если сможете - в принципе подойдет и решение в виде батника или java-скрипта...
 
нормальный скрипт, не знаю чем не устраивает..
Живи и дай жить..
 
2Слэн  
Не устраивает тем, что открывает все xls файлы в папке, а нужно только последний!
 
Приведенный скрипт - по сути компайл из двух - один на vbs (из инета), вторая часть - из макроса с этого форума, соединял я, а т.к. я новичок в этом деле, но у меня вместо открытия последнего файла открываются все :(
 
нужно вынести строку objShell.Run fn из цикла, то есть поставить последней  
я вообще не спец по vbs, но мне кажется строка WScript.Sleep 1000 - лишняя, она только замедляет выполнение кода
 
2Артем - Не-а так не помогает :(  
P.S. Артем спасибо еще раз за книги, которые Вы посоветовали, очень помогают осебенно вместо с форумом...
 
2Артем: Может быть Вы тогда знаете как превратить bas файл (модуль макроса) в vbs. У меня есть макрос с этого форума:  
Private Sub Workbook_Open()  
Dim iPath As String  
Dim fs As FileSearch  
Dim last As Date, prev As Date  
iPath = ThisWorkbook.Path  
prev = CDate("1/1/1980")  
With Application.FileSearch  
.NewSearch  
.LookIn = ThisWorkbook.Path  
.SearchSubFolders = False  
.Filename = "*.xls"  
.MatchTextExactly = False  
.FileType = msoFileTypeExcelWorkbooks  
End With  
With Application.FileSearch  
If .Execute() > 0 Then  
Set fs1 = CreateObject("Scripting.FileSystemObject")  
For i = 1 To .FoundFiles.Count  
Set f = fs1.GetFile(.FoundFiles(i))  
last = CDate(f.DateLastModified)  
If last > prev Then  
prev = last: fn = .FoundFiles(i)  
End If  
Next i  
Workbooks.Open Filename:=fn  
Else  
MsgBox "В папке " & iPath & "XLS файлов не найдено", 48, "Внимание"  
End If  
End With  
End Sub  
 
Он делает как раз то, что нужно, но мне нужен отдельный скрипт (vbs, bat, java...), чтобы он работал без экселя... Нашел один скрипт bas2vbs, но он некорректно работает.  
Может тогда Вы сможете конвертировать скрипт выше в vbs???
 
у меня вот этот код    
Dim objShell  
Set objShell = WScript.CreateObject ("WScript.Shell")  
Dim objFSO, objFile, objDir, i, fn  
Set objFSO = CreateObject("Scripting.FileSystemObject")  
Set objDir = objFSO.GetFolder(objShell.CurrentDirectory)  
For Each objFile In objDir.Files  
If lcase(Right(objFile.Name,3))= "xls" then  
Set fs1 = CreateObject("Scripting.FileSystemObject")  
Set f = fs1.GetFile(objFile)  
last = CDate(f.DateLastModified)  
If last > prev Then  
prev = last: fn = objFile  
End If  
End If    
Next  
objShell.Run fn  
 
работате, если только в адресе файла нет русских буков, почему, не знаю, лучше спросить на http://sql.ru/forum/actualtopics.aspx?bid=22
 
Да-уж :(  
Может тогда кто-нибудь конвертнет мне bas файл, полученный из макроса выше (workbook_open()) в vbs....
Страницы: 1
Читают тему
Наверх