Excel открытые книги списком

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

Просто перечислите все открытые книги с VBA
Составьте список всех открытых книг и легко переключитесь на книгу с помощью VBA
Составьте список всех открытых книг и легко переходите к рабочей книге с помощью замечательного инструмента


Просто перечислите все открытые книги с VBA

В этом разделе вы узнаете, как использовать код VBA для вывода списка всех открытых книг в Excel.

1. Нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули.

2. Затем скопируйте и вставьте приведенный ниже код VBA в редактор кода.

VBA: список всех открытых имен книг в Excel

Sub ListWorkbooks()
	Dim Rng As Range
	Dim WorkRng As Range
	On Error Resume Next
	xTitleId = "KutoolsforExcel"
	Set WorkRng = Application.Selection
	Set WorkRng = Application.InputBox("Out put to (single cell)", xTitleId, WorkRng.Address, Type: = 8)
	Set WorkRng = WorkRng.Range("A1")
	xNum1 = Application.Workbooks.Count
	For i = 1 To xNum1
		xNum2 = Application.Workbooks(i).Sheets.Count
		WorkRng.Offset(i - 1, 0).Value = Application.Workbooks(i).Name
		For j = 1 To xNum2
			WorkRng.Offset(i - 1, j).Value = Application.Workbooks(i).Sheets(j).Name
		Next
	Next
End Sub

3. Запустите код VBA, нажав кнопку F5 ключ. в KutoolsforExcel диалоговом окне укажите ячейку для размещения списка книг, а затем щелкните значок OK кнопка. Смотрите скриншот:

Затем перечисляются все открытые книги с соответствующими листами.

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


Составьте список всех открытых книг и легко переключитесь на книгу с помощью VBA

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

1. нажмите другой + F11 для открытия Microsoft Visual Basic для приложений окно. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули.

2. Скопируйте и вставьте следующий код VBA в открытое окно модуля.

Код VBA: перечислить все открытые книги и перейти к книге

Sub SelectWB()
	Dim xWBName As String
	Dim xWb As Workbook
	Dim xSelect As String
	For Each xWb In Application.Workbooks
		xWBName = xWBName & xWb.Name & vbCrLf
	Next
	xTitleId = "KutoolsforExcel"
	xSelect = Application.InputBox("Enter one of the workbooks below:" & vbCrLf & xWBName, xTitleId, "", Type: = 2)
	Application.Workbooks(xSelect).Activate
End Sub

3. нажмите F5 ключ для запуска кода. Потом KutoolsforExcel появится диалоговое окно со списком всех открытых книг. Если вы хотите перейти к указанной книге, введите имя этой книги в поле и нажмите кнопку OK кнопка. Смотрите скриншот:


Составьте список всех открытых книг и легко переходите к рабочей книге с помощью замечательного инструмента

Для Панель навигации of Kutools for Excel, все открытые книги будут автоматически перечислены на панели, чтобы вы могли легко перемещаться между всеми открытыми книгами. Вам просто нужно щелкнуть одну из открытых книг, и она сразу же перейдет к этой книге.

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


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

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

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

вкладка kte 201905


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

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

офисный дно

Как получить названия открытых книг в ListBox

Stormy

Дата: Вторник, 09.09.2014, 12:44 |
Сообщение № 1

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

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

Сообщений: 357


Репутация:

12

±

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


Excel 2010

Доброго времени суток, уважаемые форумчане.
Есть такой код:

[vba]

Код

Sub WorkBooksList()
    Dim book As Object
    ‘ Вывод имени каждой рабочей книги
    For Each book In Workbooks
       MsgBox (book.Name)
    Next
End Sub

[/vba]
В МеседжБоксе показывает названия открытых книг. Мне же нужно сделать, чтобы список открытых книг показывался в ListBox.
Пытаюсь сделать так:

[vba]

Код

Private Sub UserForm_Activate()
Dim kniqa As Workbook
Dim i
  i = 1
       For Each kniqa In Workbooks
       Me.ListBox1.List(i, 1) = kniqa.Name
      i = i + 1
    Next kniqa
End Sub

[/vba]
Только вот косячу где-то. Подскажите, пожалуйста, где?


Место для рекламы.

 

Ответить

SkyPro

Дата: Вторник, 09.09.2014, 13:32 |
Сообщение № 2

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

Ранг: Старожил

Сообщений: 1206


Репутация:

255

±

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


2010

[vba]

Код

Private Sub UserForm_Activate()
Dim kniqa As Workbook
     For Each kniqa In Workbooks
         Me.ListBox1.AddItem kniqa.Name
     Next
End Sub

[/vba]


skypro1111@gmail.com

 

Ответить

Gustav

Дата: Вторник, 09.09.2014, 13:55 |
Сообщение № 3

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

Ранг: Старожил

Сообщений: 2398


Репутация:

985

±

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


начинал с Excel 4.0, видел 2.1

Или сначала заполнить массив, а потом его разом присвоить List’у:
[vba]

Код

Private Sub UserForm_Activate()
Dim kniqa As Workbook
Dim arr()
Dim i
i = 1
      For Each kniqa In Workbooks
          ReDim Preserve arr(1 To i)
          arr(i) = kniqa.Name
          i = i + 1
      Next kniqa
      Me.ListBox1.List = arr
End Sub

[/vba]


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал GustavВторник, 09.09.2014, 13:55

 

Ответить

Stormy

Дата: Вторник, 09.09.2014, 14:54 |
Сообщение № 4

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

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

Сообщений: 357


Репутация:

12

±

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


Excel 2010

Gustav, SkyPro,
Благодарю, уважаемые.
Теперь есть форма, на ней кнопка и листбокс ( с радиокнопками) , можно ли при нажатие на кнопку закрыть выбранные книги?


Место для рекламы.

 

Ответить

SkyPro

Дата: Вторник, 09.09.2014, 15:07 |
Сообщение № 5

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

Ранг: Старожил

Сообщений: 1206


Репутация:

255

±

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


2010

Вот так должно работать:
[vba]

Код

Private Sub CommandButton1_Click()
For i = 0 To Me.ListBox1.ListCount — 1
     If Me.ListBox1.Selected(i) Then
         Workbooks(Me.ListBox1.List(i)).Close False
     End If
Next
End Sub

[/vba]


skypro1111@gmail.com

 

Ответить

Stormy

Дата: Вторник, 09.09.2014, 15:21 |
Сообщение № 6

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

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

Сообщений: 357


Репутация:

12

±

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


Excel 2010

Сделал так

[vba]

Код

Private Sub CommandButton1_Click()
Dim i
For i = 0 To Me.ListBox1.ListCount — 1
     If Me.ListBox1.Selected(i) Then
         Workbooks(Me.ListBox1.List(i)).Close False
     End If
Next
Me.ListBox1.Clear
Dim kniqa As Workbook
     For Each kniqa In Workbooks
         Me.ListBox1.AddItem kniqa.Name
     Next

End Sub

[/vba]
Теперь обновляет список после того как выбранные книги были закрыты.
SkyPro, Благодарю за помощь beer


Место для рекламы.

 

Ответить

SkyPro

Дата: Вторник, 09.09.2014, 15:37 |
Сообщение № 7

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

Ранг: Старожил

Сообщений: 1206


Репутация:

255

±

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


2010

Тогда уж лучше так: [vba]

Код

Private Sub CommandButton1_Click()
For i = 0 To Me.ListBox1.ListCount — 1
     If Me.ListBox1.Selected(i) Then
         Workbooks(Me.ListBox1.List(i)).Close False
         Me.ListBox1.RemoveItem (i)
     End If
Next
End Sub

[/vba]

А вообще, то рекомендую открывать справку по методам обьектов.


skypro1111@gmail.com

 

Ответить

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

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

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

Чтобы быстро найти файл который мы часто используем при работе в Excel нужно зайти в меню «Файл»-«Последние»:

Последние открытые файлы.

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

Сам список периодически меняется в зависимости от открытия новых документов. Иногда документ который очень часто открывался в начале месяца уже не найти в этом же списки под конец месяца. Для этого лучше использовать инструмент «Закрепить этот элемент в списке» (заколка).

По умолчанию список содержит 25 элементов, но в настройках можно увеличить до 50. Для этого нужно зайти меню «Файл»-«Параметры»-«Дополнительно»-«Экран»-«Число документов в списке последних файлов:» и установить там необходимое значение от 0 до 50.



