Текущее время: Вт, июл 22 2025, 16:22

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Как с помощью ABAP изменить высоту строки в EXCEL.
СообщениеДобавлено: Чт, ноя 08 2012, 12:15 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Ср, окт 05 2011, 17:54
Сообщения: 87
Пол: Мужской
Добрый день.
Подскажите пожалуйста как с помощью ABAP изменить высоту строки в EXCEL документе.
Еще хотелось бы узнать как возможно узнать высоту строки в EXCEL с помощью ABAP.

Заранее спасибо.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как с помощью ABAP изменить высоту строки в EXCEL.
СообщениеДобавлено: Чт, ноя 08 2012, 12:25 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
Как с Excel работаете? через OLE?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как с помощью ABAP изменить высоту строки в EXCEL.
СообщениеДобавлено: Чт, ноя 08 2012, 12:44 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Ср, окт 05 2011, 17:54
Сообщения: 87
Пол: Мужской
Да через OLE.

У меня стоит достаточно простая задачка, но я ее не могу реализовать.
У меня есть шаблон EXCEL шаблон. При выгрузке мне необходимо, чтобы высота ячейки сама устанавливалась, но так как у меня ячейки объеденные( несколько ячеек в строке) автоматом высота не устанавливается. Решил во время выгрузки в соседнюю колонку выгружать текст, который выгружается в объединенные ячейки. Т.к. там ячейка одна, то там высота устанавливается и у всей строки стоит нужная мне высота. Если же удалить этот текст, то высота поменяется на стандартную.
Я захотел узнать высоту строки, применить ее и потом очистить ячейку по которой устанавливалась высота, но реализовать как это не знаю.

Посмотрел как VBA делает изменение строки.

Rows("21:21").Select
Selection.RowHeight = 4

Решил сделать похожие действия с помощью ABAP.

Написал вот такие строчки.

CALL METHOD OF excelapp 'Rows' = excelrows NO FLUSH QUEUE-ONLY
EXPORTING
#1 = is_stempl-row. " is_stempl-row TYPE i.

А дальше остановился т.к excelrows у меня почему то пустой.
А раз он пустой, то выбрать его я не смогу.
Понять из за чего он не заполнился не могу.
Дальше тоже немного все в тумане, но подозреваю, что необходимо создать объект Selection.
И через него узнать высоту строки и установить ее.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как с помощью ABAP изменить высоту строки в EXCEL.  Тема решена
СообщениеДобавлено: Чт, ноя 08 2012, 12:51 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
Code:
REPORT  zexc.
DATA:
      tmp TYPE c LENGTH 100,
      application  TYPE ole2_object,  " Application (EXCEL)
      workbooks    TYPE ole2_object,  " Workbooks
      workbook     TYPE ole2_object,  " Workbook
      worksheet   TYPE ole2_object,
      rows TYPE ole2_object.
IF application-header = space OR application-handle = -1.
  CREATE OBJECT application 'EXCEL.APPLICATION'.
ENDIF.
CALL METHOD OF
    application
    'Workbooks' = workbooks.
CALL METHOD OF
    workbooks
    'Open'    = workbook
  EXPORTING
    #1        = 'D:\цена.xls'. " нужный файл
CALL METHOD OF
    workbook
    'Sheets' = worksheet
  EXPORTING
    #1       = 1.
CALL METHOD OF
    worksheet
    'Rows'    = rows
  EXPORTING
    #1        = 1. " первая строка
GET PROPERTY OF rows
'RowHeight' = tmp.
CALL METHOD OF
    application
    'Quit'.
WRITE tmp.

Цитата:
А дальше остановился т.к excelrows у меня почему то пустой

В отладчике состояния OLE объектов не посмотреть нормально, автоматизация :twisted: , выводите проверочную информацию WRITE-ми.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как с помощью ABAP изменить высоту строки в EXCEL.
СообщениеДобавлено: Чт, ноя 08 2012, 13:00 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва
Самый простой способ - зарезервировать в этой строке столбец нужной ширины, установить свойство Переносить по словам, установить шрифт белого цвета и туда писать соотв. данные. Как итог - лишний текст не будет виден, строка автоматом будет иметь нужную высоту


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как с помощью ABAP изменить высоту строки в EXCEL.
СообщениеДобавлено: Чт, ноя 08 2012, 13:14 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Ср, окт 05 2011, 17:54
Сообщения: 87
Пол: Мужской
bossjohn написал(а):
Самый простой способ - зарезервировать в этой строке столбец нужной ширины, установить свойство Переносить по словам, установить шрифт белого цвета и туда писать соотв. данные. Как итог - лишний текст не будет виден, строка автоматом будет иметь нужную высоту


Интересный вариант.
Только возникает один вопрос.
А как это отразится на печати?
Просто в моем случае...я думаю данный способ не подойдет т.к. ячейка для вывода находится на соседнем листе и я предполагаю, что если пользователь начнет печатать, то дополнительно распечатаются и листы где введен текст. Но листы будут белые.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как с помощью ABAP изменить высоту строки в EXCEL.
СообщениеДобавлено: Чт, ноя 08 2012, 13:20 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Ср, окт 05 2011, 17:54
Сообщения: 87
Пол: Мужской
Цитата:
А дальше остановился т.к excelrows у меня почему то пустой

В отладчике состояния OLE объектов не посмотреть нормально, автоматизация :twisted: , выводите проверочную информацию WRITE-ми.[/quote]

Я так понимаю, что возможно отловить ошибку OLE объектов при использовании метода.
:?: Но только sy-subrc в моем случае равнялся 0, а excelrows были пустыми.
Поэтому не совсем понимаю как это реализовать.!?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как с помощью ABAP изменить высоту строки в EXCEL.
СообщениеДобавлено: Чт, ноя 08 2012, 13:30 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва
WALL-E написал:
А дальше остановился т.к excelrows у меня почему то пустой


Приведите код, предшествующий вызов этого метода. Может вызываете метод не того объекта?
Т.е. нет такой последовательности:

application->workbooks->workbook->worksheet->rows?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как с помощью ABAP изменить высоту строки в EXCEL.
СообщениеДобавлено: Чт, ноя 08 2012, 13:33 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
Пустые это в смысле если в отладчике смотреть поля структуры?
добавьте например
Code:
WRITE excelrows-handle.
после CALL METHOD


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как с помощью ABAP изменить высоту строки в EXCEL.
СообщениеДобавлено: Чт, ноя 08 2012, 13:49 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Ср, окт 05 2011, 17:54
Сообщения: 87
Пол: Мужской
bossjohn написал(а):
WALL-E написал:
А дальше остановился т.к excelrows у меня почему то пустой


Приведите код, предшествующий вызов этого метода. Может вызываете метод не того объекта?
Т.е. нет такой последовательности:

application->workbooks->workbook->worksheet->rows?


Да. Я вызывал метод не того объекта. Просто я ожидал увидеть в данном случае sy-subrc <> 0.
А мне вывелся sy-subrc = 0.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как с помощью ABAP изменить высоту строки в EXCEL.
СообщениеДобавлено: Чт, ноя 08 2012, 13:51 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Ср, окт 05 2011, 17:54
Сообщения: 87
Пол: Мужской
Всем большое спасибо за помощь! Все получилось! :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как с помощью ABAP изменить высоту строки в EXCEL.
СообщениеДобавлено: Чт, ноя 08 2012, 17:37 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
WALL-E написал:
У меня стоит достаточно простая задачка, ... но так как у меня ячейки объеденные( несколько ячеек в строке) автоматом высота не устанавливается...

Давно есть готовое решение для этой задачи - VBA-макрос, вставленный в шаблон.
См. макрос MergeCellsAutofit в файле ZWWW_SAMPLE_INVOICE.XLS в моей разработке.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как с помощью ABAP изменить высоту строки в EXCEL.
СообщениеДобавлено: Пн, фев 18 2013, 16:40 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, окт 13 2011, 22:45
Сообщения: 497
коллеги, подскажите пожалуйста,
как вызвать выполнение макроса в WORD'е из ABAP'a?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как с помощью ABAP изменить высоту строки в EXCEL.
СообщениеДобавлено: Пн, фев 18 2013, 17:17 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июл 16 2010, 09:57
Сообщения: 106
Откуда: СПб
Пол: Мужской
gomer4ik написал(а):
как вызвать выполнение макроса в WORD'е из ABAP'a?
Так же, как в Excel - через Application.Run(MacroName, параметры...)


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как с помощью ABAP изменить высоту строки в EXCEL.
СообщениеДобавлено: Пн, фев 18 2013, 17:38 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, окт 13 2011, 22:45
Сообщения: 497
Gustav написал:
gomer4ik написал(а):
как вызвать выполнение макроса в WORD'е из ABAP'a?
Так же, как в Excel - через Application.Run(MacroName, параметры...)

можешь синтаксис подсказать?
а то у меня есть только CALL METHOD OF word 'EDITSELECTALL'.
у ни фига не получается


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB