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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2010, 04:50   #1
maksim_serg
Форумчанин
 
Аватар для maksim_serg
 
Регистрация: 25.03.2010
Сообщений: 417
По умолчанию проверка файла на открытие

Доброго времени всем!
скажите а как проверить открыт ли конкретный файл (*.doc), и если это так то закрыть его.
maksim_serg вне форума Ответить с цитированием
Старый 28.04.2010, 05:17   #2
maksim_serg
Форумчанин
 
Аватар для maksim_serg
 
Регистрация: 25.03.2010
Сообщений: 417
По умолчанию

Код:
If IsWorkbookOpen("файл.xls") Then Workbook("файл.xls").Close
А если файл - это документ word? то как?
maksim_serg вне форума Ответить с цитированием
Старый 28.04.2010, 06:17   #3
maksim_serg
Форумчанин
 
Аватар для maksim_serg
 
Регистрация: 25.03.2010
Сообщений: 417
По умолчанию

Код:
With CreateObject("word.application")
            On Error Resume Next
            Set dw = GetObject(, "Word.Application")
            If dw.documents("файл.doc") Is Nothing Then
            .documents.Open ("путь к файлу\файл.doc")
            Else
            dw.documents("файл.doc").Close
            .documents.Open ("путь к файлу\файл.doc")
            End If
            .Visible = True
End With
если документ уже открыт, то word открывается еще раз и получается один пустой, другой с документом. если открыть еще раз, то последний вообще не закрывается
maksim_serg вне форума Ответить с цитированием
Старый 28.04.2010, 06:26   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
если документ уже открыт, то word открывается еще раз и получается один пустой
Ну так а зачем запускать ещё один Word? (строкой CreateObject("word.application"))

Зачем вообще надо открывать документ Word?

Может, так подойдёт:
Код:
Sub test()
    Set dw = GetObject("C:\Documents and Settings\Игорь\Рабочий стол\карта.doc", "Word.document")
    MsgBox dw.paragraphs.Count ' выводим количество абзацев в документе
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 28.04.2010, 06:37   #5
maksim_serg
Форумчанин
 
Аватар для maksim_serg
 
Регистрация: 25.03.2010
Сообщений: 417
По умолчанию

программа открывает word в скрытом режиме вставляет в документ значения из ячеек, сохр. в другом месте и закрывает. если в прошлый раз произошла ошибка или файл уже открыт, то при выполнении кода выводится сообщение: "файл заблокирован таким-то - открыть копию или уведомить когда станет доступным...". так вот я хочу что б перед выполнением кода этот файл закрывался независмо от того в скрытом режиме он открыт или нет
maksim_serg вне форума Ответить с цитированием
Старый 28.04.2010, 07:45   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно воспользоваться WinAPI-функцией, которой "фиолетово", в каком режиме (скрытом или нет) открыт (или не открыт) любой файл. Например, для Вашего случая:
Код:
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Sub test()
    DocName = "qwerty" 'Имя doc-файла без расширения
    If FindWindow(vbNullString, DocName & " - Microsoft Word") = 0 Then
        MsgBox "Файл не открыт"
    Else
        MsgBox "Файл открыт"
    End If
End Sub
Вместо MsgBox используйте свой код, который требуется выполнить в случае, если файл открыт (не открыт).
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 28.04.2010, 08:46   #7
maksim_serg
Форумчанин
 
Аватар для maksim_serg
 
Регистрация: 25.03.2010
Сообщений: 417
По умолчанию

что то уменя постоянно "файл неоткрыт", даже если открыт.
хотя стоп. если я пишу имя вот так:
Код:
DocName = "М-19.doc [Режим ограниченной функциональности]"
то все работает. что такое "Режим ограниченной функциональности"???
maksim_serg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие файла и создание графика на основе чисел из файла Simon..14 Общие вопросы C/C++ 8 09.06.2009 10:18
Проверка на повторное открытие ЯИмя Microsoft Office Excel 4 13.08.2008 18:02
Открытие файла Veiron Общие вопросы Delphi 2 27.02.2008 03:12
Открытие файла Lexakazanskij Паскаль, Turbo Pascal, PascalABC.NET 9 01.11.2007 22:27