Страницы: 1 2 След.
RSS
Пакетное сохранение всех открытых файлов Excel
 
Есть такой софт Гранд-смета, он делает экспорт смет в формат Excel. Экспорт может быть пакетным, то есть несколько смет одновременно экспортируются каждая в свой отдельный файл Excel. При этом экспорт идет не как сохранение в файл на диск, а открывается Excel и в нем формируется документ-таблица...и остается висеть открытым! при пакетном экспорте из Гранд-сметы получается куча открытых документов Excel, каждый из которых нужно руками сохранить на диск.

Вопрос: есть ли способ (внутри самой Excel, сторонняя утилита, как угодно) одновременно сохранить все открытые и не сохраненные документы на диск? Спасибо заранее
 
Тут в чем дело: надо же еще знать КУДА сохранять. Т.е. папку какую-то либо задавать жестко в коде, либо давать выбрать. плюс ведь могут быть открыты и другие файлы, верно? Те, которые не были созданы той программой. Как быть?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
куда сохранять надо задать да. обычно пакетный экспорт в эксель делают сметам на один объект, то есть место сохранения для них всех будет один и тот же каталог, который желательно выбрать перед сохранением. проблему других открытых файлов решим просто: их не будет, чтобы не усложнять жизнь.
 
Цитата
kompilainenn написал:
несколько смет одновременно экспортируются каждая в свой отдельный файл Excel
Надо еще понять, каждая смета создается в отдельном экземпляре приложения Excel, или все в одном. Посмотрите Вид - Перейти в другое окно или в диспетчере задач.
 
Цитата
Казанский написал:
Надо еще понять, каждая смета создается в отдельном экземпляре приложения Excel, или все в одном.
имхо. это зависит от настроек системы.
 
Цитата
Казанский написал:
Надо еще понять, каждая смета создается в отдельном экземпляре приложения Excel, или все в одном. Посмотрите Вид - Перейти в другое окно или в диспетчере задач.
да как обычно, открыты несколько документов Эксель.
 
Сохранить все открытые (не скрытые) книги (в одной сессии) в папку C:\1. При условии, что они были выгружены/созданы и еще не были сохранены!
Код
Sub Сохранить()
For Each AW In Application.Windows
If AW.Visible Then Workbooks(AW.Caption).SaveAs Filename:="c:\1\" + AW.Caption + ".xlsx", FileFormat:=xlOpenXMLWorkbook
Next AW
End Sub
Изменено: bedvit - 26.02.2016 12:09:25
«Бритва Оккама» или «Принцип Калашникова»?
 
Скрытый текст
Что будете делать, если файл таким именем в указанной папке существует?
Изменено: JayBhagavan - 26.02.2016 14:12:14

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, а какой будет wb.Name, если файл выгружен и не сохранен? (по условию задачи)
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, а проверить дэбаггером. :)

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, создайте новую книгу и не сохраняя попробуйте посмотреть wb.Name, у меня выдает ошибку.
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, так и делал. У меня ошибку не выдаёт.
Изменено: JayBhagavan - 26.02.2016 12:25:22 (+ скрин)

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, да так и есть, мы говорим о разном, я о Application.Windows, вы о Workbooks. Вопрос снимаю). Но в таком случае будут перебираться все книги, в том числе скрытые (в т.ч. книга личных макросов)
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, если внимательно приглядеться, то есть условие отбора:
Код
Len(wb.Path) = 0

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Небольшое дополнение, Гранд-смета при экспорте присваивает файлу Эксель ИМЯ, которое соответствует имени файла сметы! То есть, если есть возможность, то пакетно сохранять файлы нужно именно под этими, уже существующим именами для каждого файла.  
 
kompilainenn, а Вы таки пробовали это предложенными вариантами сделать?

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, Выходит  все сохраненные файлы - не сохраняются этим кодом, что в рамках задачи. не подкопаешь)) вопросы снимаю. У меня немного другой алгоритм, сохраняются те файла, которые не скрыты.
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, таки да. Сколько людей - столько алгоритмов. :)

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
kompilainenn, именно так два кода и работают.
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
bedvit написал:
именно так два кода и работают.
ну а теперь самое приятное =( у меня не получается код запустить вообще. я что-то не так делаю видимо, чисто технически. дайте пожалуйста пруф на пошаговую инструкцию по исполнению макроса в офис 2010. спс
 
Что такое макросы.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
не получается, выдает ошибку (см.скриншот)
 
kompilainenn, добавьте после:
Код
strPath = Replace(.SelectedItems(1) & "\", "\\", "\") ' полный путь папки
эту строку:
Код
end With
В коде выше исправил эту ошибку.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
парни, я туплю.как сохранить макрос в самом экселе, а не в каком-то файле? так, тупость по поводу сохранения макроса прошла, однако макрос сохраняет в каталог только текущий файл, откуда макрос был запущен
Изменено: kompilainenn - 01.03.2016 10:13:58
 
kompilainenn, почитайте про личную книгу макросов. И про макросы вообще.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
дада, спс, уже почитал, макрос не работает только =(
 
У меня работает.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Видимо, программа все же сохраняет уже куда-то эти файлы и у них есть путь.
Попробуйте вместо строки
Код
If Len(wb.Path) = 0 Then wb.SaveAs strPath & wb.Name

записать:
Код
msgbox "полное имя, включая путь: " & wb.FullName & "; только имя: " & wb.name

если все сообщения покажут полный путь и имя файла - то тогда хоть станет ясно, что сторонняя программа уже сохраняет файлы и подход должен быть иным.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
вот что показывает, два сообщения:
Изменено: kompilainenn - 01.03.2016 13:37:53
 
Тогда код должен работать и сохранять файлы в указанную папку. Но лично я бы еще принудительно формат задал:
Код
wb.SaveAs strPath & wb.Name & ".xlsx",51
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1 2 След.
Читают тему
Наверх