Страницы: 1
RSS
Смена ориентация у всех файлов в папке, Ориентация группы файлов
 
Всем привет. Подскажите, как установить ориентацию всех файлов в папке на альбомную на листе "Лист1"?  Т.е. что бы при открытии любого файла из папки и вызове диалога печати уже стояла альбомная ориентация.
Изменено: tosick4 - 17.04.2018 11:47:46
 
Travestire file show  :D

Ну как как, или открыть руками и настроит в каждом файле с последующим сохраненим, или поручить всю эту процедуру макросу, который настроит все эти файлы или вставить макрос который сделает это автоматически перед печатью этого листа.....

А вот если там настройки ранее не ставились, тио можно просто у принтера по умолчанию поставить ориентацию листа требуемую, но это и на остальные листы подействует.
По вопросам из тем форума, личку не читаю.
 
Однозначно макрос VBA. Печать пока мне не нужна. Т.е. надо просто сохранить эту настройку в файле.
 
Цитата
tosick4 написал: Однозначно макрос VBA
Перебор файлов в папке
Согласие есть продукт при полном непротивлении сторон
 
Сделал вот такой макрос. Но после обработки нескольких файлов он почему-то останавливается с открытием файла на котором он остановился. Что может быть?
Код
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
Изменено: tosick4 - 17.04.2018 12:41:45
 
Всегда на одном и том же файле останавливается?
Какие-то ошибки выскакивают?
Изменено: Sanja - 17.04.2018 12:55:16
Согласие есть продукт при полном непротивлении сторон
 
Ошибок нет. Если запускать макрос по одному и тому же списку файлов, то он может отработать и 10 секунд и вылететь на одном файле, или работать 30 минут и вылететь на совершенно другом файле. Что характерно, почему-то файл на котором все останавливается открывается но не меняет в нем ориентацию
 
Цитата
tosick4 написал:
Ошибок нет. Если запускать макрос по одному и тому же списку файлов, то он может отработать и 10 секунд и вылететь на одном файле, или работать 30 минут и вылететь на совершенно другом файле. Что характерно, почему-то файл на котором все останавливается открывается но не меняет в нем ориентацию

В момент возникновения ошибки сделайте скриншот и нажмите debug. Так сможем понять и посоветовать.
Вся проблема сложных программ, целых томов кодов и состоит в несоблюдении принципа лезвия Оккама: «Не следует множить сущее без необходимости». Вся гениальность в простоте.
 
Цитата
ProFessor написал:
В момент возникновения ошибки сделайте скриншот и нажмите debug.
Все выглядит так: запускаю макрос, он висит, файлы редактируются, потом в определенный момент файл макроса отвисает открывается Excel файл из списка и все останавливается.  
 
Попробуйте между 14-й и 15-й строкой кода из сообщения #5 вставить такую строку
Код
DoEvents
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
DoEvent
После добавления этой строчки все как рукой сняло. Пол часа - ни разу не вышибло. Я так понял она дает ОС отдуплиться (дабы последняя не решила что макрос завис) и т.о. макрос в цикле и ОС живут в симбиозе?
 
Цитата
tosick4 написал:
т.о. макрос в цикле и ОС живут в симбиозе?
Макросы нет, а вот обращение к принтеру - вполне может. Останов происходил именно когда макрос обращался к принтеру для того, чтобы установить настройки. А DoEvents дал возможность полноценно этот запрос отправить и получить ответ.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
tosick4, попробуйте вставить в цикл счетчик, который будет считать сколько было открыто файлов?
Я сталкивался с таким явлением при использовании команды Dir, что у меня в папке 10 файлов,
а счетчик показывает, что было, скажем, 15 открытий. Т.е. программа не там выходит из цикла Do.......Loop
Страницы: 1
Наверх