Макрос открыта книга или нет excel

Открыта или закрыта книга Excel? Проверяем с помощью кода VBA по краткому или полному имени файла, используя объектную переменную, цикл или оператор Open.

Проверка по краткому имени

Способ проверки по краткому имени, открыта ли рабочая книга, позволяет определить состояние проверяемой книги в том же экземпляре приложения Excel, в котором открыта книга с проверяющим кодом.

Использование объектной переменной

Вариант пользовательской функция VBA Excel, предназначенной для проверки, открыта или закрыта рабочая книга, путем определения результата присвоения ссылки на нее объектной переменной. Присвоение состоялось (BookOpenClosed = True) – книга открыта, произошла ошибка и присвоение не состоялось (BookOpenClosed = False) – книга закрыта.

Function BookOpenClosed(wbName As String) As Boolean

    Dim myBook As Workbook

    On Error Resume Next

        Set myBook = Workbooks(wbName)

    BookOpenClosed = Not myBook Is Nothing

End Function

Аргумент функции:

  • wbName – краткое имя проверяемой рабочей книги.

Перебор открытых книг циклом

Этот вариант функции BookOpenClosed перебирает с помощью цикла все открытые книги Excel и проверяет их краткие имена на совпадение с кратким именем проверяемой книги. Совпадение найдено (BookOpenClosed = True) – книга открыта, совпадение не найдено (BookOpenClosed = False) – книга закрыта.

Function BookOpenClosed(wbName As String) As Boolean

    Dim myBook As Workbook

    For Each myBook In Workbooks

        If myBook.Name = wbName Then

            BookOpenClosed = True

            Exit For

        End If

    Next

End Function

В коллекцию Workbooks входят и скрытые книги, в том числе Личная книга макросов, и книга с функцией.

Проверка по полному имени

Проверка по полному имени с помощью оператора Open позволяет узнать, открыта ли рабочая книга каким-либо другим процессом: текущим экземпляром Excel, в котором открыта книга с проверяющим кодом, другим экземпляром Excel или сторонним приложением.

Function BookOpenClosed(wbFullName As String) As Boolean

    Dim ff As Integer

    ff = FreeFile

        On Error Resume Next

        Open wbFullName For Random Access Read Write Lock Read Write As #ff

        Close #ff

    BookOpenClosed = (Err.Number <> 0)

End Function

Аргумент функции:

  • wbFullName – полное имя проверяемой рабочей книги.

Эта функция открывает с помощью оператора Open файл проверяемой книги с разрешением чтения и записи (параметр access) и запретом чтения и записи, если этот файл уже открыт другим процессом (параметр lock).

Если файл уже открыт другим процессом, а указанный тип доступа (параметр access) не разрешен (параметр lock), операция открытия завершится с ошибкой, а выражение (Err.Number <> 0) возвратит значение True.

Примеры проверки состояния книги

По краткому имени

Sub Primer1()

    If BookOpenClosed(«Книга1.xlsx») Then

        MsgBox «Книга открыта»

    Else

        MsgBox «Книга закрыта»

    End If

End Sub

По полному имени

Sub Primer2()

    If BookOpenClosed(«C:Папка1Папка2Папка3Книга1.xlsx») Then

        MsgBox «Книга открыта»

    Else

        MsgBox «Книга закрыта»

    End If

End Sub


На чтение 3 мин. Просмотров 4.3k.

Что делает макрос: При автоматическом открытии книги, необходимо учитывать, что может произойти при попытке открытия книги, которая уже открыта. Обычно Excel пытается открыть файл еще раз, с предупреждением, что любые несохраненные изменения будут потеряны. В VBA есть хороший инструмент, которые знает, как определить открыта ли книга, прежде чем пытаться открыть его снова.

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как работает этот код
  4. Код макроса
  5. Как использовать

Как макрос работает

Первое, что надо заметить, что это функция, а не процедура Sub. Мы проверяем файл, чтобы увидеть, назначен ли он переменной объекта. Только открытые книги могут быть присвоены переменной объекта. Когда мы пытаемся назначить закрытую книгу для переменной, возникает ошибка. Так что, если данная книга может быть назначена, книга открыта, если возникает ошибка, книга закрыта.

Код макроса

Function FileIsOpenTest(TargetWorkbook As String) As Boolean
'Шаг 1: Объявить переменные
Dim TestBook As Workbook
'Шаг 2: проверка на ошибки
On Error Resume Next
'Шаг 3: Попробуйте проверить книгу
Set TestBook = Workbooks(TargetWorkbook)
'Шаг 4: Если ошибки не произошло, книга уже открыта
If Err.Number = 0 Then
FileIsOpenTest = True
Else
FileIsOpenTest = False
End If
End Function

Как работает этот код

  1. Первое, что макрос делает – указывает переменную строку, содержащую имя файла, который выбирает пользователь. TestBook это имя переменной строки.
  2. В шаге 2, мы проверяем Excel на ошибки. В случае ошибки, возобновить код. Без этой строки код остановится при возникновении ошибки. Опять же, мы проводим тестирование данного файла, чтобы увидеть, назначен ли он переменной объекта. Поэтому, если данная книга может быть назначена, она открыта, если возникает ошибка, она закрыта. Если возникла ошибка, нам нужно знать код.
  3. На шаге 3, присваиваем книге переменную объекта TestBook. Сама строка переменной называется TargetWorkbook. TargetWorkbook передает функции в объявлении функции (см. первую строку кода). Данная функция устраняет необходимость жесткого кодирования имени книги, что позволяет нам передать его в качестве переменной.
  4. На шаге 4, проверяем, произошла ли ошибка. Если ошибки не произошло, книга открыта, поэтому мы устанавливаем FileIsOpenTest в True. Если произошла ошибка, это означает, что книга не открыта. В этом случае мы устанавливаем FileIsOpenTest значение false.

