2016-08-23 3 views
0

Я работаю в MS WordsRough.doc файле, и я хочу проверить, Ceemea & Latam.doc Файл открыт или нет. Должно быть два возможных выхода.Проверить, если ФАЙЛ ОТКРЫТО или НЕ

1. Если уже открыт, то Activate

2. Если нет, то открытый Ceemea & Latam

Используя следующий код, но он возвращался compile error

If AlreadyOpen("C:\Documents and Settings\Administrator\Desktop\EMEA CEEMEA\CEEMEA & LATAM.doc") Then 

    Windows("CEEMEA & LATAM").Activate 

Else 

    Documents.Open FileName:="C:\Documents and Settings\Administrator\Desktop\EMEA CEEMEA\CEEMEA & LATAM.doc" 

End If 
+0

Таким образом, вы думали, что так как вам нужно 'AlreadyOpen' функцию, должна быть одна, и вы просто пытались использовать его, надеясь, что вы получаете право имя, а потом удивляет вас есть ошибка? – GSerg

ответ

1
sub ActivateOrOpen() 
    on error goto nofile 
    Windows("CEEMEA & LATAM").Activate 
    exit sub 

    nofile: 
    Documents.Open FileName:="C:\Documents and Settings\Administrator\Desktop\EMEA CEEMEA\CEEMEA & LATAM.doc" 
end sub 
+0

Есть ли возможность использовать 'if then else' для такого рода ситуаций? –

+0

Вы можете переместить часть 'on error goto' в другую функцию, которая будет захватывать ее и возвращать' true' или 'false', но это ничем не отличается. В любом случае вам придется обрабатывать исключение. – GSerg

1

попробовать это функция:

Function AlreadyOpen(filePath As String) As Boolean 
Dim result As Boolean 
result = False 
For Each aDoc In Documents 
apath = aDoc.Path + "\" + aDoc.Name 
If apath = filePath Then result = True 
Next aDoc 
AlreadyOpen = result 
End Function 
Смежные вопросы