Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

26 Сентябрь 2021, 03:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3 4 5 6 7 8 9 »   Вниз
  Печать  
Автор Тема: макрос для печати всех файлов в той же папке, в которой находится файл с макросо  (Прочитано 36881 раз)
0 Пользователей и 1 Гость смотрят эту тему.
economist
Форумчанин
***
Offline Offline

Сообщений: 1 546


« Ответ #43155: 8 Сентябрь 2017, 09:20 »

Вот интересно, эта ветка наберет 100 страниц или нет? Копеечная проблема - уже отняла у людей несколько часов.
А причина в том, что ТС не смог четко и сразу описать что нужно. Здесь срабатывает горькое правило - переделка 1-й строки кода занимает столько же времени, сколько нужно на написание 10% всего кода.

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

Option VBASupport 1
Option Compatible
' работает и в Excel, и в LibreOffice Calc (в OpenOffice "Инфра" и нек-ых др. - работает)

Sub Print_All_XLS_From_This_Directory()
' Макрос печатает все XLS из "этого" каталога на принтер по умолчанию
katalog=ThisWorkbook.Path     ' текущий путь
'katalog="C:\DOWNLOAD\!TEST" ' или явный каталог, но без \
failik=dir(katalog & "\*.xls") ' поискали первый XLS
While failik<>""  ' делаем цикл пока находятся еще XLS-ы
if failik<>ActiveWorkbook.Name then ' если это НЕ файл с этим макро, то
Workbooks.open(katalog & failik)' открыли
Workbooks(failik).Sheets(1).PrintOut ' напечатали 1-й лист
wait(500) ' подождали зачем-то (spooler в Win капризен!)
Workbooks(failik).Close ' закрыли
failik=dir() ' еще раз поискали XLS-ы
Else
failik=dir() ' и поискали XLS, если это был "Я"
End if
Wend
End Sub


Еще раз призываю форумчан к активному юзанию VBA-кода внутри StarBasic-кода в LibreOffice.
Это дает ускорение программированию в десятки раз по сравнению с чистым StarBasic-ом.
Код выше написан по памяти, без заглядывания в справку и Интернет, просто потому что объектная модель VBAExcel
идеально проста и хорошо запоминается, команды - короткие. А в Сети - инфы с кусками кода по VBA столько, что это превышает
инфу по всем другим языками программирования, вместе взятым.
VBA - самый популярный язык программирования, на нем пишут около 15 млн. человек во всем мире.  
Выше - наглядное преимущество майкрософтовского диалекта и подтверждение правильности шагов разработчиков OpenOffice|LibreOffice в этом направлении (VBA в SB).

Макросы - последний "бастион" Экселя, после которого Calc станет фактически ему равен по силе и возможностям. И это достойное соревнование, ведь Excel - одно из самых популярных приложений в мире (для PC), с 32-х летней историей и именно он сделал компьютеры персональными, и привел их в бизнес навсегда. С пятницей, друзья! https://ru.wikipedia.org/wiki/Microsoft_Excel
« Последнее редактирование: 8 Сентябрь 2017, 09:30 от economist » Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Страниц: « 1 2 3 4 5 6 7 8 9 »   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!