Это функция может быть использована для оценки любого файла, который передаст к нему, через его TargetWorkbook аргумент. Мы будем использовать затем эту функцию в макросе. Следующий макрос показывает, как реализовать эту функцию. Здесь мы используем одни и те же макросы, которые вы видели в предыдущем разделе, «Как открыть конкретную книгу, определенную пользователем», но на этот раз, мы создаем новую функцию FileIsOpenTest, чтобы убедиться, что пользователь не может открыть уже открытый файл.

Код макроса

Sub MacroOtkritaLiKniga()
'Шаг 1: Определить переменную строки.
Dim FName As Variant
Dim FNFileOnly As String

'Шаг 2: Метод GetOpenFilename активизирует диалоговое окно.
FName = Application.GetOpenFilename( _
FileFilter:="Excel Workbooks,*.xl*", _
Title:="Выберите книгу, которую нужно открыть", _
MultiSelect:=False)

'Шаг 3: Откройте файл, если он еще не открыт.
If FName <> False Then
FNFileOnly = StrReverse(Left(StrReverse(FName), _
InStr(StrReverse(FName), "") - 1))
If FileIsOpenTest(FNFileOnly) = True Then
MsgBox "Данный файл уже открыт"
Else
Workbooks.Open Filename:=FName
End If
End If
End Sub

Как использовать

Чтобы реализовать этот макрос, вы можете скопировать и вставить в обе части кода в стандартном модуле:

  1. Активировать визуальный элемент базовый редактор, нажав клавиши Alt+F11 на клавиатуре.
  2. Щелкните правой кнопкой мыши имя проекта или рабочей книги в окне проекта.
  3. Выбрать Вставку Модуля➜.
  4. Введите или вставьте код в созданный модуль.
  5. При необходимости можно назначить макрос для кнопки

 

andronus

Пользователь

Сообщений: 147
Регистрация: 06.06.2017

#1

27.02.2019 17:31:26

Здравствуйте.

Есть код макроса (пусть будет называться <MACROS>), который переключается между двумя открытыми книгами (пусть будут <BOOK1> и <BOOK2>) и тянет из них данные. Для того, чтоб пользователь не забывал открыть эти книги, нужно их принудительно открывать, если они закрыты. Подсмотрел

тут

код:

Код
If WorkBookIsOpen("имя_проверяемой_книги") Then    
Workbooks("имя_проверяемой_книги").Activate   
Else   
Workbooks.Open("путь к нужной книге")   
End if

Подскажите плиз, каким будет правильный код в моём случае? То есть, код должен проверять, открыты ли <BOOK1> и <BOOK2> и:
1. Если открыты, то запускать код <MACROS>
2. Если закрыты, то открывать их и запускать код <MACROS>

Я вижу это так (ниже), но не знаю, как правильно написать проверку двух книг, и плюс имеется проблема, заключающаяся в том, что код <MACROS> объёмен, и два раза его писать — это непорядок:

Код
If WorkBookIsOpen("<BOOK1>") И WorkBookIsOpen("<BOOK2>") Then
'<MACROS>
Else
Workbooks.Open("путь к <BOOK1>") И Workbooks.Open("путь к <BOOK2>")
'<MACROS>
End If
 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#2

27.02.2019 17:42:42

я для этого использую след. функцию

Код
'******************************************************************************
' Получаем Книгу, если она УЖЕ открыта или Nothing
'
Function FindWorkBook(wbNameMask As String) As Workbook
  Dim wb As Workbook
  For Each wb In Workbooks
    If wb.Name Like wbNameMask Then Set FindWorkBook = wb: Exit Function
  Next
End Function

поможет-ли это Вам — не знаю

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

Alex_I_S

Пользователь

Сообщений: 29
Регистрация: 25.12.2018

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

 

andronus

Пользователь

Сообщений: 147
Регистрация: 06.06.2017

#4

27.02.2019 18:38:38

Цитата
Ігор Гончаренко написал:
поможет-ли это Вам — не знаю

А без функции, стандартным кодом саба, нельзя никак?

Цитата
Alex_I_S написал:
Можно исключить человеческий фактор. Пусть макрос открывает книги, берет из них данные и закрывает. И пользователю меньше заморочек.

Проблема в том, что они уже могут быть открыты. В таком случае эксель диалоговым окном предлагает переоткрыть.

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#5

27.02.2019 18:46:35

Цитата
andronus написал:
Проблема в том, что они уже могут быть открыты. В таком случае эксель диалоговым окном предлагает переоткрыть

Скажите Excel, что не нужно показывать этот диалог:  Application.DisplayAlerts = False
Только не забудьте перед выходом из процедуры включить обратно.

 

andronus

Пользователь

Сообщений: 147
Регистрация: 06.06.2017

#6

27.02.2019 18:52:57

Думал об этом, но тогда файл просто переоткрывается. Это не подходит, т.к. файл мог быть не сохранен, и тогда откроется неактуальная версия.

Нашел на просторах инета следующий код, он работает:

Код
Dim iStatus As Long
Err.Clear
On Error Resume Next
Set wb = Workbooks("C:123.xlsx")
iStatus = Err
On Error Goto 0
If iStatus Then 'workbook isn't open
   Workbooks.Open ("C:123.xlsx")
Else
   'workbook is open
   wb.Activate
End If

За исключением того, что в случае если файл «C:123.xlsx» открыт, эксель пытается его заново открыть. Как объяснить ему, что файл уже открыт, и ничего в этом случае делать не надо? И как добавить в код не один, а два файла?

Изменено: andronus27.02.2019 22:44:49

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#8

27.02.2019 19:21:23

Цитата
andronus написал:
1. Проблема в том, что они уже могут быть открыты
2. А без функции, стандартным кодом саба, нельзя никак?

1. а функции по-барабану открыта книга или закрыта
— открыта — получите ссылку на книгу
— закрыта — получите Nothing (и откроете самостоятельно)
2. можно, но нецелесообразно. тут Вы полностью оправдали мои предположения и, вообще-то, код саба ничем не стандартнее кода функции.
удачи!

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

