Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Application.FileSearch

Ответить
Настройки темы
Любой язык - Application.FileSearch

Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


День добрый. Возникла проблема с макросом при переходе с Office 2003 на 2007. Ошибка выходит на Application.FileSearch и как я понял, из поиска в интернете, Application.FileSearch в Office 2007 и выше отключен.
Я не программист и прошу помощи в решении проблемы.
Ошибка выходит на этом месте:

CheckExist:
With Application.FileSearch
.FileName = LastTxtName & ".txt"
.LookIn = ActiveDocument.Path
.Execute

While .Execute > 0

Incrementor = Incrementor + 1
If Incrementor < 10 Then
MatchLetters = 8
Else
MatchLetters = 7
End If

LastTxtName = Left (LastTxtName, MatchLetters - 1) & Incrementor

GoTo CheckExist

Wend
End With

FullLastTxtName = ActiveDocument.Path & "\" & LastTxtName & ".txt"

End Sub

Отправлено: 07:34, 31-08-2019

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


phx447, что должен делать приведённый Вами кусок кода?

Отправлено: 10:41, 31-08-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6494
Благодарности: 1466

Профиль | Отправить PM | Цитировать


Четвёртая ссылка вот здесь: https://www.google.ru/search?q=Application.FileSearch

Там есть решение: https://answers.microsoft.com/en-us/...5-0a83eb6bf984

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 10:55, 31-08-2019 | #3


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, вот что делает
` А такой LLLLLL[][i].txt - файл имеется?
CheckExist:
`Если такой же (или следующий, или схожий по первым буквам) *.txt файл уже есть в этой папке`
With Application.FileSearch
.FileName = LastTxtName & ".txt"
.LookIn = ActiveDocument.Path
.Execute

While .Execute > 0

Incrementor = Incrementor + 1
`Поддерживается до 100 файлов`
If Incrementor < 10 Then
MatchLetters = 8 `(7 букв + 1 цифра)
Else
MatchLetters = 7 ` (6 букв + 2 цифра)
End If

LastTxtName = Left (LastTxtName, MatchLetters - 1) & Incrementor

` А такой LLLLLL[][i].txt - файл имеется?
GoTo CheckExist

Wend
End With

