Подскажите пожалуйста как работает поиск в этом коде, и как переделать поиск Application.FileSearch в дамном примере под поиск в office 2007. Пожалуйста, нужна помощь.
Set dictf = CreateObject("Scripting.Dictionary") dictf.RemoveAll Set fs1 = CreateObject("Scripting.FileSystemObject") myname = Dir(pathWithDoc, vbDirectory + vbReadOnly) mypath = getPathWork() + "\" ' Set the path. Do While myname <> "" ' Start the loop. If myname <> "." And myname <> ".." Then If (GetAttr(pathWithDoc & myname) And vbDirectory) = vbDirectory Then pos = InStr(myname, EMAI) If pos > 0 Then ss = Trim(Mid(myname, pos + 5)) ss = Replace(ss, "_", " ") dictf.Add ss, myname End If End If End If myname = Dir ' Get next entry. Loop keys = dictf.keys If dictf.Count > 0 Then Call runWordApp Sheets(1).Cells(11, 4).Value = CStr(dictf.Count) For i = 0 To dictf.Count - 1 myname = dictf.Item(keys(i)) decn = keys(i) Sheets(1).Cells(12, 4).Value = EMAI + "." + decn Sheets(1).Cells(11, 4).Value = CStr(i + 1) + " / " + CStr(dictf.Count) With Application.FileSearch .NewSearch .LookIn = pathWithDoc + myname + "\" .SearchSubFolders = False .Filename = "*.doc" ss = Replace(decn, " ", "?") pattern_files = EMAI + "?" + ss + "*.???" If .Execute() > 0 Then For j = 1 To .FoundFiles.Count Set f = fs1.GetFile(.FoundFiles(j)) If Not (f.name Like pattern_files) Then ss = f.name ss = Lat_to_Rus(ss, 4) If Left(ss, 4) = EMAI Then nerr = nerr + 1 Print #2, "В папке " + myname + " файл " + f.name + " не соответствует названию папки" If InStr(f.name, EMAI) = 0 Then Print #2, f.name + " - возможна латиница среди букв децимального номера!" End If End If End If Next j End If filedoc = pathWithDoc + myname + "\" + myname + ".doc" If fs1.fileexists(filedoc) = False Then filedoc = Replace(filedoc, ".doc", ".DOC") If fs1.fileexists(filedoc) = False Then .NewSearch .LookIn = pathWithDoc + myname + "\" .SearchSubFolders = False .Filename = MaskForMainDoc(pathWithDoc + myname + "\") If .Execute() = 1 Then filedoc = .FoundFiles(1) Else filedoc = "" End If End If End If End With
Тема закрыта администрацией. Причина: нарушение правил форума п.3
Подскажите пожалуйста как работает поиск в этом коде, и как переделать поиск Application.FileSearch в дамном примере под поиск в office 2007. Пожалуйста, нужна помощь.
Set dictf = CreateObject("Scripting.Dictionary") dictf.RemoveAll Set fs1 = CreateObject("Scripting.FileSystemObject") myname = Dir(pathWithDoc, vbDirectory + vbReadOnly) mypath = getPathWork() + "\" ' Set the path. Do While myname <> "" ' Start the loop. If myname <> "." And myname <> ".." Then If (GetAttr(pathWithDoc & myname) And vbDirectory) = vbDirectory Then pos = InStr(myname, EMAI) If pos > 0 Then ss = Trim(Mid(myname, pos + 5)) ss = Replace(ss, "_", " ") dictf.Add ss, myname End If End If End If myname = Dir ' Get next entry. Loop keys = dictf.keys If dictf.Count > 0 Then Call runWordApp Sheets(1).Cells(11, 4).Value = CStr(dictf.Count) For i = 0 To dictf.Count - 1 myname = dictf.Item(keys(i)) decn = keys(i) Sheets(1).Cells(12, 4).Value = EMAI + "." + decn Sheets(1).Cells(11, 4).Value = CStr(i + 1) + " / " + CStr(dictf.Count) With Application.FileSearch .NewSearch .LookIn = pathWithDoc + myname + "\" .SearchSubFolders = False .Filename = "*.doc" ss = Replace(decn, " ", "?") pattern_files = EMAI + "?" + ss + "*.???" If .Execute() > 0 Then For j = 1 To .FoundFiles.Count Set f = fs1.GetFile(.FoundFiles(j)) If Not (f.name Like pattern_files) Then ss = f.name ss = Lat_to_Rus(ss, 4) If Left(ss, 4) = EMAI Then nerr = nerr + 1 Print #2, "В папке " + myname + " файл " + f.name + " не соответствует названию папки" If InStr(f.name, EMAI) = 0 Then Print #2, f.name + " - возможна латиница среди букв децимального номера!" End If End If End If Next j End If filedoc = pathWithDoc + myname + "\" + myname + ".doc" If fs1.fileexists(filedoc) = False Then filedoc = Replace(filedoc, ".doc", ".DOC") If fs1.fileexists(filedoc) = False Then .NewSearch .LookIn = pathWithDoc + myname + "\" .SearchSubFolders = False .Filename = MaskForMainDoc(pathWithDoc + myname + "\") If .Execute() = 1 Then filedoc = .FoundFiles(1) Else filedoc = "" End If End If End If End With
Тема закрыта администрацией. Причина: нарушение правил форума п.3
У меня в одной папке, на которую я сразу ссылаюсь, лежат еще много папок (например "е.1212-1", "е.1213-1", "е.1214-1"). внутри каждой из этих папок лежат 1-2 файла ".doc ". Например в Папке "е.1212-1" лежат файлы "е.1212-1.doc" и "е.1212-1-1.doc". Как мне узнать совпадают они или нет?Нужно что бы совпадал номер папки и номер доковского документа ("1212" и "1212"). В самом доковском файле должен быть написан номер (пример 1212), как узнать совпадает ли он с названием папки? В текстовый документ должен выдавать сообщение после проверки, если есть несовпадения - " В папке "Название папки" файл "название файла" не соответствует названию папкм" и "В папке "Название папки" в файле "название файла" некорректный номер"
У меня в одной папке, на которую я сразу ссылаюсь, лежат еще много папок (например "е.1212-1", "е.1213-1", "е.1214-1"). внутри каждой из этих папок лежат 1-2 файла ".doc ". Например в Папке "е.1212-1" лежат файлы "е.1212-1.doc" и "е.1212-1-1.doc". Как мне узнать совпадают они или нет?Нужно что бы совпадал номер папки и номер доковского документа ("1212" и "1212"). В самом доковском файле должен быть написан номер (пример 1212), как узнать совпадает ли он с названием папки? В текстовый документ должен выдавать сообщение после проверки, если есть несовпадения - " В папке "Название папки" файл "название файла" не соответствует названию папкм" и "В папке "Название папки" в файле "название файла" некорректный номер"agafonic
Сообщение отредактировал agafonic - Вторник, 19.04.2011, 22:33