Текущее время: Сб, авг 02 2025, 22:11

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Как запустить VBS скрипт для выгруженного Excel файла.
СообщениеДобавлено: Ср, дек 10 2008, 15:36 
Специалист
Специалист

Зарегистрирован:
Пт, фев 16 2007, 09:49
Сообщения: 157
Привет всем!
Создаю Excel файл текстового вида (между значениями табуляция). Затем подгружаю его и показываю пользователю. Необходимо ряд ячеек сделать с вертикальным текстом. VBS скрипт сделать смогу. Его я также хочу выгружать из SAP системы. А как потом его применить к уже открытому Excel окну? Или как открыть текстовый excel файл и при открытии сразу применить скрипт? Может есть какие-то параметры командной строки для запуска, типа "excel <имя файла> <имя скрипта>"?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как запустить VBS скрипт для выгруженного Excel файла.
СообщениеДобавлено: Ср, дек 10 2008, 16:09 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Damir написал(а):
Привет всем!
Создаю Excel файл текстового вида (между значениями табуляция). Затем подгружаю его и показываю пользователю. Необходимо ряд ячеек сделать с вертикальным текстом. VBS скрипт сделать смогу. Его я также хочу выгружать из SAP системы. А как потом его применить к уже открытому Excel окну? Или как открыть текстовый excel файл и при открытии сразу применить скрипт? Может есть какие-то параметры командной строки для запуска, типа "excel <имя файла> <имя скрипта>"?

ФМ для выгрузки данных в WORD, EXCEL

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 11 2008, 07:40 
Специалист
Специалист

Зарегистрирован:
Пт, фев 16 2007, 09:49
Сообщения: 157
Этот модуль не годится, так как структура таблицы заранее неизвестна, поэтому шаблон сделать нельзя. Макрос VBS тоже всегда будет разный и будет генерится из программы. Попробую покопаться в его исходниках, может найду как он применяет VBS скрипт. :roll:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Создание и запуск макроса в Excel
СообщениеДобавлено: Чт, дек 11 2008, 10:13 
Начинающий
Начинающий

Зарегистрирован:
Вт, окт 21 2008, 10:25
Сообщения: 7
Code:
REPORT ZOLEXCL.
* OLE2 include
INCLUDE OLE2INCL.
* OLE2 objects
DATA: APPLICATION TYPE OLE2_OBJECT,
WORKBOOK TYPE OLE2_OBJECT,
MODULE TYPE OLE2_OBJECT,
NEWMODULE TYPE OLE2_OBJECT.

* table that contains embedded VBA program code
DATA: BEGIN OF MAKROTAB OCCURS 0,
LINE(80),
END OF MAKROTAB.

* fill makro table with VBA code
MAKROTAB-LINE = 'sub rotate_chart()'. APPEND MAKROTAB.
MAKROTAB-LINE = 'workbooks.add'. APPEND MAKROTAB.
MAKROTAB-LINE = 'for i = 1 to 10'. APPEND MAKROTAB.
MAKROTAB-LINE = ' cells(1, i).value = i * 5'. APPEND MAKROTAB.
MAKROTAB-LINE = 'next i'. APPEND MAKROTAB.
MAKROTAB-LINE = 'range("A1:J1").Select'. APPEND MAKROTAB.
MAKROTAB-LINE = 'set objxlchart = charts.add()'. APPEND MAKROTAB.
MAKROTAB-LINE = 'visible = true'. APPEND MAKROTAB.
MAKROTAB-LINE = 'objxlchart.type = -4100'. APPEND MAKROTAB.
MAKROTAB-LINE = 'for i = 1 to 3'. APPEND MAKROTAB.
MAKROTAB-LINE = ' for introtate = 5 to 355 step 5'. APPEND MAKROTAB.
MAKROTAB-LINE = ' objxlchart.rotation = introtate'. APPEND MAKROTAB.
MAKROTAB-LINE = ' next'. APPEND MAKROTAB.
MAKROTAB-LINE = ' for introtate = 355 to 5 step -5'. APPEND MAKROTAB.
MAKROTAB-LINE = ' objxlchart.rotation = introtate'. APPEND MAKROTAB.
MAKROTAB-LINE = ' next'. APPEND MAKROTAB.
MAKROTAB-LINE = 'next i'. APPEND MAKROTAB.
MAKROTAB-LINE = 'end sub'. APPEND MAKROTAB.

* write temporary file that contains Excel VBA code
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = 'c:\MyProgram\excel.tmp'
FILETYPE = 'ASC'
TABLES
DATA_TAB = MAKROTAB
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 2
INVALID_FILESIZE = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
OTHERS = 8.

* creating object Excel.Application
CREATE OBJECT APPLICATION 'excel.application'.
IF SY-SUBRC NE 0.
WRITE: / 'Error when opening excel.application', SY-MSGLI.
ENDIF.
* Setting visibility property
SET PROPERTY OF APPLICATION 'Visible' = 1.

* "initialize" Excel with some necessary settings
CALL METHOD OF APPLICATION 'Workbooks' = WORKBOOK.
PERFORM ERRORS.

CALL METHOD OF WORKBOOK 'Add'.
PERFORM ERRORS.

CALL METHOD OF APPLICATION 'Modules' = MODULE.
PERFORM ERRORS.

CALL METHOD OF MODULE 'Add' = NEWMODULE.
PERFORM ERRORS.

CALL METHOD OF NEWMODULE 'Activate'.
PERFORM ERRORS.

* reading VBA program code
CALL METHOD OF NEWMODULE 'InsertFile'
EXPORTING #1 = 'C:\MyProgram\excel.tmp'.
PERFORM ERRORS.

* executing VBA program code
CALL METHOD OF APPLICATION 'Run' EXPORTING #1 = 'rotate_chart'.
PERFORM ERRORS.

* deleting temporary file
CALL FUNCTION 'WS_FILE_DELETE'
EXPORTING
FILE = 'c:\excel.tmp'
EXCEPTIONS
OTHERS = 1.

* subroutine for error handling
FORM ERRORS.
IF SY-SUBRC NE 0.
WRITE: / 'Error in OLE call', SY-MSGLI.
EXIT.
ENDIF.
ENDFORM.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 11 2008, 13:03 
Специалист
Специалист

Зарегистрирован:
Пт, фев 16 2007, 09:49
Сообщения: 157
Спасибо за ответ! Только прочитал его. Сегодня полдня копался в инете, изучая VBS. Задачу я решил, может быть и кривовато. :roll:
  1. Формирую и выгружаю Excel файл из ABAP.
  2. Формирую и выгружаю VBS файл из ABAP.
  3. Запускаю VBS файл из ABAP.

VBS файл примерно такой:
Code:
Dim objEx
Set objEx = CreateObject("Excel.Application") 'Запуск Excel
objEx.WorkBooks.Open "d:\temp1.xls" 'Открытие документа
    With objEx.Rows("1:1") 'Записи первой строки делаем вертикал.
        .Orientation = 90
    End With
objEx.Rows("1:1").EntireColumn.AutoFit 'Авторазмер ячеек певрой стр.
objEx.Visible = True 'Отображаем отформатиров. документ

Для меня самое сложное было найти, как запускать Excel из VBS скрипта, а затем форматировать его ячейки. Может кому и понадобится.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

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


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

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


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

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