Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
brokhan88
0 / 0 / 0
Регистрация: 23.04.2015
Сообщений: 9
1

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

10.12.2015, 13:48. Просмотров 5165. Ответов 24
Метки нет (Все метки)

Просьба помочь с задачкой. Имеется несколько открытых, но не сохраненных книг Excel (открыты они в разных окнах), которые генерируются некой системой. Требуется всех их сохранить и закрыть. Для этого запускается файл, который при запуске сохраняет все книги, а затем закрывается сам. Такой способ нужен в условиях отсутствия на рабочем месте (вся работа производится с помощтю открытия разных программ TaskSheduler'ом). Вот процедура, которая составлена на основе решений, предлагаемых в интернете:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub Макрос1()
Dim sPath, sName As String
Dim wb As Workbook
sPath = ActiveWorkbook.Path
Application.DisplayAlerts = False
For Each wb In Workbooks
    If Not wb Is ActiveWorkbook Then
        If wb.Windows(1).Visible Then
            wb.Activate
            sName = ActiveSheet.Name & "_" & Format(Date, "yyyymmdd")
            With ActiveWorkbook
                .SaveAs sPath & "" & sName, xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
                .Close
                End With
        End If
    End If
Next
Application.DisplayAlerts = True
Application.OnTime Now + TimeSerial(0, 0, 30), Application.Quit
End Sub
Sub WbClose()
Application.Quit
End Sub
Проблема в том, что процедура перебирает не все открытые книги, а только первую из открытых, а затем активирует себя. Просьба помочь организовать перебор всех книг.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2015, 13:48
Ответы с готовыми решениями:

Сравнение столбцов открытых книг
у меня есть открытые книги и надо сравнить столбцы "Е" в этих книгах, названия книг неизвестны,...

Видимость функции, написанной в одной книге, из других открытых книг
Здрасте Каk зделать, чтоб фунkция (Public Function()), написанная в одной kниге, была видна из...

Перебор книг и внесение в них изменений
Доброго дня! Подскажите, как можно перебрать все книги excel в определенной папке (все книги...

Подсчёт всех открытых книг в экселе
Очень интересный вопрос стал передо мной. Нужно подсчитать все!!! открытые книги экселя на компе....

Перебор открытых дочерних форм
У меня много дочерних форм создается динамически, поэтому доступ к ним не так-то просто получить....

24
Hugo121
6415 / 2478 / 445
Регистрация: 19.10.2012
Сообщений: 7,400
11.12.2015, 18:48 21
А мой вариант не пробовали? Где проверяется что путь к файлу не равен пути к изначально активному файлу?
0
pashulka
3194 / 1702 / 717
Регистрация: 01.12.2010
Сообщений: 3,405
11.12.2015, 19:21 22
Цитата Сообщение от brokhan88 Посмотреть сообщение
... я использовал "If Not wb Is ActiveWorkbook...", тоже не помогло.
Не для Вашей задачи, а просто на будущее - если необходимо игнорировать книгу, в которой находится сам макрос, то :

Visual Basic
1
2
3
4
5
for each wb in workbooks
    if not wb is thisworkbook then
       msgbox wb.fullname
    end if
next
p.s. если код будет располагаться в модуле книги thisworkbook(этакнига), то вместо thisworkbook можно использовать просто me
1
brokhan88
0 / 0 / 0
Регистрация: 23.04.2015
Сообщений: 9
14.12.2015, 13:03  [ТС] 23
Цитата Сообщение от Hugo121 Посмотреть сообщение
А мой вариант не пробовали? Где проверяется что путь к файлу не равен пути к изначально активному файлу?
Да пробовал, к сожалению не помогло
0
barinrec
62 / 4 / 1
Регистрация: 27.04.2014
Сообщений: 100
26.10.2017, 16:18 24
Мужики, дак несколько application возможно перебрать? Не закрывая экземпляры екселя.
0
26.10.2017, 16:18
rda-9
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 10
10.04.2019, 12:33 25
Цитата Сообщение от pashulka Посмотреть сообщение
brokhan88, попытка #3 (тестировать, разумеется, необходимо на мусоре)
Здравствуйте! У меня похожая задача стоит. Программа выгружается документы в эксель и нужно их сохранять. Можно все-же вшить этот макрос в эксель, а не запускать его из ворда? Т.к. при выгрузке файлов из сторонней программы в эксель, в них уже есть макрос и хотелось бы допилить его, чтобы он еще и сохранял все выгруженные книги
0
10.04.2019, 12:33
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2019, 12:33

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

Собрать имена открытых книг Excel и записать их в listbox
здравствуйте! Так как я пришел из VBA, то пытаюсь через объект excel.application перебрать...

Как узнать всех имена открытых книг Excel (VB 6)?
Может кто знает как узнать имена всех открытых книг Excel? Библитека Microsoft Excel 9.0 к проекту...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru