Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2013, 16:14   #1
kain151
Пользователь
 
Регистрация: 10.03.2010
Сообщений: 19
По умолчанию Усовершенствовать макрос

Здравствуйте, уважаемые профи и любители.

Помогите, пожалуйста, усовершенствовать код.
Есть небольшой макрос, проверяющий есть ли определенный файл в папке, если есть, то открывающий его и сохраняющий как текст.
Как сделать, чтобы наличие и сохранение файла определялось по его имени в независимости от того, с расширением он doc или docx.

Код HTML:
Set FSO = CreateObject("Scripting.FileSystemObject")
  If FSO.FileExists("D:\path\11.doc") Then
        Documents.Open FileName:="D:\path\11.doc", ConfirmConversions:=False, ReadOnly _
        :=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _
        :="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _
        , Format:=wdOpenFormatAuto, XMLTransform:=""

        ActiveDocument.SaveAs FileName:="D:\path\11.txt", FileFormat:=wdFormatText, _
        LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _
        :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
        SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
        False, Encoding:=1251, InsertLineBreaks:=False, AllowSubstitutions:=False _
        , LineEnding:=wdCRLF
        ActiveWindow.Close
      End If
    Set FSO = Nothing
Заранее спасибо!
kain151 вне форума Ответить с цитированием
Старый 18.12.2013, 17:16   #2
Пименов Александр
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 222
По умолчанию

Надо в условие IF (Если) добавить оператор OR (Или):
Цитата:
Set FSO = CreateObject("Scripting.FileSystemO bject")
If FSO.FileExists("D:\path\11.doc") or FSO.FileExists("D:\path\11.docx") Then
Documents.Open FileName:="D:\path\11.doc", ConfirmConversions:=False, ReadOnly _
:=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _
:="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _
, Format:=wdOpenFormatAuto, XMLTransform:=""

ActiveDocument.SaveAs FileName:="D:\path\11.txt", FileFormat:=wdFormatText, _
LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _
:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
False, Encoding:=1251, InsertLineBreaks:=False, AllowSubstitutions:=False _
, LineEnding:=wdCRLF
ActiveWindow.Close
End If
Set FSO = Nothing
Пименов Александр вне форума Ответить с цитированием
Старый 19.12.2013, 00:00   #3
kain151
Пользователь
 
Регистрация: 10.03.2010
Сообщений: 19
По умолчанию

Александр, к сожалению, не срабатывает.
Подозреваю, дело в том, что найденный с одним из расширений файл потом нужно открыть.

Код:
Documents.Open FileName:="D:\path\11.doc"
А если бы найден с расширением docx, а не doc, то не хочет открывать.
Подскажите, пожалуйста, как сделать чтобы открывал именно с найденным расширением?
kain151 вне форума Ответить с цитированием
Старый 19.12.2013, 10:18   #4
AndVGri
Форумчанин
 
Регистрация: 10.02.2012
Сообщений: 109
По умолчанию

Так, думаю, будет лучше
Код:
    Dim FSO As Object, sFind As String
    Set FSO = CreateObject("Scripting.FileSystemObject")
    If FSO.FileExists("d:\path\11.doc") Then
        sFind = "d:\path\11.doc"
    Else
        If FSO.FileExists("d:\path\11.docx") Then sFind = "d:\path\11.docx"
    End If
    If Len(sFind) > 3 Then
        Application.Documents.Open sFind
    End If
    '....
P. S. Сергей, спасибо за увиденную опечатку.

Последний раз редактировалось AndVGri; 19.12.2013 в 10:42. Причина: Опечатка
AndVGri вне форума Ответить с цитированием
Старый 19.12.2013, 10:36   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
If FSO.FileExists("d:\path\11.docx") Then sFind = "d:\path.11.docx"
исправлю опечатку
Код:
If FSO.FileExists("d:\path\11.docx") Then sFind = "d:\path\11.docx"
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.12.2013, 15:39   #6
kain151
Пользователь
 
Регистрация: 10.03.2010
Сообщений: 19
По умолчанию

Друзья, все работает!
Спасибо Вам Огромное!

P.S. А что вот эта строка означает? - чтобы для себя понимать
Код:
If Len(sFind) > 3 Then

Последний раз редактировалось kain151; 19.12.2013 в 15:43.
kain151 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Усовершенствовать будильник на Delphi Opel Помощь студентам 2 23.05.2011 20:35
усовершенствовать програмку маятника tasty_angel Помощь студентам 1 01.12.2010 00:26
Усовершенствовать макрос собиралки KlimoDi Microsoft Office Excel 8 05.07.2010 02:43
Помогите усовершенствовать код xPAL Общие вопросы Delphi 6 20.09.2008 00:05