andronus

Пользователь

Сообщений: 147
Регистрация: 06.06.2017

Ни по ссылке Юрий М, ни в функции Ігор Гончаренко я не вижу, куда вставлять название книги (в моем случае, двух).
И к тому же, я не понимаю, как и куда эти функции вставлять, потому и спрашиваю про сабы, с ними я хотя бы работать умею хоть как-то.

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#10

27.02.2019 19:29:57

Цитата
andronus написал:
я не вижу, куда вставлять название книги

по моей ссылке ведь есть пример вызова функции. Прокрутите немного вниз

Код
Пример вызова любой из вышеопубликованных авторских функций :
Private Sub Test() 
    MsgBox WorkbookIsOpen("Имя_Книги.xls") 
End Sub
 

andronus

Пользователь

Сообщений: 147
Регистрация: 06.06.2017

#11

28.02.2019 15:13:25

Решение найдено. Следующий кусок кода проверяет, открыта ли необходимая книга или нет.
Если открыта, то выполняет основной код макроса.
Если закрыта, то открывает ее и затем выполняет основной код макроса.

Код
Dim wb As Workbook
Dim myWorkBook As String

myWorkBook = "ИМЯ.xlsx"
For Each wb In Application.Workbooks
    If wb.Name = myWorkBook Then
        GoTo maincode
        End
    End If
Next
If ActiveWorkbook.Name <> myWorkBook Then
Workbooks.Open ("ПУТЬ:ИМЯ.xlsx")
End If

'основной код макроса
maincode:

Изменено: andronus28.02.2019 18:59:25

Хитрости »

4 Май 2011              93421 просмотров


Как проверить открыта ли книга?

Собственно суть темы отражена в названии. Как при выполнении кода из VBA узнать перед обращением к книге открыта она или нет? Ведь если книга закрыта, то обращение к ней вызовет ошибку, а если открывать без проверки — то это может повлечь за собой утерю данных, если предварительно эта книга не была сохранена. Ни один ни второй вариант, естественно, не устраивают. Я покажу два способа проверки через функции. Если функция вернет True — книга открыта, если False — закрыта. Для проверки функций используем проверочную процедуру Check_Open_Book:

Sub Check_Open_Book()
    If IsBookOpen("Книга1.xls") Then
        MsgBox "Книга открыта", vbInformation, "Сообщение"
    Else
        MsgBox "Книга закрыта", vbInformation, "Сообщение"
        'открываем книгу
        Workbooks.Open "C:Книга1.xls"
    End If
End Sub

Данная процедура вызывает функцию IsBookOpen, передавая ей в качестве параметра имя книги, «открытость» которой мы хотим проверить. Я приведу несколько вариантов самой функции IsBookOpen. Во всех вариантах действует один и тот же принцип: код любого из вариантов функции IsBookOpen необходимо скопировать и вставить в стандартный модуль. Модуль должен быть внутри той книги, в кодах которой планируется проверять открыта ли книга. Только тогда IsBookOpen будет доступна для вызова из любого кода этой же книги.
Если вдруг в момент выполнения на строке If IsBookOpen(«Книга1.xls») Then появится ошибка «Sub or function not defined» — значит функция IsBookOpen либо не была скопирована в стандартный модуль, либо она вообще не в стандартном модуле, а в модуле листа, формы или книги.


Вариант 1:

Function IsBookOpen(wbName As String) As Boolean
    Dim wbBook As Workbook
    For Each wbBook In Workbooks
        If wbBook.Name <> ThisWorkbook.Name Then
            If Windows(wbBook.Name).Visible Then
                If wbBook.Name = wbName Then IsBookOpen = True: Exit For
            End If
        End If
    Next wbBook
End Function

Функция просматривает все открытые книги и если находит среди них книгу с указанным именем, то функция возвращает True. Есть небольшая особенность — функция исключает скрытые книги(это либо надстройки, либо PERSONAL.XLS). Так же из просмотра исключена та книга, в которой расположен сам код. Если Вам нужно проверить наличие книги независимо от её видимости, то необходимо просто заменить блок

    If Windows(wbBook.Name).Visible Then
        If wbBook.Name = wbName Then IsBookOpen = True: Exit For
    End If

на одну строку(просто убрать лишнее условие проверки)

    If wbBook.Name = wbName Then IsBookOpen = True: Exit For

Либо можно использовать

Вариант 2:

Function IsBookOpen(wbName As String) As Boolean
    Dim wbBook As Workbook: On Error Resume Next
    Set wbBook = Workbooks(wbName)
    IsBookOpen = Not wbBook Is Nothing
End Function

Данный способ обращается к любой открытой книге, даже если она скрыта как PERSONAL.XLS или надстройка. Однако у данной функции есть недостаток — используется оператор On Error и если в настройках VBA(ToolsOptions -вкладка General) установлено Break on All Errors — то этот код не сработает, если книга не открыта — получим ошибку. В то время как Вариант1 с циклом по всем открытым книгам сработает без ошибок.


Вариант 3:

По просьбам читателей решил добавить код, который проверяет открыта ли книга независимо от её месторасположения и используемого приложения Excel. Книга может быть открыта другим пользователем (если книга на сервере), в другом экземпляре Excel или в этом же экземпляре Excel.

Function IsBookOpen(wbFullName As String) As Boolean
    Dim iFF As Integer, retval As Boolean
    iFF = FreeFile
    On Error Resume Next
    Open wbFullName For Random Access Read Write Lock Read Write As #iFF
    retval = (Err.Number <> 0)
    Close #iFF
    IsBookOpen = retval
End Function

Функция несколько отличается от приведенных выше — передается в неё не только имя книги, а полный путь к книге, включая имя и расширение:

Sub Test()
    MsgBox "Файл 'Книга1'" & IIf(IsBookOpen("C:Книга1.xls"), " уже открыт", " не занят")
End Sub

