Текущее время: Сб, июл 26 2025, 09:58

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Программное очищение буфера EXCEL
СообщениеДобавлено: Пт, сен 25 2009, 08:09 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, авг 24 2007, 11:29
Сообщения: 350
Здравствуйте коллеги.

Возникла два срочных вопроса:

1. Как программно в ABAP очистить буфер EXCEL( желательно через OLE)?
Ситуация: из 3 шаблонов(EXCEL) формируется 1 документ путем копировать-вставить. При этом буфер забивается и не очищается.

2. Можно ли из шаблона EXCEL по средствам DOI(или другиме средствами, кроме OLE) скопировать область, со всеми стилями, объединениями, форматами и т.п. и поместить это все во внутренюю табличку, для дальнейшей выгрузки из SAP в EXCEL?

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программное очищение буфера EXCEL
СообщениеДобавлено: Пт, сен 25 2009, 09:05 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 31 2008, 15:58
Сообщения: 70
Доброе утро.
1) Для начала у себя в документе через vba установите

Application.CutCopyMode = False

Уже это одно должно решить ваши проблемы.

Если же нет, то попробуйте просто копировать один символ в буфер, чтобы сильно не забивать.

Если же вы хотите получить доступ прямо к буферу обмена win, то тогда winapi Вам в помощь
Code:
Private Declare Function OpenClipboard Lib "user32" Alias "OpenClipboard" (ByVal hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" Alias "EmptyClipboard" () As Long
Private Declare Function CloseClipboard Lib "user32" Alias "CloseClipboard" () As Long

Code:
OpenClipboard, EmptyClipboard, CloseClipboard, SetClipboardData и т.п.


2)Про DOI, мое мнение, что нельзя так скопировать. Одно дело просто скопировать область во внутреннюю таблицу, и совсем другое сохранить все форматирование.

_________________
С Уважением, Абрамов Виктор.
The devil is in the detail.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программное очищение буфера EXCEL
СообщениеДобавлено: Пт, сен 25 2009, 09:46 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
slim, судя по вашим вопросам у вас изначально неверный подход к формированию Excel документов из САПа.
Постарайтесь описать что нужно сделать. Возможно все эти пляски с бубном будут ненужны.
Или посмотрите решение от Parazit'а.

Что касается DOI - http://help.sap.com/saphelp_erp60_sp/helpdata/EN/e9/0be775408e11d1893b0000e8323c4f/frameset.htm. Изучайте первоисточники.

С буфером несколько проще все. API не надо.
CL_GUI_FRONTEND_SERVICES=>CLIPBOARD_EXPORT
CL_GUI_FRONTEND_SERVICES=>CLIPBOARD_IMPORT


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Программное очищение буфера EXCEL
СообщениеДобавлено: Пт, сен 25 2009, 10:12 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 31 2008, 15:58
Сообщения: 70
Цитата:
1. Как программно в ABAP очистить буфер EXCEL( желательно через OLE)?
Ситуация: из 3 шаблонов(EXCEL) формируется 1 документ путем копировать-вставить. При этом буфер забивается и не очищается.

Просто как понимаю из данного контекста, уже есть 3 шаблона. И происходит раскидывание данных в нужный документ.
Это формирование правильнее возложить на макрос VBA, так как будет уменьшено время на передачу данных. А при таком раскладе нам буфер нужно очищать именно через VBA. Следовательно мы не сможем использовать работу с буфером из SAP.

_________________
С Уважением, Абрамов Виктор.
The devil is in the detail.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программное очищение буфера EXCEL
СообщениеДобавлено: Пт, сен 25 2009, 10:29 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, авг 24 2007, 11:29
Сообщения: 350
Спасибо всем за ответы.
Хочу пояснить, что мне вопросы эти нужно решить в максимально короткие сроки.

Пономарев Артем написал:
slim, судя по вашим вопросам у вас изначально неверный подход к формированию Excel документов из САПа.
Постарайтесь описать что нужно сделать. Возможно все эти пляски с бубном будут ненужны.
Или посмотрите решение от Parazit'а.


Согласен, что изначально программа написана не совсем оптимально. Моя задача исправить в ней ошибку. Ошибка заключается в том, что при выгрузке большого числа записей, EXCEL просто начинает жестко виснуть и никуда не двигается. Как быстрое решение проблемы есть идея сделать макрос, который бы очищал буфер и запускать его из SAP. В дальнейшем разумеется программа будет переделана.

Пономарев Артем написал:
С буфером несколько проще все. API не надо.
CL_GUI_FRONTEND_SERVICES=>CLIPBOARD_EXPORT
CL_GUI_FRONTEND_SERVICES=>CLIPBOARD_IMPORT


Эти методы загружают данные в буфер и читают данные из него, а мне надо его просто очистить. + Я думаю, что эти методы работают не с буфером локальной машины, а с буфером сервера приложений SAP.


Пономарев Артем написал:
Что касается DOI - http://help.sap.com/saphelp_erp60_sp/helpdata/EN/e9/0be775408e11d1893b0000e8323c4f/frameset.htm. Изучайте первоисточники.


На счет DOI все понятно: Понятно, что с помощью этого инструмента можно замутить любое форматирование EXCEL. Мой вопрос 2 заключался в том, что впринцепи с помощью DOI можно так сделать или нет. Вопрос номер 2 - это дальнешая доработка программы вопроса 1. Причем доработка с сокрашением времени работы программы.

Сама программа выгружает большое количество записей в EXCEL бысро(50000 записей в несколько секунд). Проблема заключается в том, что в программе написано форматирование по средствам OLE. Конечный документ в итоге собирается из 4, а именно, шапка, тело, подписи, данные. Причем формирование конечного документа идет по определенному алгоритму т.е. нельзя взять просто одни шаблон и в него делать выгрузку.


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

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


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

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


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

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