Текущее время: Вс, авг 03 2025, 07:16

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Google [Bot]


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

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