Или более близкий к жизненной ситуации вариант: надо открыть книгу, внести в книгу изменения, сохранить и закрыть. Если книга кем-то уже открыта — получим ошибку на этапе сохранения или запрос на этапе открытия. Поэтому сначала проверяем доступность книги и если она доступна — вносим изменения и сохраняем.

Sub Test()
    Dim sWBFullName As String
    Dim wb As Workbook
    'полный путь к проверяемой книге
    sWBFullName = "C:DocumentsКнига1.xls"
    'если книга кем-то открыта - пропускаем обработку этой книги
    'книга закрыта - вносим изменения, сохраняем, закрываем
    If IsBookOpen(sWBFullName) = False Then
        Set wb = Application.Workbooks.Open(sWBFullName)
        'изменяем значение ячейки "A1" на первом листе книги
        wb.Sheets(1).Range("A1").Value = "www.excel-vba.ru"
        ws.Close True
    End If
End Sub

При использовании функции IsBookOpen так же надо учитывать, что она может посчитать книгу открытой не только если она реально кем-то открыта, а если к ней просто нет доступа(например, заблокирован доступ со стороны администратора и т.п.).

Также см.:
Как получить данные из закрытой книги?
Как узнать существует ли лист в книге?
Как узнать существует ли модуль в книге


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Определить видна ли книга на экране

and_evg

Дата: Понедельник, 06.05.2019, 14:38 |
Сообщение № 1

Группа: Проверенные

Ранг: Обитатель

Сообщений: 416


Репутация:

72

±

Замечаний:
0% ±


Excel 2007

Добрый день.

Вопрос состоит в общем в следующем. Как определить видна ли книга на экране в данный момент.
Именно видна, а не активна и следовательно ActiveWorkbook и ActiveWindow не подходят так как если открыты допустим несколько книг, то они могут быть открыты не в полноэкранном режиме, а например как было бы по команде «Вид» > «Упорядочить» > «Рядом» и интересующая книга может быть скрыта за другими
Вроде бы по логике должна подойти следующая команда [vba]

Код

MsgBox Application.Windows(«Книга1»).Visible

[/vba] но она всегда дает Истину если книга открыта.

 

Ответить

anvg

Дата: Понедельник, 06.05.2019, 16:30 |
Сообщение № 2

Группа: Друзья

Ранг: Ветеран

Сообщений: 581


Репутация:

271

±

Замечаний:
0% ±


2016, 365

Доброе время суток

Вроде бы по логике должна подойти следующая команда

По логике какой? Дайте, пожалуйста, определение — что такое видимая книга.

 

Ответить

K-SerJC

Дата: Вторник, 07.05.2019, 08:18 |
Сообщение № 3

Группа: Проверенные

Ранг: Обитатель

Сообщений: 487


Репутация:

86

±

Замечаний:
0% ±


Excel 2013

но она всегда дает Истину если книга открыта.

[vba]

Код

Sub op()
MsgBox Application.Windows(«мероприятия.xlsx»).Visible
Application.Windows(«мероприятия.xlsx»).Visible = False
MsgBox Application.Windows(«мероприятия.xlsx»).Visible
Application.Windows(«мероприятия.xlsx»).Visible = True
MsgBox Application.Windows(«мероприятия.xlsx»).WindowState
Application.Windows(«мероприятия.xlsx»).WindowState = xlMinimized ‘свернуто
MsgBox Application.Windows(«мероприятия.xlsx»).WindowState
Application.Windows(«мероприятия.xlsx»).WindowState = xlMaximized ‘на весь экран
MsgBox Application.Windows(«мероприятия.xlsx»).WindowState
Application.Windows(«мероприятия.xlsx»).WindowState = xlNormal ‘нормальный режим
End Sub

[/vba]
вот так у меня работает корректно
а чтобы определить видит ли пользователь в данный момент окно на экране, нужно определять все запущенные приложения и их положение на экране…


Благими намерениями выстелена дорога в АД.

Сообщение отредактировал K-SerJCВторник, 07.05.2019, 08:35

 

Ответить

and_evg

Дата: Вторник, 07.05.2019, 09:03 |
Сообщение № 4

Группа: Проверенные

Ранг: Обитатель

Сообщений: 416


Репутация:

72

±

Замечаний:
0% ±


Excel 2007

нужно определять все запущенные приложения и их положение на экране.

Я так понимаю, что тут нужно как то с API ?

Сообщение отредактировал and_evgВторник, 07.05.2019, 09:07

 

Ответить

K-SerJC

Дата: Вторник, 07.05.2019, 09:26 |
Сообщение № 5

Группа: Проверенные

Ранг: Обитатель

Сообщений: 487


Репутация:

86

±

Замечаний:
0% ±


Excel 2013

Я так понимаю, что тут нужно как то с API

я тоже так думаю, определять все запущенные приложения, потом перебором определять какие окна загораживают нужное…
может еще есть варианты, но я с ними пока не знаком.


Благими намерениями выстелена дорога в АД.

 

Ответить

and_evg

Дата: Вторник, 07.05.2019, 09:30 |
Сообщение № 6

Группа: Проверенные

Ранг: Обитатель

Сообщений: 416


Репутация:

72

±

Замечаний:
0% ±


Excel 2007

K-SerJC, Спасибо. Будем дальше копать

 

Ответить

RAN

Дата: Вторник, 07.05.2019, 10:55 |
Сообщение № 7

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Не знаю, зачем это может быть нужно, но так
[vba]

Код

aw = ThisWorkbook.Parent.ActiveWindow.Parent.Name

[/vba]


Быть или не быть, вот в чем загвоздка!

 

Ответить

and_evg

Дата: Вторник, 07.05.2019, 11:54 |
Сообщение № 8

Группа: Проверенные

Ранг: Обитатель

Сообщений: 416


Репутация:

72

±

Замечаний:
0% ±


Excel 2007


К сожалению нет. Помоему вот это
[vba]

Код