Стандартное открытие файлов Excel

Открыть файл книги из программы Excel можно тремя способами:

  1. Меню «Файл»-«Открыть». Появится диалоговое окно, в котором отображается стандартный проводник Windows. В нем мы находим требуемый файл и с помощью двойного щелчка мишкой или кнопкой «Открыть» открываем его.
  2. Окно проводника.

  3. Комбинация горячих клавиш CTRL+O (английская о) вызывает такое же окно проводника Windows.
  4. Если часто приходится открывать документы из программы, то рационально будет добавить на панель быстрого доступа инструмент «Открыть».

Настройка быстрого доступа.

Открытие просматриваемых файлов

Если у вас уже открыто несколько документов, а вам нужно найти один из них, воспользуйтесь удобным инструментом для навигации по окнам программы. Закладка «Вид» раздел «Окно» инструмент «Перейти в другое окно»:

Панель Office Tab.

Из выпадающего списка открытых документов выберите нужную вам книгу.

Но намного удобнее работать с множеством открытых файлов используя полезную утилиту «Office Tab». Данная утилита устанавливается отдельно, но при установке интегрируется в интерфейс Excel. Ее функция представить открытые документы как закладки страниц интернет-браузеров.

Панель Office Tab.

Закладки можно перемещать между собой, а щелчок роликом мишки по закладке открытого документа закрывает его – это очень удобно.

brokhan88

0 / 0 / 0

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

Сообщений: 9

1

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

10.12.2015, 13:48. Показов 16789. Ответов 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



Programming

Эксперт

94731 / 64177 / 26122

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

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

10.12.2015, 13:48

24

Ушел с CyberForum совсем!

873 / 182 / 25

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

Сообщений: 1,020

Записей в блоге: 110

10.12.2015, 14:11

2

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

Имеется несколько открытых, но не сохраненных книг Excel (открыты они в разных окнах)

под разными окнами, что подразумевается: разные сессии приложения Excel ?



0



Hugo121

6875 / 2807 / 533

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

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

10.12.2015, 14:18

3

Попробуйте строку 7 заменить на

Visual Basic
1
If Not wb.path = sPath Then

А вообще конечно нужно убирать все активации.



1



pashulka

4131 / 2235 / 940

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

Сообщений: 4,624

10.12.2015, 14:28

4

Для одного Application сработает и такой вариант :

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Test()
    Dim iPath$, iFileName$, wb As Workbook
    iPath = ThisWorkbook.Path & ""
    
    'Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    For Each wb In Workbooks
        If wb.Path = "" Then
           iFileName = iPath & wb.ActiveSheet.Name & "_" & Format(Date, "yyyymmdd")
           wb.SaveAs iFileName, xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
           wb.Close True
        End If
    Next
    
    Application.Quit
End Sub



2



brokhan88

0 / 0 / 0

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

Сообщений: 9

10.12.2015, 14:56

 [ТС]

5

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

под разными окнами, что подразумевается: разные сессии приложения Excel ?

Да. Проверяю я процедуру следующим образом: запускаю Excel — создается пустая книга «Книга1», запускаю Excel снова — создается пустая книга «Книга2». После этого запускаю Excel-файл с процедурой сохранения и закрытия, который должен сохранить файлы «Книга1» и «Книга2» и закрыть их

Добавлено через 1 минуту

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

Попробуйте строку 7 заменить на

Visual Basic
1
If Not wb.path = sPath Then

А вообще конечно нужно убирать все активации.

К сожалению не помогло. Результат тот же — «Книга2» не сохраняется

Добавлено через 31 секунду

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

Для одного Application сработает и такой вариант :

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Test()
    Dim iPath$, iFileName$, wb As Workbook
    iPath = ThisWorkbook.Path & ""
    
    'Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    For Each wb In Workbooks
        If wb.Path = "" Then
           iFileName = iPath & wb.ActiveSheet.Name & "_" & Format(Date, "yyyymmdd")
           wb.SaveAs iFileName, xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
           wb.Close True
        End If
    Next
    
    Application.Quit
End Sub

Тоже не помогло. Результат тот же — «Книга2» не сохраняется