`Коннектим к файлу в транслите расширение *.txt
FullLastTxtName = ActiveDocument.Path & "\" & LastTxtName & ".txt"

End Sub

DJ Mogarych, я в гугле искал, но я не знаю или точнее не понимаю, как воспользоваться ответами, которые там даны.

Отправлено: 13:51, 31-08-2019 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


phx447, я не про комментирование кода, я не этого просил от Вас. Что должен делать код? Я не понимаю его предназначение. Я хочу, чтобы Вы описали задачу, для решения которой был создан данный код.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:24, 31-08-2019 | #5


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, данный код макросом в office 2003 проверяет текст на наличие лишних пробелов, заменяет некоторые символы на нужные, выравнивает текст по ширине и сохраняет измененный *.doc файл в *.txt. Предварительно проверив папку на наличие схожих по названию файлов при сохранении.

Последний раз редактировалось phx447, 31-08-2019 в 15:46.


Отправлено: 15:34, 31-08-2019 | #6


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата phx447:
Предварительно проверив папку на наличие схожих по названию файлов при сохранении. »
Расшифруйте, пожалуйста, подробнее. Что значит «схожих по названию»? Для чего проверяет?

Отправлено: 15:52, 31-08-2019 | #7


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Цитата phx447:
Предварительно проверив папку на наличие схожих по названию файлов при сохранении. »
Расшифруйте, пожалуйста, подробнее. Что значит «схожих по названию»? Для чего проверяет?
Схожих по названию, значит идентичных, одинаковых. Например повторно применяя этот макрос на файле text.doc, то на этапе сохранения он определит, что уже имеется файл text.txt и макрос этот файл сохранит как text 1.txt.

Отправлено: 18:45, 31-08-2019 | #8


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата phx447:
повторно применяя этот макрос на файле text.doc, то на этапе сохранения он определит, что уже имеется файл text.txt и макрос этот файл сохранит как text 1.txt. »
Я этого не вижу по приведённому Вами коду.

В общем, насколько я понимаю, Вам нужна функция, которая для каталога, где расположен активный документ, и указанного имени файла вернёт первое доступное имя файла, построенное по определённому принципу.
Код: Выделить весь код
Option Explicit

Function GetFirstFreeName(strFileName As String)
    Dim objFSO As Object
    
    Dim strBaseFileName As String
    Dim strFullFileName As String
    Dim iCount As Integer
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    
    strBaseFileName = objFSO.GetBaseName(strFileName)
    strFullFileName = objFSO.BuildPath(ActiveDocument.Path, strBaseFileName & ".txt")
    
    iCount = 1
    
    Do While objFSO.FileExists(strFullFileName)
        iCount = iCount + 1
        strFullFileName = objFSO.BuildPath(ActiveDocument.Path, strBaseFileName & " " & CStr(iCount) & ".txt")
    Loop
    
    GetFirstFreeName = strFullFileName
End Function
т.е., например, для активного документа C:\Мои проекты\0274\Doc1.doc и переданного имени файла text.doc последовательно будут возвращаться имена:
Код: Выделить весь код
C:\Мои проекты\0274\text.txt
C:\Мои проекты\0274\text 2.txt
C:\Мои проекты\0274\text 3.txt
C:\Мои проекты\0274\text 3.txt
и т.д. Так?
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:48, 31-08-2019 | #9


Ветеран


Contributor


Сообщения: 2710
Благодарности: 1686

Профиль | Отправить PM | Цитировать


Цитата Iska:
Что должен делать код? Я не понимаю его предназначение. »
Напрягу воображение:
ИМХО, это отрывок макроса в WORD, пробую (для себя!) описать его назначение:
Есть некие переменные, начальное значение определёно где-то выше:
LastTxtName - имя файла без расширения
Incrementor - счетчик для повторяющихся имен
В результате работы этого куска макроса длина имени LastTxtName+Пробел+Incrementor должно быть не более 8 символов, LastTxtName урезается.
Получившееся имя ActiveDocument.Path & "\" & LastTxtName & ".txt" не должно дублировать имеющееся имя файла.
Вот вариант для замены Вашего куска:
Код: Выделить весь код
LastTxtName = "ABCDEFGHIJKLMN"


Incrementor = 0
ActiveDocumentPath = ActiveDocument.Path + "\"
Do
    If Incrementor = 0 Then
        TxtName = Left(LastTxtName, 6)
    Else
        TxtName = Left(LastTxtName, 7 - Len(CStr(Incrementor))) + " " + CStr(Incrementor)
    End If
    FullLastTxtName = ActiveDocumentPath + TxtName + ".txt"
    D = Dir(FullLastTxtName)
    If D = "" Then Exit Do
    Incrementor = Incrementor + 1
Loop


MsgBox """" + FullLastTxtName + """"
Зачеркнутые строки мне были нужны для отладки - Вы их удалте.
Incrementor = 0 - не знаю, нужно или нет, если эта переменная выше приведенного куска где-то определялась, то эту строку надо удалить.
Не очень понимаю, какое имя должно получиться при Incrementor = 0. Я сделал для отладочного имени ABCDEF.txt
В принципе, начальное значение Incrementor может быть не 0, а любое допустимое >0, например, 1 (первое имя при этом будет ABCDEF 1.txt).
Максимальная величина Incrementor в отладочном имени "A 999999.txt. Надеюсь, хватит.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 01-09-2019 в 15:41.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:24, 01-09-2019 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Application.FileSearch

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Readreg MFC Application и CtHelper Application Flethgin Поиск драйверов, прошивок и руководств 0 27-03-2014 19:50
Прочие - AskStub Application Grey_rnd Программное обеспечение Windows 4 19-12-2012 14:38
VBS/WSH/JS - [решено] Чем заменить Application.FileSearch в Excel 2007? mar1boro Скриптовые языки администрирования Windows 3 06-09-2012 17:24
2003/XP/2000 - Excel VB: Filesearch и zip файлы AlexM Microsoft Office (Word, Excel, Outlook и т.д.) 0 18-02-2010 07:34
Application Error ankerok Хочу все знать 1 10-10-2004 02:36




 
Переход