ThisWorkbook.Parent.ActiveWindow.Parent.Name

[/vba]
идентично
[vba]

Код

Application.ActiveWorkbook.Name

[/vba]

зачем это может быть нужно

Представим, что открыта книга «Основная» (она всегда активна и из неё запускается макрос) и несколько «других» книг, но в конкретный момент времени на экране видны только книга «Основная» (активная) и одна из других книг (она не активная). Вот нужно определить имя этой неактивной книги.

 

Ответить

boa

Дата: Вторник, 07.05.2019, 12:16 |
Сообщение № 9

Группа: Друзья

Ранг: Ветеран

Сообщений: 543


Репутация:

166

±

Замечаний:
0% ±


2013, 365

and_evg,
можно так:
[vba]

Код

Sub test()
Dim w: For Each w In Application.Windows
    Debug.Print w.Index & » — » & w.Caption
Next
End Sub

[/vba]
окно с индексом = 1 будет верхним.


 

Ответить

K-SerJC

Дата: Вторник, 07.05.2019, 12:21 |
Сообщение № 10

Группа: Проверенные

Ранг: Обитатель

Сообщений: 487


Репутация:

86

±

Замечаний:
0% ±


Excel 2013

если основная активная она должна быть верхней с индексом 1 а вот вторая тогда не активная видимая
но она может быть и невидимой, если свернуты все кроме основной
или я ошибаюсь?


Благими намерениями выстелена дорога в АД.

 

Ответить

and_evg

Дата: Вторник, 07.05.2019, 12:41 |
Сообщение № 11

Группа: Проверенные

Ранг: Обитатель

Сообщений: 416


Репутация:

72

±

Замечаний:
0% ±


Excel 2007

boa, K-SerJC, Насколько я понял индексы книгам присваиваются следующим образом:
у активной книги всегда индекс «1»
Индекс «2» у книги которая была активная до этого
Индекс «3» у книги которая была активная ещё ранее…. и т.д.

Тогда получается, что «Основная» книга активная, значит индекс у неё «1» и если другие книги не свернуты, то видимая книга будет иметь индекс «2»?

 

Ответить

and_evg

Дата: Вторник, 07.05.2019, 13:13 |
Сообщение № 12

Группа: Проверенные

Ранг: Обитатель

Сообщений: 416


Репутация:

72

±

Замечаний:
0% ±


Excel 2007

Проверил. Все верно!
Если учесть , что при закрытии доп. книг индексация пересчитывается в соответствии с порядком активации книг, то считаю что задача решена!
Всем СПАСИБО!

 

Ответить

and_evg

Дата: Вторник, 07.05.2019, 14:05 |
Сообщение № 13

Группа: Проверенные

Ранг: Обитатель

Сообщений: 416


Репутация:

72

±

Замечаний:
0% ±


Excel 2007

Поторопился… %)
Выясняется что у Workbooks и Windows индексы разные.
Похоже что у Windows индексация происходит в зависимости от активации окон (как и писал раньше), а у Workbooks в зависимости от открытия книги…
Я верно думаю? Не подскажите где про это почитать?

 

Ответить

boa

Дата: Вторник, 07.05.2019, 14:24 |
Сообщение № 14

Группа: Друзья

Ранг: Ветеран

Сообщений: 543


Репутация:

166

±

Замечаний:
0% ±


2013, 365

and_evg,
на сапорте все расписано:
Workbooks
Номер индекса указывает порядок открытия или создания книг.
Workbooks(1)— Это первая созданная книга, Workbooks(Workbooks.Count) -последняя создана. При активации книги номер индекса не изменяется. Все книги включаются в число индексов, даже если они скрыты.
Windows
всегда активное окно = Windows(1)


 

Ответить

and_evg

Дата: Вторник, 07.05.2019, 15:02 |
Сообщение № 15

Группа: Проверенные

Ранг: Обитатель

Сообщений: 416


Репутация:

72

±

Замечаний:
0% ±


Excel 2007

boa, Спасибо.
Значит мои выводы верны :)

 

Ответить

Как проверить открыт ли в Excele нужный файл

Нужно узнать открыт ли в Excele нужный мне файл или нет. Если открыт то активизировать его и работать с ним. А вообще даже не знаю как проверить запущен ли сам Excel.

Проблема в том, что vba крутится под другим приложением, хотя наверно это не проблема.

8 ответов

Я бы сделал бы так

Sub Макрос1()
Dim WB As Workbook
Dim myWorkBook As String

myWorkBook = «Бюджет.xls» ‘задаём имя искомой книги
On Error Resume Next
Windows(myWorkBook).Activate
If Err.Number = 9 Then
MsgBox «Книга » & myWorkBook & » не открыта!», , «»
End If
On Error GoTo 0
End Sub

Sub Макрос2()
Dim WB As Workbook
Dim myWorkBook As String

myWorkBook = «Бюджет.xls» ‘задаём имя искомой книги
For Each WB In Application.Workbooks
If WB.Name = myWorkBook Then
Windows(WB.Name).Activate
End
End If
Next
If ActiveWorkbook.Name <> myWorkBook Then MsgBox «Книга » & myWorkBook & » не открыта!», , «»
End Sub

первый вариант работает на ура, но проблемы начинаются после нескольких программных пусков excel’я и ручных закрытий. потом он перестаёт его видеть и начинает постоянно открывать новые копии книги. со вторым вариантом дело обстоит также.

пробовал на двух машинах 2k sp4 и xp sp2. excel 2003(11).

проблема в том что всеми этими способами я не вижу была ли открыта книга до того как была запущена моя программа. а это очень важно т.к. книга повторно откроется только для чтения, а мне надо писать в неё данные каждые 2 часа. запретить открывать книгу я тоже не могу т.к. она может быть нужна для просмотра данных.

может есть какие другие способы, через winapi или еще как, чтобы можно было 100% определить открыта ли книга и если да то писать в неё

