Всем привет. Подскажите, как установить ориентацию всех файлов в папке на альбомную на листе "Лист1"? Т.е. что бы при открытии любого файла из папки и вызове диалога печати уже стояла альбомная ориентация.
Ну как как, или открыть руками и настроит в каждом файле с последующим сохраненим, или поручить всю эту процедуру макросу, который настроит все эти файлы или вставить макрос который сделает это автоматически перед печатью этого листа.....
А вот если там настройки ранее не ставились, тио можно просто у принтера по умолчанию поставить ориентацию листа требуемую, но это и на остальные листы подействует.
Сделал вот такой макрос. Но после обработки нескольких файлов он почему-то останавливается с открытием файла на котором он остановился. Что может быть?
Код
Sub Set_Orientation_All_File_from_Folder()
Dim sFolder As String, sFiles As String
sFolder = "d:\temp\Raschet" & "\" 'Папка с файлами
Application.ScreenUpdating = False
'Application.DisplayAlerts = False
sFiles = Dir(sFolder & "*.xls*")
Do While sFiles <> ""
'открываем книгу
Workbooks.Open sFolder & sFiles
'действия с файлом - ставим ориентацю альбомная
ActiveWorkbook.Sheets(1).PageSetup.Orientation = xlLandscape
ActiveWorkbook.CheckCompatibility = False
'Закрываем книгу с сохранением изменений
ActiveWorkbook.Close True 'если поставить False - книга будет закрыта без сохранения
sFiles = Dir
Loop
'возвращаем ранее отключенное обновление экрана
Application.ScreenUpdating = True
End Sub
Ошибок нет. Если запускать макрос по одному и тому же списку файлов, то он может отработать и 10 секунд и вылететь на одном файле, или работать 30 минут и вылететь на совершенно другом файле. Что характерно, почему-то файл на котором все останавливается открывается но не меняет в нем ориентацию
tosick4 написал: Ошибок нет. Если запускать макрос по одному и тому же списку файлов, то он может отработать и 10 секунд и вылететь на одном файле, или работать 30 минут и вылететь на совершенно другом файле. Что характерно, почему-то файл на котором все останавливается открывается но не меняет в нем ориентацию
В момент возникновения ошибки сделайте скриншот и нажмите debug. Так сможем понять и посоветовать.
Вся проблема сложных программ, целых томов кодов и состоит в несоблюдении принципа лезвия Оккама: «Не следует множить сущее без необходимости». Вся гениальность в простоте.
ProFessor написал: В момент возникновения ошибки сделайте скриншот и нажмите debug.
Все выглядит так: запускаю макрос, он висит, файлы редактируются, потом в определенный момент файл макроса отвисает открывается Excel файл из списка и все останавливается.
После добавления этой строчки все как рукой сняло. Пол часа - ни разу не вышибло. Я так понял она дает ОС отдуплиться (дабы последняя не решила что макрос завис) и т.о. макрос в цикле и ОС живут в симбиозе?
tosick4 написал: т.о. макрос в цикле и ОС живут в симбиозе?
Макросы нет, а вот обращение к принтеру - вполне может. Останов происходил именно когда макрос обращался к принтеру для того, чтобы установить настройки. А DoEvents дал возможность полноценно этот запрос отправить и получить ответ.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
tosick4, попробуйте вставить в цикл счетчик, который будет считать сколько было открыто файлов? Я сталкивался с таким явлением при использовании команды Dir, что у меня в папке 10 файлов, а счетчик показывает, что было, скажем, 15 открытий. Т.е. программа не там выходит из цикла Do.......Loop