0



4131 / 2235 / 940

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

Сообщений: 4,624

10.12.2015, 15:04

6

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

Тоже не помогло

А что должно ? Я ведь сказал, что это будет работать только в «рамках» одного запущенного Excel.exe



0



0 / 0 / 0

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

Сообщений: 9

10.12.2015, 15:10

 [ТС]

7

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

А что должно ? Я ведь сказал, что это будет работать только в «рамках» одного запущенного Excel.exe

К сожалению я не могу заставить систему генерировать Excel-книги в рамках одного сэссии. Хотелось бы найти решение для нескольких запущенных сэссий



0



6875 / 2807 / 533

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

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

10.12.2015, 16:03

8

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

Результат тот же — «Книга2» не сохраняется

ну если в коде написано чтоб активную не обрабатывать — то вполне может быть что Книга2 и не будет сохраняться, сами такой код подобрали, я тут ни при чём…



0



KoGG

5590 / 1580 / 406

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

Сообщений: 2,366

Записей в блоге: 1

10.12.2015, 16:44

9

Советую работать из Word

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
24
25
26
27
28
Sub SaveWorkBooksCloseAllExcel()
    Dim MyXL As Object, ExcelWasRunning As Boolean
    Dim i%, iPath$, iFileName$, wb As Object
    iPath = ActiveDocument.Path & ""
    For i = 1 To 20
        ExcelWasRunning = False
        On Error Resume Next
        Set MyXL = GetObject(, "Excel.Application")
        If Err.Number = 0 Then ExcelWasRunning = True
        Err.Clear
        On Error GoTo 0
        If ExcelWasRunning = True Then
            With MyXL
                .Application.DisplayAlerts = False
                For Each wb In .Workbooks
                    If wb.Path = "" Then
                       iFileName = iPath & wb.ActiveSheet.Name & "_" & Format(Date, "yyyymmdd")
                       'xlOpenXMLWorkbookMacroEnabled=52
                       wb.SaveAs iFileName, 52, CreateBackup:=False
                       wb.Close 0
                    End If
                Next
                .Application.Quit
           End With
        End If
        Set MyXL = Nothing
    Next
End Sub



1



0 / 0 / 0

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

Сообщений: 9

10.12.2015, 17:14

 [ТС]

10

Советую работать из Word…

Спасибо, но тоже не работает. Макрос сохраняет и закрывает только 1 экземпляр книги Excel за прогон макроса (макрос запускал из Word). Мне кажется здесь что-то можно подправить, чтобы заработало



0



4131 / 2235 / 940

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

Сообщений: 4,624

10.12.2015, 17:53

11

brokhan88, Ещё один вариант для 32bit

Обратите внимание на то, что в качестве имени файла — используется имя активного листа, стало быть есть вероятность «потери» файлов (если имена листов в разных книгах будут идентичны)



1



0 / 0 / 0

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

Сообщений: 9

11.12.2015, 11:59

 [ТС]

12

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

brokhan88, Ещё один вариант для 32bit

Обратите внимание на то, что в качестве имени файла — используется имя активного листа, стало быть есть вероятность «потери» файлов (если имена листов в разных книгах будут идентичны)

К сожалению тоже не работает (сохраняет только 1 книгу).

P.S. Обработчик названий сохраняемых файлов я решил удалить из описания, чтобы сконцентрировать внимание на сути проблемы



0



6875 / 2807 / 533

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

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

11.12.2015, 12:24

13

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

сохраняет только 1 книгу

— или в результате остаётся только одна книга? Это разные вещи…

Добавлено через 1 минуту
Кстати можно в имя писать ещё и время до секунд — может помочь с одинаковыми названиями листов, если комп не супербыстр.



0



brokhan88

0 / 0 / 0

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

Сообщений: 9

11.12.2015, 13:06

 [ТС]

14

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

— или в результате остаётся только одна книга? Это разные вещи…

Добавлено через 1 минуту
Кстати можно в имя писать ещё и время до секунд — может помочь с одинаковыми названиями листов, если комп не супербыстр.

Cохраняется только 1 книга. Не остается, а именно сохраняется только 1 книга. На всякий случай: ОС Win7 Enterprise, Office 2010.
P.S. Задачу с наименованием я решал следующим образом:

Visual Basic
1
2
3
4
5
6
7
8
'...
sName = ActiveSheet.Name & "_" & Format(Date, "yyyymmdd")
Do
If Dir(sPath & "" & sName & ".xlsm") <> "" Then
sName = sName & "_1"
Else: flag = True
End If
Loop Until flag



0



KoGG

5590 / 1580 / 406

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

Сообщений: 2,366

Записей в блоге: 1

11.12.2015, 13:16

15

Проблема в том, что при уже закрытом Excel GetObject дает ссылку на уже закрытый Excel.
Может это поможет

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
24
25
26
27
28
29
Sub SaveWorkBooksCloseAllExcel()
    Dim MyXL As Object, ExcelWasRunning As Boolean
    Dim i%, j%, iPath$, iFileName$, wb As Object
    iPath = ActiveDocument.Path & ""
    For i = 1 To 20
        ExcelWasRunning = False
        On Error Resume Next
        Set MyXL = GetObject(, "Excel.Application")
        If Err.Number = 0 Then ExcelWasRunning = True
        Err.Clear
        On Error GoTo 0
        If ExcelWasRunning = True Then
            With MyXL
                .Application.DisplayAlerts = False
                For Each wb In .Workbooks
                    If wb.Path = "" Then
                       iFileName = iPath & wb.ActiveSheet.Name & "_" & Format(Date, "yyyymmdd")
                       'xlOpenXMLWorkbookMacroEnabled=52
                       wb.SaveAs iFileName, 52, CreateBackup:=False
                       wb.Close 0
                    End If
                Next
                .Application.Quit
           End With
        End If
        Set MyXL = Nothing
        For j=1 to 1000: DoEvents:Next
    Next
End Sub

Добавлено через 5 минут
Не вижу, чтобы перед циклом Do присваивалось flag = False



1



0 / 0 / 0

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

Сообщений: 9

11.12.2015, 14:56

 [ТС]

16

Не помогло, результат тот же (сохраняется только 1 книга)
P.S. Про обнуление флага я не забыл



0



5590 / 1580 / 406

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

Сообщений: 2,366

Записей в блоге: 1

11.12.2015, 15:09

17

Значит действует еще какое-то привнесенное творчество.
Кроме того макрос сохраняет только вновь созданные книги (созданные в Excel , а не на диске),
(условие If wb.Path = «» Then) на старые не действует.

Добавлено через 8 минут
Если в Excel работает автосохранение, и оно успело сработать, то блок пересохранения не сработает.



1



4131 / 2235 / 940

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

Сообщений: 4,624

11.12.2015, 15:47

18

Лучший ответ Сообщение было отмечено brokhan88 как решение

Решение

brokhan88, попытка #3 (тестировать, разумеется, необходимо на мусоре)



1



0 / 0 / 0

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

Сообщений: 9

11.12.2015, 18:28

 [ТС]

19

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

brokhan88, попытка #3 (тестировать, разумеется, необходимо на мусоре)

Огромное спасибо, работает

Добавлено через 9 минут

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

Значит действует еще какое-то привнесенное творчество.
Кроме того макрос сохраняет только вновь созданные книги (созданные в Excel , а не на диске),
(условие If wb.Path = «» Then) на старые не действует.

Добавлено через 8 минут
Если в Excel работает автосохранение, и оно успело сработать, то блок пересохранения не сработает.

Похоже на правду, только изначально я использовал не «If wb.Path…», а «If Not wb Is ActiveWorkbook…», тоже не помогло. Также пробовал «If wb.Name <> Имя_текущего_файла_сохраненного_до_цикла» — тоже не помогло. Мистика



0



4131 / 2235 / 940

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

Сообщений: 4,624

11.12.2015, 18:47

20

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

условие If wb.Path = «» Then) на старые не действует

И не должно
ибо основной задачей было :

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

Имеется несколько открытых, но не сохраненных книг Excel … Требуется всех их сохранить и закрыть

Однако, во избежания потери несохранённых данных — в вариантах из аттача — уже сохраняются все книги, а это условие используется для того, чтобы узнать сохранена или нет книга, ибо у не сохранённой книги нет папки (альтернатива — проверять наличие слэша в полном имени — свойство FullName, но это уже детали)