Способ проверки по краткому имени, открыта ли рабочая книга, позволяет определить состояние проверяемой книги в том же экземпляре приложения Excel, в котором открыта книга с проверяющим кодом.

Использование объектной переменной

Вариант пользовательской функция VBA Excel, предназначенной для проверки, открыта или закрыта рабочая книга, путем определения результата присвоения ссылки на нее объектной переменной. Присвоение состоялось (BookOpenClosed = True) – книга открыта, произошла ошибка и присвоение не состоялось (BookOpenClosed = False) – книга закрыта.

Как проверить открыта ли книга?

Собственно суть темы отражена в названии. Как при выполнении кода из VBA узнать перед обращением к книге открыта она или нет? Ведь если книга закрыта, то обращение к ней вызовет ошибку, а если открывать без проверки — то это может повлечь за собой утерю данных, если предварительно эта книга не была сохранена. Ни один ни второй вариант, естественно, не устраивают. Я покажу два способа проверки через функции. Если функция вернет True — книга открыта, если False — закрыта. Для проверки функций используем проверочную процедуру Check_Open_Book:

Sub Check_Open_Book() If IsBookOpen(«Книга1.xls») Then MsgBox «Книга открыта», vbInformation, «Сообщение» Else MsgBox «Книга закрыта», vbInformation, «Сообщение» ‘открываем книгу Workbooks.Open «C:Книга1.xls» End If End Sub

Данная процедура вызывает функцию IsBookOpen, передавая ей в качестве параметра имя книги, «открытость» которой мы хотим проверить. Я приведу несколько вариантов самой функции IsBookOpen. Во всех вариантах действует один и тот же принцип: код любого из вариантов функции IsBookOpen необходимо скопировать и вставить в стандартный модуль. Модуль должен быть внутри той книги, в кодах которой планируется проверять открыта ли книга. Только тогда IsBookOpen будет доступна для вызова из любого кода этой же книги.
Если вдруг в момент выполнения на строке If IsBookOpen(«Книга1.xls») Then появится ошибка «Sub or function not defined» — значит функция IsBookOpen либо не была скопирована в стандартный модуль, либо она вообще не в стандартном модуле, а в модуле листа, формы или книги.

Function IsBookOpen(wbName As String) As Boolean Dim wbBook As Workbook For Each wbBook In Workbooks If wbBook.Name <> ThisWorkbook.Name Then If Windows(wbBook.Name).Visible Then If wbBook.Name = wbName Then IsBookOpen = True: Exit For End If End If Next wbBook End Function

Функция просматривает все открытые книги и если находит среди них книгу с указанным именем, то функция возвращает True. Есть небольшая особенность — функция исключает скрытые книги(это либо надстройки, либо PERSONAL.XLS). Так же из просмотра исключена та книга, в которой расположен сам код. Если Вам нужно проверить наличие книги независимо от её видимости, то необходимо просто заменить блок

If Windows(wbBook.Name).Visible Then If wbBook.Name = wbName Then IsBookOpen = True: Exit For End If

на одну строку(просто убрать лишнее условие проверки)

If wbBook.Name = wbName Then IsBookOpen = True: Exit For

Function IsBookOpen(wbName As String) As Boolean Dim wbBook As Workbook: On Error Resume Next Set wbBook = Workbooks(wbName) IsBookOpen = Not wbBook Is Nothing End Function

Данный способ обращается к любой открытой книге, даже если она скрыта как PERSONAL.XLS или надстройка. Однако у данной функции есть недостаток — используется оператор On Error и если в настройках VBA(ToolsOptions -вкладка General) установлено Break on All Errors — то этот код не сработает, если книга не открыта — получим ошибку. В то время как Вариант1 с циклом по всем открытым книгам сработает без ошибок.

Вариант 3:
По просьбам читателей решил добавить код, который проверяет открыта ли книга независимо от её месторасположения и используемого приложения Excel. Книга может быть открыта другим пользователем (если книга на сервере), в другом экземпляре Excel или в этом же экземпляре Excel.

Function IsBookOpen(wbFullName As String) As Boolean Dim iFF As Integer, retval As Boolean iFF = FreeFile On Error Resume Next Open wbFullName For Random Access Read Write Lock Read Write As #iFF retval = (Err.Number <> 0) Close #iFF IsBookOpen = retval End Function

Функция несколько отличается от приведенных выше — передается в неё не только имя книги, а полный путь к книге, включая имя и расширение:

Sub Test() MsgBox «Файл ‘Книга1’» & IIf(IsBookOpen(«C:Книга1.xls»), » уже открыт», » не занят») End Sub

При использовании этой функции так же надо учитывать, что она может посчитать книгу открытой не только если она реально кем-то открыта, а если к ней просто нет доступа(например, заблокирован доступ со стороны администратора и т.п.).

Нужно узнать открыт ли в Excele нужный мне файл или нет. Если открыт то активизировать его и работать с ним. А вообще даже не знаю как проверить запущен ли сам Excel.

Проблема в том, что vba крутится под другим приложением, хотя наверно это не проблема.

8 ответов

18K

06 июля 2007 года

pavel55

79 / / 14.05.2007

Я бы сделал бы так

Код:

Sub Макрос1()
    Dim WB As Workbook
    Dim myWorkBook As String

   
    myWorkBook = «Бюджет.xls» ‘задаём имя искомой книги
    On Error Resume Next
        Windows(myWorkBook).Activate
    If Err.Number = 9 Then
        MsgBox «Книга » & myWorkBook & » не открыта!», , «»
    End If
    On Error GoTo 0
End Sub

или так

Код:

Sub Макрос2()
    Dim WB As Workbook
    Dim myWorkBook As String

   
    myWorkBook = «Бюджет.xls» ‘задаём имя искомой книги
    For Each WB In Application.Workbooks
        If WB.Name = myWorkBook Then
            Windows(WB.Name).Activate
            End
        End If
    Next
    If ActiveWorkbook.Name <> myWorkBook Then MsgBox «Книга » & myWorkBook & » не открыта!», , «»
