2011-05-04 10 views
0

코드를 찾으십시오.한 알파벳으로 새 파일 저장하기

폴더에 큰 번호가 있습니다. "DE_For_Pol_Print_APPA_7A_Copy_%" 다음 FSO를 사용하지만이 같은 SELECT 문에서 파일 이름을 넣어 어디 WMI를 사용하지 않는 파일

 
===================================================================================== 
Dim fso, objFolder, obFileList, folderpath,counter 

folderpath = "G:\Everyone\Model Office Testing Documents\HP QC\QTP\PSISAutomation\Logs" 

Set fso = CreateObject("Scripting.FileSystemObject") 

Set objFolder = fso.GetFolder(folderpath) 

Set objFileList = objFolder.Files 


For Each File In objFileList 
    msgbox("5") 
    If InStr(1,File.Name,"DE_For_Pol_Print_APPA_7A_Copy_") = 1 Then   
     counter=counter+1 
    End If 
Next 

counter=counter+1 
msgbox("new file will be saved as: " &"DE_For_Pol_Print_APPA_7A_Copy_"& Chr(64 + Counter)) 

+1

왜 그게 문제입니까 (많은 수의 파일)? – forsvarir

+0

폴더가 네트워크 위치에 있으며 큰 번호를 가지고 있습니다. 파일 ...... ...... 루프가 많은 시간을 필요로합니다 objFileList의 각 파일에 대해 msgbox ("5") InStr (1, File.Name, "DE_For_Pol_Print_APPA_7A_Copy_") = 1 Then counter = counter + 1 End If 다음 – Guri

+0

무엇이 여기에 묻히고 있습니까? – Cheeso

답변

0

의. 이렇게하면 요청 된 파일 이름을 가진 파일 만 포함 된 컬렉션이 반환됩니다 (전체 컬렉션보다 빠름).

파일 컬렉션에 대한 Count 속성이 없습니다,하지만 당신은 사용할 수 있습니다

For Each file in fileCollection 
    counter = counter + 1 
Next 

이 내부 파일 개체에 액세스하지 않으며 합리적으로 빠른 실행해야합니다.

두 번째 및 훨씬 더 빠른 (하지만 못된) 방법은 windowshell 개체에서 명령 프롬프트를 사용하여 dir을 출력으로 반환하는 것입니다. 출력은 단순한 문자열입니다. 이제 원하는 문자열 (DE_For_Pol_Print_APPA_7A_Copy_)의 일치 항목 수를 계산하면 카운터입니다.

정확한 코드는 포스터를위한 훈련 용으로 비워 둡니다.

관련 문제