0



 

Бахтиёр

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

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

Excel 365

Доброе утро.
У меня Office 2013, Win7, на вид экрана (вид рабочего стола, вид папок, вид меню «Пуск») — выбрана тема «Классический».
Если нажать «Пуск», слева, сверху вниз расположены программы, рядом с названием этих программ, справа – маленькие треугольники.
Если нажать на этот треугольник  — откроется список последних открытых файлов именно этой программой.
То есть, если нажать на этот треугольник:
— рядом с «Word» —  откроется список последних открытых Word’овских файлов. (см.скрин1)
— рядом с «XnView» —  откроется список последних файлов, открытых с “XnView”.

Уже 2-3 дня, без видимой причины треугольник Excel’я перестал работать, при нажатии  — никакой реакции. (см.скрин2)
Не помогло удаление и восстановление в этом списке ярлыка Excel.

Никто с такой проблемой не сталкивался?

Прикрепленные файлы

  • скрин1.png (62.85 КБ)
  • скрин2.png (31.63 КБ)

Изменено: Бахтиёр10.10.2016 10:48:08

 

Бахтиёр

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

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

Excel 365

если кто-то сталкивался, подскажите пожалуйста

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

Не совсем понял при чем здесь Excel, но может имеет смысл именно в нем и проверить: установлено ли хранение путей до последних открытых файлов?
Файл -Параметры -Дополнительно -Число элементов в списке последних книг

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Бахтиёр

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

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

Excel 365

#4

11.10.2016 11:03:08

Дмитрий, спасибо, но:

Цитата
The_Prist написал:  Файл -Параметры -Дополнительно -Число элементов в списке последних книг

Это список, который в Файл — Открыть — Последние книги (У меня 2013)

А «Число книг в списке быстрого доступа» — это список, который будет внизу если нажать «Файл».

Цитата
The_Prist написал: проверить: установлено ли хранение путей

этого не понял.

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

Хорошо. Не поняли. Но Вы посмотрели хоть какое у Вас там значение и активно ли? Попробовали его изменять? Ведь именно список последних открытых книг отображается в том пункте, который у Вас сейчас пуст.
Если ни на что не влияет, то опять же: к Excel это вряд ли имеет отношение. Скорее это вопросы к реестру и ПК…

Изменено: The_Prist11.10.2016 11:14:51

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Бахтиёр

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

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

Excel 365

#6

11.10.2016 11:55:02

Цитата
The_Prist написал:
Попробовали его изменять?

Да, когда я меняю эти параметры, меняются количества книг в списках, которые находятся там, где я указал выше.

Может кто-нибудь подскажет как это через реестр исправить?

 

Юрий М

Модератор

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

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

Бахтиёр, думаю, что тему следует переместить в «Курилку» — скорее всего, это проблема ОС.

 

The_Prist

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

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

Профессиональная разработка приложений для MS Office

Тут я уже не понимаю. Если этот пункт помогает — в чем все же проблема? Если ставите галочку и кол-во книг — список в меню Пуск появляется? Или нет?

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Бахтиёр

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

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

Excel 365

#9

11.10.2016 15:41:24

Цитата
Юрий М написал:  тему следует переместить в «Курилку»

Хорошо

Цитата
The_Prist написал:  Если ставите галочку и кол-во книг — список в меню Пуск появляется? Или нет?

Извиняюсь, если объяснял не так.
1) При изменении параметра в «Файл-Параметры-Дополнительно-Число элементов в списке последних книг» меняется список, который находится в «Файл-Открыть-Последние книги»
2) А при изменении параметра в «Файл-Параметры-Дополнительно-Число книг в списке быстрого доступа» меняется список, который находится в «Файл» (снизу)

То есть оба параметра не влияют на тот список, который находится в «Пуск» (тот самый список, который у меня пропал)
:(

P.S.

Скрытый текст

Like this post? Please share to your friends:
  • Excel открытие этого файла заблокировано
  • Excel открытие через delphi
  • Excel открытие файла в новой вкладке
  • Excel открытие новых файлов в новом окне
  • Excel открытие нескольких файлов в одном окне