End Sub

10K

09 июля 2007 года

NaeR

6 / / 06.04.2005

первый вариант работает на ура, но проблемы начинаются после нескольких программных пусков excel’я и ручных закрытий. потом он перестаёт его видеть и начинает постоянно открывать новые копии книги. со вторым вариантом дело обстоит также.

пробовал на двух машинах 2k sp4 и xp sp2. excel 2003(11).

31K

12 июля 2007 года

migor69

1 / / 09.07.2007

dim EX as Excel.Application
Dim WB As Workbook
………………………………
………………………….
открытие книги…
……работа
закрытие и сохранение книги
EX.Quit..Закрытие Excel …………Иначе книга остается открытой

15K

16 июля 2007 года

vkodor

41 / / 04.07.2006

Код:

Public Function WorkbookIsOpen(wbname) As Boolean
    ‘проверка открыт фаил или нет
    Dim x
    On Error Resume Next
    Set x = Workbooks(wbname)
    If Err = 0 Then WorkbookIsOpen = True
    Set x = Nothing
End Function

10K

19 июля 2007 года

NaeR

6 / / 06.04.2005

проблема в том что всеми этими способами я не вижу была ли открыта книга до того как была запущена моя программа. а это очень важно т.к. книга повторно откроется только для чтения, а мне надо писать в неё данные каждые 2 часа. запретить открывать книгу я тоже не могу т.к. она может быть нужна для просмотра данных.

может есть какие другие способы, через winapi или еще как, чтобы можно было 100% определить открыта ли книга и если да то писать в неё

6.4K

19 июля 2007 года

Host

122 / / 22.09.2005

проблема в том что всеми этими способами я не вижу была ли открыта книга до того как была запущена моя программа…

Проверяй на существование экземпляр Excel.

Код:

Function CheckWorksheet(strName As String) As Boolean

 
   On Error Resume Next
   Dim pExcel As Excel.Application
   ‘Получаем объект
   Set pExcel = GetObject(class:=»Excel.Application»)

 
   If Not pExcel Is Nothing Then
      Dim wb As Workbook

 
      ‘Проверяем наличие открытой книги
      Set wb = pExcel.Workbooks(strName)
      If Not wb Is Nothing Then
         CheckWorksheet = True
      Else
         CheckWorksheet = False
      End If
      Exit Function
   End If
   CheckWorksheet = False
End Function

10K

20 июля 2007 года

NaeR

6 / / 06.04.2005

Host спасибо! похоже твой вариант работает. я уже было чуть не отчаялся

10K

21 июля 2007 года

NaeR

6 / / 06.04.2005

Host можешь объяснить какая разница между твоим примером и остальными, почему твой работает а предыдущие нет. хотя по логике вещей работать должны все примеры

ac1-caesar

124 / 3 / 0

Регистрация: 29.07.2013

Сообщений: 249

1

04.08.2013, 11:57. Показов 10504. Ответов 10

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

При заданном условии (А, В, С) должна открыться определенная книга, задача проверить открыта ли она уже и если она открыта выход из процедуры. Потому как по условию (не включено) далее пойдет процедура сохранения и если она уже кем то открыта, то соответственно никакого сохранения не получится.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  Dim Wb As Workbook
    If ComboBox1 = "A" Then
    Set Wb = Workbooks.Open("\Путь необходимого файла для условия - A .xlsx")
    
    Else
    If ComboBox1 = "B" Then
    Set Wb = Workbooks.Open("\Путь необходимого файла для условия - B .xlsx")
    
    Else
    If ComboBox1 = "C" Then
    Set Wb = Workbooks.Open("\Путь необходимого файла для условия - C .xlsx")
    
    Else: Exit Sub
 
    End If
    End If
    End If



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

04.08.2013, 11:57

Ответы с готовыми решениями:

Как в Excel проверить, открыта ли книга?
Как через макросы проверить, открыта ли заданая книга в данный момент, и в каком режиме(read only…

VBA Access: как проверить, открыта ли данная книга Excel
Добрый день! Подскажите пожалуйста, как можно при помощи модуля VBA В Access проверить открыта ли…

Проверить, открыта ли книга Excel
Как проверить, открыта ли книга Excel?
Нужно иметь ввиду, что при этом книга (файл xls) может быть…

Как мне узнать открыта данная книга Excel или нет?
Два раза открываю Excel, например, через ‘StartProgramsMicrosoft Excel’. В каждом из них открываю…

10

The_Prist

1337 / 308 / 74

Регистрация: 13.11.2008

Сообщений: 635

04.08.2013, 13:52

2

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub Check_Open_Book()
    If bBookOpen("Книга1.xls") Then
        MsgBox "Книга открыта", vbInformation, "Сообщение"
    Else
        MsgBox "Книга закрыта", vbInformation, "Сообщение"
    End If
End Sub
Function bBookOpen(wbName As String) As Boolean
    Dim wbBook As Workbook: On Error Resume Next
    Set wbBook = Workbooks(wbName)
    bBookOpen = Not wbBook Is Nothing
End Function



1



124 / 3 / 0

Регистрация: 29.07.2013

Сообщений: 249

04.08.2013, 13:57

 [ТС]

3

Здесь проверяется какая то конкретная книга, а у меня не известно какая будет открываться — А, В или С.



0



The_Prist

1337 / 308 / 74

Регистрация: 13.11.2008

Сообщений: 635

04.08.2013, 14:09

4

А где у Вас в примере видно какая книга должна проверяться? У Вас в примере выдуманные пути и имена. Точнее неясно там путь или имя или просто набор слов. Excel не может сам угадать, что Вам проставить надо. Я дал функцию — в зависимости от своих условий передавайте нужное имя книги, что тут сложного? Через переменную, по условиям или еще как. В любом случае, чтобы проверить открыта книга или нет, надо как минимум знать её имя.

Visual Basic
1
bBookOpen("\Путь необходимого файла для условия - A .xlsx")

Если не хотите предоставить сразу нормальный пример своего кода, тогда старайтесь применить самостоятельно то, что советуют. Лично мне кажется, что мой код не содержит ничего сложного для понимания.



0



124 / 3 / 0

Регистрация: 29.07.2013

Сообщений: 249

04.08.2013, 14:33

 [ТС]

5

Да, я понимаю. Весь код большой и неудобочитаемый. Смотрите у меня уже задана переменная книге — Wb. Но в ней весь путь к книге, а нам, как я понимаю необходимо только имя книги? Сам не могу пристроить, поэтому и обратился.



0



The_Prist

1337 / 308 / 74

Регистрация: 13.11.2008

Сообщений: 635

04.08.2013, 15:09

6

Так Вы выложите нормальный кусок кода, а не ущербное «\Путь необходимого файла для условия — C .xlsx». Из этой строки извлекать ничего не надо — тут только имя. Если переменная Wb содержить полный путь, включая имя и расширение, то получить только имя просто:

Visual Basic
1
2
Dim wbName As String
wbName = Dir(Wb, 16)

И уже wbName использовать:

Visual Basic
1
2
3
4
5
If bBookOpen(wbName) Then
    MsgBox "Книга открыта", vbInformation, "Сообщение"
Else
    MsgBox "Книга закрыта", vbInformation, "Сообщение"
End If



1



124 / 3 / 0

Регистрация: 29.07.2013

Сообщений: 249

04.08.2013, 15:12

 [ТС]

7

Вот это спасибо. Подскажите, что здесь означает цифра 16?

Цитата
Сообщение от The_Prist
Посмотреть сообщение

Dim wbName As String
wbName = Dir(Wb, 16)



0



1337 / 308 / 74

Регистрация: 13.11.2008

Сообщений: 635

04.08.2013, 15:16

8

У Вас справку VBA за неуплату отключили? :-)
16 — vbDirectory. Выделите Dir и нажмите F1, там все описано.



