1с нельзя установить свойство fittopagestall класса pagesetup
В методе кнопки получаю/создаю Excel-объект:
Затем идет выгрузка данных (через EXPORT), после чего идет проверка:
Так вот, при выгрузке данных на некоторых машинах срабатывает вот эта проверка. То есть, на большинстве машин выгрузка в Excel происходит успешно, а на некоторых - выдается ошибка, после чего Excel остается висеть в процессах, но нужный файл не формируется.
От чего это может зависеть?
Создание экземпляра Excel должно иметь вид
Все! Никаких ON ERROR и никаких GetObject().
Использование GetObject() плохо тем, что Вы подхватываете экземпляр Excel с которым может происходить какая-то работа. По сути, лезете в чужое приложение, а не создаете свое.
ON ERROR в данном случае плох тем, что даже если ошибка не критичная (т.е. экземпляр Excel тем не менее создался), но Вы все-равно обнуляете ссылку и становится не понятно, в чем же причина ошибки.
Зачем создавать объект Excelя, если выгрузка идет через EXPORT? Или потом созданый файл открывается через loExcel?
Все! Никаких ON ERROR и никаких GetObject().
Использование GetObject() плохо тем, что Вы подхватываете экземпляр Excel с которым может происходить какая-то работа. По сути, лезете в чужое приложение, а не создаете свое.
ON ERROR в данном случае плох тем, что даже если ошибка не критичная (т.е. экземпляр Excel тем не менее создался), но Вы все-равно обнуляете ссылку и становится не понятно, в чем же причина ошибки.
AleksM
Зачем создавать объект Excelя, если выгрузка идет через EXPORT? Или потом созданый файл открывается через loExcel?
Для открытия "готового XLS файла" достаточно ShellExecute - без OLE автоматизации экселя. для автоматизации же (ибо после COPY TO получается не отчёт а убогая и корявая таблица) лучше использовать CreateObject, по причинам указанным Владимиром.
Исправлено: Igor Korolyov, 19.01.11 15:15
Igor Korolyov
Для открытия "готового XLS файла" достаточно ShellExecute - без OLE автоматизации экселя.
В общем, переделал как советовали и выяснилось, что проблема была следующая.
Подробнее: есть вот такой код:
При отработке выдает вот такую ошибку:
1429 OLE IDispatch exception code 0 from Microsoft Excel: Нельзя установить свойство PrintQuality класса PageSetup..
Как лучше всего обойти эту проблему? (А то я пока что имею представление лишь о закомменчивании упомянутой строки. )
Ага, спасибо, понял! Но теперь другой вопрос: сделал вот так
Ругается на:
1426 Ошибка OLE, код 0x80070057: The parameter is incorrect
Есть ли рабочий вариант код с этим самым PrintQuality?
Я бы вообще не занимался настройкой параметров страницы из кода - это отнимает много времени. Проще создать шаблон с настроенными параметрами и использовать его.
Присвоить свойству значение массива можно с помощью ArrayPasser - специальной процедуры возвращающей массив (работает в VFP9) - иначе массивы передаются только в методы, но не при присовении значений свойств.
С другой стороны, это скорее всего ничем не поможет в начальной проблеме. PageSetup может ВООБЩЕ не работать, если к примеру на целевой машине не "установлено" ни одного принтера. Т.е. если уж дёргаешь потенциально неработающие свойства-методы, то будь готов обрабатывать возникающие ошибки.
Igor Korolyov
Присвоить свойству значение массива можно с помощью ArrayPasser - специальной процедуры возвращающей массив (работает в VFP9) - иначе массивы передаются только в методы, но не при присовении значений свойств.
С другой стороны, это скорее всего ничем не поможет в начальной проблеме. PageSetup может ВООБЩЕ не работать, если к примеру на целевой машине не "установлено" ни одного принтера. Т.е. если уж дёргаешь потенциально неработающие свойства-методы, то будь готов обрабатывать возникающие ошибки.
Угу, у пользователей вообще целый зоопарк машин и принтеров. Дело кончилось тем, что я вообще весь PageSetup из кода убрал. Зато хоть выгружаться стало у всех.
Посмотрел, спасибо! Вот только топикстартер еще только готовится наступить на "мои" грабли. Счас туда скину ссылку на эту тему.
А как можно сделать так, чтобы при выгрузке из 1С 8 методом "сохранить как. " в екселе сразу устанавливался формат "по ширине страницы"?
Возможно в екселе 2007 есть галочка, где поставить можно, но что то не могу найти.
(1) Пользуясь тем же методом что и автор, можно много чего раскопать =).
В екселе есть несколько отличный от 1с способ установки масштаба: количество страниц в ширину и в высоту. Чтоб добиться нужного результата (установки печати по ширине страницы) можно задать одну страницу в ширину и заведомо большое значение в высоту. Например так:
Ехсел=СоздатьОбъект("Excel.Application");
.
.
Ехсел.ActiveSheet.PageSetup.Orientation = 1; //ориентация
Ехсел.ActiveSheet.PageSetup.PaperSize = 9; //размер бумаги
Ехсел.ActiveSheet.PageSetup.Zoom = False;
Ехсел.ActiveSheet.PageSetup.FitToPagesWide = 1;//страниц в ширину
Ехсел.ActiveSheet.PageSetup.FitToPagesTall = 100;//страниц в высоту
(3) Alltruist, спасибо, конечно, пригодится. Но проблему мою это не решит. Тут не лезу в код, использую встроенную в 1с возможность выгрузки, и в момент открытия в екселе, надо найти где это сделать. В разметке страницы есть опция, но она уже на сформированном листе действует, а мне хотелось до того как. Ну если нельзя, то придется написать выгрузку, и буду очень благодарна автору топика за мастер-класс. Жду развития и продолжения.
Полезная статья. Добавлю еще пример программного создания макроса в Excel из 1С
xl=CreateObject("Excel.Application");
wb=xl.Workbooks.Add();
xl.VBE.ActiveVBProject.VBComponents(1).CodeModule.AddFromString("public sub Hello" +
РазделительСтрок+ "MsgBox(""Hello World!"")" + РазделительСтрок + "end sub");
wb.SaveAs("Test.xls");
xl.run("ЭтаКнига.Hello");
wb.Close();
xl.quit();
вообще, если читать документацию внимательно, можно без зазрения совести писать:
Ехсел.Cells(1, 3).LocalFormula = "=СЦЕПИТЬ(E1;C7)";
Спасибо за комментарии и отзывы - очень приятно. И правильно Вы заметили - цель этой статьи, не "тупо" дать алгоритм на копипаст
а рассказать , как несложными действиями самому научится находить ответ на нужный вопрос.
Отдельное спасибо (4) MoneG2 , как он правильно указал есть еще одно решение данного вопроса и это показывает и еще раз доказывает , что в программировании - любую задачу, можно решить РАЗНЫМИ способами.
Спасибо (3) Alltruist - за добавление к статье, очень хороший пример.
(6) larisab , как то решал твою "проблему" следующим способом
ручками написать макрос и его в автозагрузку (личную книгу макросов)
он смотрит при открытии файла , если есть определенная метка
например в ячейке "AW" = 1
значит такой формат листа
если 2 то другой
и так до бесконечности.
а при написании кода в 1С , ты помнишь и формируешь таблицу
согласно правилам данного макроса.
и вот теперь . только пользуясь стандарным методом "Сохранить как. "
в Еxcel у тебе будет все в шоколаде )))
это не панацея это только пример.
(кстати у меня в публикация есть пример создания макроса из 1С)
(4) и (7) заодно: Не корысти ради, а токмо волею пославшей.
- не LocalFormula, а FormulaLocal;
- если нет планов по распространению за границы, то (лучше?) быстрее писать в родной локали, ибо не придется так нудно выяснять, что СЦЕПИТЬ шифруется как CONCATENATE;
- и если кому-то вдруг да придется разбираться со множеством формул, так для перевода локализованных названий функций в оригинальные существует прямо от авторов Екселя секретная книга FUNCS.XLS, спрятанная где-то в недрах типа "X:\Program Files\Microsoft Office\Office12\1049\FUNCS.XLS", и там все-все имена расписаны: откроешь её, и сразу можно узнать, что ОКРУГЛТ - это MROUND и тому подобное
nekit_rdx; Slypower; bow; freeek; Dolly_EV; lushka; fisherboy; hotey; larisab; Alltruist; JohnyDeath; Tatitutu; + 12 – Ответить
+(44) Program Files\Microsoft Office\OFFICE1 1 \1049 - для 2003 Офиса
а еще красота в том, что можно самому из 1С написать функцию и уже в ячейках ссылаться на нее. и она будет доступна в меню -вставка -функция- пользовательские
для этого совсем необязательно куда-либо за рубеж выезжать.
достаточно чтобы сервер стоял не русский, а ваш код выполнился на сервере. или офис был не русский. частая ситуация.
а ещё проблемы с переносом кода в оупен-офис.
(46) "достаточно чтобы сервер стоял не русский, а ваш код выполнился на сервере. или офис был не русский. частая ситуация" - Ох! Сочувствую, если для вас это частая ситуация. Но - по-моему - это лишь когда админ ненавидит локализованные версии чего бы то ни было, и ставит всё везде аглицкое. (Я о таких админах только слыхал. )
Вот ОпенОффис - это да, этот, видимо, может понимать или не понимать разные функции саавсем по-разному; но с ним не пришлось мне работать.
(45) Буквоедство я тоже люблю. Ну так сложилось, у меня лично есть и OFFICE11, и OFFICE12, и там и там есть FUNCS.XLS, и вообще он был в соответствующей папке со времен Офиса 97.
(47) и (49) - константы быстрее всего смотреть из редактора VBA, но без всякого F2 и поиска, а правой кнопкой по имени константы и выбрать Quick Info.
А БОЛЬШОЙ список внутренних констант находится в справке Excel: для Офиса 2003: F1 - Оглавление - Microsoft Excell Visual Basic Reference - Enumerations - Microsoft Excell Constants, вверху справа жмакнуть "Показать все" и смотреть все, смотреть, смотреть. Вот, правда, пояснений там нет. Да! И еще надо, чтоб при установке Офиса справку по VBA тоже установили.
при работе из 1с с ОО итак есть проблемы (одинэсный код для Екселя и ОО несколько отличается!) Поэтому, например, когда я писал обработку, которая должна была работать и там и сям, приходилось проверять на установленность екселя на компе.
Лично мне понравилось скрещивать 1с с другими системами, всвязи с этим пригодилась книга А.Михайлова "1С предприятие системное программирование".
работать это будет только с русской локалью.
А у меня другой вопрос. Чем отличаются свойства "FormulaR1C1", "Formula"? (по-моему еще какие-то "Формулы" были)
(9) "FormulaR1C1" - предопределяет использование ссылок типа "R1C1". Т.е. в не зависимости от того как у тебя в настройках стоит обозначение ссылок (буквы или цифры). Лучше использовать, так как неоднократно сталкивался с тем, что обработка создающая Экселевский файл прекрасно создавала на одном компе и "спотыкалась" на другом. А вся проблема была только в "цифро-буквенном" обозначении.
В дополнение к (12):
Для уже ранее созданного файла не имеет значение, какая формула стоит. Но вот при создании из 1С файла Эксель локальные настройки бывают критичны.
А у меня другой вопрос. Чем отличаются свойства "FormulaR1C1", "Formula"? (по-моему еще какие-то "Формулы" были)
Лично я редко использую Ексель, еще реже Ексель+1С. Но, Ексель - поистине мат. комбайн :D Например, можно встроенными функциями решать задачи оптимизации (без долгого и трудного написания кода на 1с), в Екселе есть прекрасный поиск решения! - Для решения оптимизационных задач, задач рассчета з/п - сам лично его применял.
кому будет интересно по работе с VBA MS EXCEL
посмотрите вложенный файл
называется "Справка-расчет денежной компенсации за вещевое имущество"
этот программа на макросах была написана " в окопе, на сапоге убитого командира.." во время бурной молодости и славной службы в ВС РФ.
и не поверите заняла почетное 3-е место в конкурсе Microsoft Office Extensions в 2003 г. (подарили полный набор офиса 2003 на 18 компакт дисках, сертифакт, пресса. вообщем приятно было)
Выбор пал (а это был 2001 год на EXCEL, только из-за доступности для военнослужащих т.к. про 1С . ну вообщем вы поняли)
На сладкое.
К последней фразе поста автора. И к наступающему. :D
Если 1С считать (а оно так и есть по сути) надстройкой на экселем,
то мы имеем воплощенную мечту идиота, которая выражается тостом:
"За то чтобы ваши желания охренели бы перед вашими возможностями!"
Заметка полезная, но количество плюсов говорит только о том, что подавляющее большинство программистов ленится просто погуглить (я уж молчу про чтение мануалов или спецлитературы).
(22) по оценке самих специалистов MS Oficce
среднестатический пользователь EXCEl использует его возможности только на 5-7% . А возможности его безграничны.
ситуация , когда начинайщий программист (да и не только ) тупо скопипастил какую либу функцию или процедуру и даже не разобрался что она делает и КАК ОНА это делает (работает и работает)- думаю в пример приводить не стоит.
А вот когда человек сам доходит до этого, сам нашел и разобрался, как найти , как научится - это намного ДОРОЖЕ любого ПЛЮСА, это плюс в ЕГО копилку знания и опыта. Вот цель этой статьи.
(22) Ты меня не так понял - никаких претензий к твоей заметке я не имею, и уж тем более плюсам не завидую.
Я просто отметил весьма быстрый прирост плюсов и сделал вывод, которым и поделился.
(22) Однако если плюсАми меряться , то Noy круче чем Tatitutu. :-)
А заметка действительно, сомнительная. С тем же успехом можно и другие, не менее очевидные вещи публиковать.
(25) К чему ты это написал ? кто такой Noy и его работы - я прекрасно знаю - и уважаю его и его мнение , как и каждого участника нашего сообщества.
хотелось сказать, но думаю , не достаточно правильно смогу сформулировать свою мысль .
- самый ДОРОГОЙ это первый ПЛЮС и самый горький это первый МИНУС
(но полюбому это ОПЫТ набранный тобой, ты учишся, ты начинаешь понимать, вникать, перенимать азы общения )
знаешь анекдот:
Вовочка папе:
- пап, мы сегодня кружочки в классе рисовали, и у меня
лучше всех получился. Это потому, что я сын нового русского ?
- да, сынок !
- пап, а на переменке с мальчишками в туалете . письками мерялись, это потому что я сын нового русского ?
- да, сынок и не только, ведь тебе уже 22 годика.
А мерять плюсами людей - это в корне НЕПРАВИЛЬНО , а тебе по твоей же ОЦЕНКЕ - нарушаешь суббординацию. Было бы у тебя плюсов больше, чем у Noy вот тогда бы и сравнивал. Надеюсь ты меня услышал.
я добавил к статье пример задачи (ЗАДАЧА №1 и ответ к ней, но он под паролем ) специально для поста (25)
(32) Ты же сам плюсанул пост (26), а теперь начинаешь мерятся?
Прям как дети малые.
(33) :o нет я не мерится собрался, вернее даже и не собирался. А как порядочный преподователь к статье - выложил "домашнее" задание.
(32) Задача мне неинтересна. Как и процесс мерянья плюсами. А вот люди, меряющиеся интересны :-)
Пошёл за кукурузой.
этот программа на макросах была написана " в окопе, на сапоге убитого командира.." во время бурной молодости и славной службы в ВС РФ.
Вопрос похожий но не совсем Можеть кто поможет:
нужно также Из 1С записать состояние группы: "Разгруппировать"
VBA выглядеть так :
ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
(29) не вопрос. Подожди минут 20 напишу прямо здесь . Обед сейчас (война - войной, а обед по распорядку (с))
продолжение [29]
ф=Ексель.Range(Область).Select;
ф=Ексель.Selection.Columns.Group;
а В Ексель итак-то оказывается группа откроется раскрытым, мне наоборот надо закрыть группу при открытии
Мы часто печатаем вещи в своей работе и вручную устанавливаем некоторые параметры, например, горизонтальную или вертикальную печать. Разберитесь в свойствах PageSetup, задайте параметры печати с помощью нескольких коротких строк кода, затем вы можете установить их один раз, использовать постоянно, удобно и эффективно.
Объект PageSetup представляет инструкции по настройке страницы. Содержит все свойства настроек страницы (левое поле, нижнее поле, размер бумаги и т. Д.).
В следующем примере устанавливается альбомная ориентация печати, а затем выполняется печать рабочего листа.
Атрибуты | Описание |
---|---|
FirstPageNumber | Вернуть или установить номер первой страницы при печати указанного рабочего листа. Если установлено значение xlAutomatic, Microsoft Excel использует номер первой страницы. Значение по умолчанию - xlAutomatic. Длинный шрифт, читаемый и записываемый. |
FitToPagesTall | Верните или установите высоту страницы, используемую для масштабирования листа при его печати. Применяется только к рабочим листам. Тип варианта, читаемый и записываемый. |
FitToPagesWide | Верните или установите ширину страницы, используемую для масштабирования рабочего листа при его печати. Применяется только к рабочим листам. Тип варианта, читаемый и записываемый. |
Orientation | Возвращает или задает значение XlPageOrientation, которое представляет портретный или альбомный режим печати. |
Pages | Возвращает или задает количество страниц в коллекции Pages. |
PaperSize | Верните или установите размер бумаги. Может читать и писать XlPaperSize. |
PrintQuality | Вернуть или установить качество печати. Тип варианта, читаемый и записываемый. |
Zoom | Возвращает или задает значение Variant, которое представляет собой процентное значение от 10% до 400%. Этот процент представляет собой коэффициент масштабирования, когда Microsoft Excel печатает рабочий лист. Это свойство применяется только к листам. Если для этого атрибута установлено значениеFalse, ЗатемFitToPagesWide с участием FitToPagesTallАтрибуты определяют способ масштабирования листа. При любом увеличении сохраняется соотношение сторон исходного документа. |
В этом примере Sheet1 настраивается для печати в альбомной ориентации.
2. Свойства, соответствующие вкладке «Поля».
Установление и возврат маржи в пунктах. быть полезнымInchesToPoints Метод преобразования дюймов в фунты, вы также можете использоватьCentimetersToPoints Метод перевода сантиметров в точки.
Точка: относится к единице измерения высоты печатаемых символов. Фунт равен 1/72 дюйма или примерно равен 1/28 сантиметра. )
Атрибуты | Описание |
---|---|
BottomMargin | Возвращает или задает размер нижнего поля в пунктах. Двойной тип, читаемый и записываемый. |
CenterHorizontally | Если указанный рабочий лист напечатан в центре страницы по горизонтали, значение атрибута равно True. Логический тип, доступный для чтения и записи. |
CenterVertically | Если указанный рабочий лист напечатан в центре страницы по вертикали, значение атрибута равно True. Логический тип, доступный для чтения и записи. |
FooterMargin | Вернуть или установить расстояние от нижнего колонтитула до низа страницы в пунктах. Двойной тип, читаемый и записываемый. |
HeaderMargin | Вернуть или установить расстояние от верха страницы до верхнего колонтитула в пунктах. Двойной тип, читаемый и записываемый. |
LeftMargin | Возвращает или задает размер левого поля в пунктах. Двойной тип, читаемый и записываемый. |
RightMargin | Возвращает или задает размер правого поля в пунктах. Двойной тип, читаемый и записываемый. |
TopMargin | Возвращает или задает размер верхнего поля в пунктах. Двойной тип, читаемый и записываемый. |
В следующем примере устанавливаются все поля первого листа.
Эти два свойства аналогичны настройке содержимого ячейки по центру по горизонтали и вертикали.
3. Свойства, соответствующие вкладке «Верхний / нижний колонтитул».
Атрибуты | Описание |
---|---|
AlignMarginsHeaderFooter | Если Excel выравнивает верхний и нижний колонтитулы с полями, заданными в параметрах настройки страницы, он возвращает True. Чтение / запись логического типа. |
CenterFooter | Отцентрируйте информацию нижнего колонтитула в объекте PageSetup. Чтение / запись типа String. |
CenterFooterPicture | Возвращает графический объект, который представляет изображение в средней части нижнего колонтитула. Используется для установки атрибутов, связанных с изображением. |
CenterHeader | Выровняйте информацию заголовка по центру объекта PageSetup. Чтение / запись типа String. |
CenterHeaderPicture | Возвращает графический объект, который представляет изображение в средней части заголовка. Используется для установки атрибутов, связанных с изображением. |
DifferentFirstPageHeaderFooter | Истинно, если на первой странице используется другой верхний или нижний колонтитул. Чтение / запись логического типа. |
LeftFooter | Возвращает или задает выравнивание текста в левом нижнем колонтитуле книги или раздела. |
LeftFooterPicture | Возвращает графический объект, который представляет изображение в левой части нижнего колонтитула. Используется для установки атрибутов, связанных с изображением. |
LeftHeader | Возвращает или задает выравнивание текста в левом заголовке книги или раздела. |
LeftHeaderPicture | Возвращает графический объект, который представляет изображение в левой части заголовка. Используется для установки атрибутов, связанных с изображением. |
OddAndEvenPagesHeaderFooter | Если нечетные и четные страницы указанного объекта PageSetup имеют разные верхние и нижние колонтитулы, значение этого атрибута равно True. Логический тип, доступный для чтения и записи. |
RightFooter | Возвращает или задает расстояние (в пунктах) между правым краем страницы и правым краем нижнего колонтитула. Чтение / запись типа String. |
RightFooterPicture | Возвращает графический объект, который представляет изображение в правой части нижнего колонтитула. Используется для установки атрибутов изображения. |
RightHeader | Вернуть или установить правую часть заголовка. Чтение / запись типа String. |
RightHeaderPicture | Укажите графическое изображение, которое должно отображаться в правом заголовке. Только чтение. |
ScaleWithDocHeaderFooter | Возвращает или задает, будут ли масштабироваться верхний и нижний колонтитулы вместе с документом при изменении размера документа. Чтение / запись логического типа. |
4. Свойства, соответствующие вкладке «Рабочий лист»
Атрибуты | Описание |
---|---|
BlackAndWhite | Если элементы в указанном документе напечатаны черно-белыми, значение атрибута равно True. Логический тип, доступный для чтения и записи. |
Draft | Если графика на листе не печатается при печати, значение атрибута равно True. Логический тип, доступный для чтения и записи. |
Order | Возвращает или задает значение XlOrder, которое представляет порядок, который Microsoft Excel использует для нумерации страниц при печати большого рабочего листа. |
PrintArea | Верните или установите область для печати в виде строки, которая использует ссылку стиля A1 макроязыка. Тип строки, доступный для чтения и записи. |
PrintComments | Вернуть или установить способ печати комментариев на листе. Тип XlPrintLocation, доступный для чтения и записи. Вы можете распечатать комментарии в виде текстовых полей или концевых сносок. |
PrintErrors | Устанавливает или возвращает константу XlPrintErrors, которая указывает тип отображаемой ошибки печати. Эта функция позволяет пользователям отменять отображение ошибок при печати рабочего листа. Могу читать и писать. |
PrintGridlines | Если линии сетки ячеек напечатаны на странице, значение равно True. Применяется только к рабочим листам. Логический тип, доступный для чтения и записи. |
PrintHeadings | Если заголовки строк и столбцов печатаются одновременно при печати этой страницы, значение равно True. Применяется только к рабочим листам. Логический тип, доступный для чтения и записи. |
PrintNotes | Если при печати рабочего листа комментарии к ячейкам печатаются вместе как концевые сноски, значение равно True. Применяется только к рабочим листам. Логический тип, доступный для чтения и записи. |
PrintTitleColumns | Возвращает или задает столбец, содержащий ячейки, которые повторно появляются в левой части каждой страницы, выраженные строкой на языке макросов в стиле A1. Тип строки, доступный для чтения и записи. Установите для этого атрибута значениеFalseИли пустая строка (""), строка заголовка будет закрыта. |
PrintTitleRows | Возвращает или задает те строки, которые содержат ячейки, которые многократно появляются в верхней части каждой страницы, выраженные в нотации стиля A1 с помощью строк макроязыка. Тип строки, доступный для чтения и записи. |
Комментарий будет напечатан на новой странице.
5. Атрибуты, не соответствующие вкладкам
Атрибуты | Описание |
---|---|
Application | Если идентификатор объекта не используется, это свойство возвращает объект Application, представляющий приложение Microsoft Excel. Если используется идентификатор объекта, это свойство возвращает объект Application, представляющий создателя указанного объекта (вы можете использовать это свойство в объекте автоматизации OLE, чтобы вернуть приложение объекта). Только чтение. |
Creator | Возвращает 32-битное целое число, указывающее приложение, создавшее объект. Только чтение Длинный тип. |
EvenPage | Возвращает или задает выравнивание текста на четных страницах книги или раздела. |
FirstPage | Возвращает или задает выравнивание текста на первой странице книги или раздела. |
Parent | Возвращает родительский объект указанного объекта. Только чтение. |
Range.PrintOut метод
Этот метод эквивалентен нажатию кнопки печати в Excel для выполнения операции печати. Этот метод позволяет указать принтер для печати.
Выражение выглядит следующим образом.
.PrintOut(From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate, PrToFileName)
название | Описание |
---|---|
From | Номер начальной страницы для печати. Если этот параметр не указан, печать начнется с начальной позиции. |
To | Номер конечной страницы печати. Если этот параметр не указан, печать будет до последней страницы. |
Copies | Количество копий для печати. Если этот параметр не указан, будет напечатана только одна копия. |
Preview | Если этоTrue, Microsoft Excel вызовет предварительный просмотр перед печатью объекта. Если этоFalse(Или опустите этот параметр), объект будет немедленно напечатан. |
ActivePrinter | Задайте имя активного принтера. |
PrintToFile | Если этоTrue, Затем распечатайте в файл. Если не указаноPrToFileName, Microsoft Excel предложит пользователю ввести имя файла вывода, который будет использоваться. |
Collate | Если этоTrue, Печать нескольких копий с подборкой. |
PrToFileName | в случае PrintToFileУстановить какTrue, Параметр указывает имя файла для печати. |
Заметка:From с участием ToОписанная «страница» относится к странице, которая будет напечатана, а не ко всем страницам в указанном листе или книге.
Публичный аккаунт WeChat: VBA168
Обратите внимание на общедоступную учетную запись WeChat и каждый день получайте объяснения классических примеров Excel VBA.
dasha.jatsenko Пт Апр 10, 2015 14:29
Помогите, пожалуйста!
При формировании сметы в excel пишет:
Run-time error `1004`:
Нельзя установить свойство PrintTitle Rows класса PageSetup
Ваша реклама
bloody Пт Апр 10, 2015 14:40
Добрый день (распространенная ошибка)
Обычно нужно назначить принтер по умолчанию в панели управления - принтеры и другое оборудование - принтеры и факсы – и через ПКМ задать принтер по умолчанию ( или сменить на любой другой из списка)
П.С. больше данных давайте при задании вопроса
-Версия программы
-какой Windows
-Версия Exсel
dasha.jatsenko Пт Апр 10, 2015 16:01
dfy.irf Пт Июл 17, 2015 10:48
Timur Пт Июл 17, 2015 11:10
dfy.irf Пт Июл 17, 2015 11:34
Спасибо! только не могу посмотреть пишет( Вы не авторизованы для чтения этого форума) логин и пароль введены
arbeiten Пт Июл 17, 2015 11:42
dfy.irf писал(а): Спасибо! только не могу посмотреть пишет( Вы не авторизованы для чтения этого форума) логин и пароль введены
dfy.irf Пт Июл 17, 2015 11:46
Timur Пт Июл 17, 2015 12:10
1. Необходимо в центре управления безопасности Excel выставить необходимые параметры блокировок (см. рис1. )
2. Необходимо в центре управления безопасности Excel указать каталоги надежных расположений (см. рис2. )
dfy.irf Пт Июл 17, 2015 13:39
arbeiten Вт Авг 11, 2015 17:38
Timur Ср Авг 12, 2015 10:14
Проблема в том, что имеются определенные ограничения в Excel, связанные с построением формул и одно из них такое: текстовые значения в формулах не могут быть длиннее 255 символов. В вашем случае длина формулы на объем превышает 255 символов. Эту проблему конечно можно обойти, но насколько она критична, что бы решать ее в ближайшем патче? Что за формула такая и насколько высока вероятность, что такое может встретиться в реальной жизни при составлении сметы. Мне кажется, что вероятность близка к нулю.
Ссылка на эту же тему
arbeiten Ср Авг 12, 2015 11:23
Timur писал(а): Проблема в том, что имеются определенные ограничения в Excel, связанные с построением формул и одно из них такое: текстовые значения в формулах не могут быть длиннее 255 символов. В вашем случае длина формулы на объем превышает 255 символов. Эту проблему конечно можно обойти, но насколько она критична, что бы решать ее в ближайшем патче? Что за формула такая и насколько высока вероятность, что такое может встретиться в реальной жизни при составлении сметы. Мне кажется, что вероятность близка к нулю.
Ссылка на эту же тему
Timur Ср Авг 12, 2015 11:34
занесли 13860. И все же интересно зачем столько слагаемых? И нужны ли они в таком виде в выходной форме?
arbeiten Ср Авг 12, 2015 18:17
У меня есть принтер этикеток Brother QL-720NW, на котором я хочу напечатать несколько этикеток.
В принтере есть рулон шириной 62мм.
Когда я пытаюсь что-то напечатать на нем, мне нужно настроить страницу и определить размер страницы. Если размер страницы неправильный (ширина более 62 мм), принтер ничего не печатает.
Вот пример кода, который у меня есть:
Теперь у меня 3 вопроса:
1: В .PaperSize = xlPaperUser я получаю ошибку выполнения «1004». Невозможно установить PaperSize класса PageSetup. Что здесь не так?
2: Как установить размер бумаги примерно 62 мм x 50 мм?
3: Даже когда я определяю область печати как Range ("Img"), он все равно печатает весь лист.
Кстати, я новичок в vba, это моя первая попытка использовать vba.
2 ответа
Вопрос 1
xlPaperUser - это определяемый пользователем размер бумаги, которому присвоено постоянное значение 256. Если это не было определено, может возникнуть ошибка.
Вопрос 2
В Excel нет возможности создавать нестандартные размеры бумаги, однако вы можете создавать нестандартные размеры бумаги на многих принтерах. В разделе «Параметры страницы» нажмите кнопку «Параметры». Откроется диалоговое окно свойств принтера. Измените размер бумаги на нестандартный с помощью этого диалогового окна и нажмите OK.
Затем в Excel запустите это: MsgBox PageSetup.PaperSize . Это даст вам новое постоянное значение, присвоенное этому размеру бумаги в Excel. Затем измените .PaperSize = xlPaperUser в вашем макросе на .PaperSize = и любую константу, которую вы только что нашли.
Вопрос 3
.PrintArea принимает строковый ввод, а не диапазон. Измените строку на ActiveSheet.PageSetup.PrintArea = Range("Img").Address , и она должна работать.
Я хотел бы добавить к этому.
Вы также можете добавить эту строку Application.Dialogs(xlDialogPageSetup).Show
Примером может быть:
Это предлагает пользователю выбрать размер страницы в зависимости от выбранного принтера. Я использую его для печати книги с несколькими вкладками одновременно и только с нужными вкладками.
Читайте также: