Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Открытие КНИГИ / 4 сообщений из 4, страница 1 из 1
14.12.2004, 09:25:42
    #32825967
Fish
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие КНИГИ
Код: plaintext
1.
2.
Dim m_sDir As String m_sDir = "D:\A\MyBook.xls"

Workbooks.Open m_sDir ' открываю книгу

Как написать проверку если книга уже открыта,
чтобы второй её не открывать – будет выведено сообщение,
что файл уже открыт.

СПАСИБО
...
Рейтинг: 0 / 0
14.12.2004, 09:42:43
    #32825985
185
185
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие КНИГИ
'цикл по открытым книгам
For Each w In Workbooks
w.Activate
If w.Name = book_name Then
Exit For
End If
Next w
'смотрим как вышли - нашли или нет
If ActiveWorkbook.Name = book_name Then
' нашли
Else
' открываем
Workbooks.Open Filename:=book_name 'не забыть про путь
End If
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
21.10.2006, 14:55:16
    #34071775
Ivan33
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие КНИГИ
авторOpening a workbook can really slow down a macro; it takes time to access the disk and load the file. Thus, if your macro can check to see if a workbook is open before going through the hassle of actually trying to open it, you could speed up your macros greatly if the workbook is found to already be open.

авторOne very flexible way to approach the task of checking whether a workbook is open is to use a function that does the checking, and then simply returns a TRUE or FALSE value based on whether the workbook is open. The following short macro performs this succinct task:

Код: plaintext
1.
2.
3.
4.
5.
6.
Function AlreadyOpen(sFname As String) As Boolean
    Dim wkb As Workbook
    On Error Resume Next
    Set wkb = Workbooks(sFname)
    AlreadyOpen = Not wkb Is Nothing
    Set wkb = Nothing
End Function
авторTo use the function, just pass it the name of the workbook you want to check, in the following manner:

Код: plaintext
1.
2.
3.
4.
5.
6.
sFilename = "MyFileName.xls"
    sPath = "C:\MyFolder\MySubFolder\"
    If AlreadyOpen(sFilename) Then
        'Do not have to open
    Else
        Workbooks.Open sPath & sFilename
    End If

Савэт отсюда
...
Рейтинг: 0 / 0
24.10.2006, 11:38:55
    #34076349
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие КНИГИ
Еще парочка вариантов, до кучи.

1.

Код: plaintext
1.
2.
3.
4.
5.
Public Function fnIsFileOpen( _
  strName As String) As Boolean
    On Error Resume Next
    fnIsFileOpen = CBool(Len(Workbooks(strName).Name))
    On Error GoTo  0 
End Function

Код: plaintext
?fnIsFileOpen("Книга2.xls")

2. XL2002: Macro Code to Check Whether a File Is Already Open .
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Открытие КНИГИ / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]