0



Hugo121

6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

04.08.2013, 15:51

9

Вот это — «открыта ли она уже» не разъясните подробнее?
Ну а пока такой код (для «если она уже кем то открыта»):

Visual Basic
1
2
3
4
5
6
7
8
Function IsOpen(File$) As Boolean
    Dim FN%
    FN = FreeFile
    On Error Resume Next
    Open File For Random Access Read Write Lock Read Write As #FN
    Close #FN
    IsOpen = Err
End Function



2



124 / 3 / 0

Регистрация: 29.07.2013

Сообщений: 249

05.08.2013, 14:30

 [ТС]

10

перед процедурой внесения и сохранения данных, нужно убедиться что книга закрыта. И если кто либо эту книгу уже открыл, то должно выскакивать сообщение что книга открыта и выходить из процедуры.
Книга располагается на одном из компьютеров. По локальной сети эту книгу может открыть каждый.



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

05.08.2013, 14:54

11

Ну значит функция выше годится.
В параметре передавать полный путь к файлу (строку).



0



В повседневной работе Excel вы открываете несколько книг одновременно для работы, но иногда сотни книг могут запутать вам голову, чтобы вспомнить, открыта или закрыта конкретная книга. Откажитесь от традиционного метода проверки файлов по одному, здесь я познакомлю вас с приемами, позволяющими быстро найти открытую или закрытую книгу.

Проверьте, открыта или закрыта книга с помощью VBA

Проверьте, открыта ли книга или закрыта с помощью Kutools for Excel хорошая идея3


Проверьте, открыта или закрыта книга с помощью VBA

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

1. Нажмите Alt + F11 ключи для открытия Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модули а затем скопируйте и вставьте VBA в новый Модули окно.

VBA: проверьте, открыта или закрыта книга

Function IsWorkBookOpen(Name As String) As Boolean
    Dim xWb As Workbook
    On Error Resume Next
    Set xWb = Application.Workbooks.Item(Name)
    IsWorkBookOpen = (Not xWb Is Nothing)
End Function

Sub Sample()
    Dim xRet As Boolean
    xRet = IsWorkBookOpen("combine.xlsx")
    If xRet Then
        MsgBox "The file is open", vbInformation, "Kutools for Excel"
    Else
        MsgBox "The file is not open", vbInformation, "Kutools for Excel"
    End If
End Sub

3. И нажмите F5 нажмите клавишу, чтобы запустить эту vba, и появится диалоговое окно, напоминающее вам, открыта конкретная книга или нет.
док проверить, открыт ли файл 1     док проверить, открыт ли файл 2

Наконечник: В приведенном выше VBA «объединять»- это имя книги, которую вы хотите проверить, вы можете использовать ее по своему усмотрению.


Проверьте, открыта ли книга или закрыта с помощью Kutools for Excel

Если вы не знакомы с VBA, вы можете проверить, открыта ли книга, с помощью Kutools for Excel, с его Навигация панель, которая поможет вам четко просмотреть все открытые книги в списке книг на панели.

После бесплатная установка Kutools for Excel, пожалуйста, сделайте следующее:

1. Нажмите Кутулс > Навигация , чтобы включить панель навигации. Смотрите скриншот:
док проверить, открыт ли файл 3

2. Затем нажмите Рабочая тетрадь и лист кнопку, чтобы развернуть панель и перейти к Рабочая тетрадь и лист раздел. И вы можете просмотреть все открытые книги в верхнем списке. Смотрите скриншот:
док проверить, открыт ли файл 4

Работы С Нами Навигация панели, вы также можете быстро переключаться между книгами или листами в списке.

Щелкните здесь, чтобы узнать больше о навигации.


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (5)


Оценок пока нет. Оцените первым!

Понравилась статья? Поделить с друзьями:
  • Макрос показать все скрытые листы в excel
  • Макрос перевода текста в число в excel
  • Макрос открывает файл excel
  • Макрос поиска текста для word
  • Макрос перебора всех ячеек в excel