Текущее время: Пн, авг 18 2025, 15:08

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




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Собственный макрос при обновлении рабочей книги
СообщениеДобавлено: Вт, июл 08 2014, 14:01 
Ассистент
Ассистент

Зарегистрирован:
Вт, июл 08 2014, 13:46
Сообщения: 27
у нас BEx 7.2. переходим от BEx 3,x((
сталкнулись с можеством проблем, но одну до сих пор не получается решить.
Раньше был собственный макрос в модуле SAPBEX
Code:
Sub SAPBEXonRefresh(queryID As String, resultArea As Range)

Call plan_SAPBEXonRefresh(queryID, resultArea)

End Sub

теперь так не работает
пробовали как написано здесь http://help.sap.com/saphelp_nw70ehp2/he ... ontent.htm
Code:
Sub Callback(ParamArray varname())
Dim lData_Provider As String
lData_Provider = varname(0)
Set lRange = varname(1)
Call plan_SAPBEXonRefresh(lData_Provider, lRange)
End Sub

но он вообще туда не попадает и врезультате ничего не работает


кто-нибудь сталкивался с такими проблемами?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Собственный макрос при обновлении рабочей книги
СообщениеДобавлено: Вт, июл 08 2014, 14:26 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 18 2008, 07:37
Сообщения: 256
А название макроса в свойствах рабочей книги указали?

_________________
The extent of reliability of the data affect on the quality of resource allocation.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Собственный макрос при обновлении рабочей книги
СообщениеДобавлено: Вт, июл 08 2014, 14:36 
Ассистент
Ассистент

Зарегистрирован:
Вт, июл 08 2014, 13:46
Сообщения: 27
ken написал(а):
А название макроса в свойствах рабочей книги указали?


да, пробовал и так SAPBEX.Callback и так Callback и так тоже Callback()
по разному, но не работает

и галочку поставили на Обновлять рабочую книгу при открытии и сам макрос прописал в Exits


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Собственный макрос при обновлении рабочей книги
СообщениеДобавлено: Вт, июл 08 2014, 14:44 
Специалист
Специалист

Зарегистрирован:
Пн, окт 03 2011, 17:24
Сообщения: 153
1) А в Екселе разрешены макросы и прочее (уровень безопасности какой стоит)?
2) Если делать книгу с нуля, и вкрячить Callback - он работает?
3) Какой Ексель используете?

_________________
Нас всех отчислят... как это мило


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Собственный макрос при обновлении рабочей книги
СообщениеДобавлено: Вт, июл 08 2014, 14:51 
Ассистент
Ассистент

Зарегистрирован:
Вт, июл 08 2014, 13:46
Сообщения: 27
Gek написал(а):
1) А в Екселе разрешены макросы и прочее (уровень безопасности какой стоит)?


все разрешены

Gek написал(а):
2) Если делать книгу с нуля, и вкрячить Callback - он работает?


не проверял еще..надо попробовать

Gek написал(а):
3) Какой Ексель используете?

Excel 2010


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Собственный макрос при обновлении рабочей книги
СообщениеДобавлено: Ср, июл 09 2014, 08:44 
Специалист
Специалист

Зарегистрирован:
Пн, окт 03 2011, 17:24
Сообщения: 153
Ексель надеюсь 32 битный?
На 64 вообще не работает BEx.. и еще долго работать не будет.

_________________
Нас всех отчислят... как это мило


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Собственный макрос при обновлении рабочей книги
СообщениеДобавлено: Ср, июл 09 2014, 09:55 
Ассистент
Ассистент

Зарегистрирован:
Вт, июл 08 2014, 13:46
Сообщения: 27
32 битная


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Собственный макрос при обновлении рабочей книги
СообщениеДобавлено: Ср, июл 09 2014, 10:27 
Ассистент
Ассистент

Зарегистрирован:
Вт, июл 08 2014, 13:46
Сообщения: 27
я делаю так как здесь написали
http://sap.ittoolbox.com/groups/technic ... ok-3679514
но вместо кода
Code:
Sub CallBack(ParamArray varname())
...
Endsub

у меня создается модуль BExInterfaceModule с кодом
Code:
Public Function BEx() As BExApplication
  Set BEx = Application.Run("BExAnalyzer.xla!GetBEx", ThisWorkbook)
End Function



Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Собственный макрос при обновлении рабочей книги
СообщениеДобавлено: Чт, июл 10 2014, 09:40 
Специалист
Специалист

Зарегистрирован:
Пн, окт 03 2011, 17:24
Сообщения: 153
1) Если макрос:

Sub CallBack(ParamArray varname())
...
Endsub

То в настройках книги надо писать "CallBack" (там проблема с заглавными вроде есть - название должно совпадать)

2) Что дает трассировка VBA?
Вообще даже CallBack не запускается или не переходит к вашему макросу?

3) Не легче ли ваш макрос в CallBack запихнуть?

_________________
Нас всех отчислят... как это мило


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Собственный макрос при обновлении рабочей книги
СообщениеДобавлено: Пт, июл 11 2014, 08:52 
Ассистент
Ассистент

Зарегистрирован:
Вт, июл 08 2014, 13:46
Сообщения: 27
получилось...почти

помогла вот эта viewtopic.php?f=12&t=64948

но я немного по другому сделал

создал модуль SAPBEX, в котором написал
Code:
Sub callback(ParamArray varname())
Dim lData_Provider As String
lData_Provider = Right(varname(2), 11)
Set lRange = varname(1)
Call plan_SAPBEXonRefresh(lData_Provider, lRange)
End Sub


в новой версии запросы называются по другому, но почему то в листе SAPBEXqueriesDefunct не может их найти, поэтому пришлось искать по старым именам запросов lData_Provider = Right(varname(2), 11)

в настрйках Exit написал SAPBEX.Callback и поставил галочку на обновление при открытии

в отличии от старой версии сталкнулся с проблемой кодировки, т.е. ФМ из BW возвращал русский текст с кодировкой CP1252 (или Windows-1252), а excel его отображал каряво
http://excelvba.ru/code/Encode
проблему решил вызовом функции перекадеровки
Code:
ChangeTextCharset(Data(1, 3), "ISO-8859-5", "Windows-1252")


Code:
Function ChangeTextCharset(ByVal txt$, ByVal DestCharset$, _
                           Optional ByVal SourceCharset$) As String
    ' функция перекодировки (смены кодировки) текстовоq строки
   ' В качестве параметров функция получает текстовую строку txt$,
   ' и название кодировки DestCharset$ (в которую будет переведён текст)
   ' Функция возвращает текст в новой кодировке
   On Error Resume Next: Err.Clear
    With CreateObject("ADODB.Stream")
        .Type = 2: .Mode = 3
        If Len(SourceCharset$) Then .Charset = SourceCharset$    ' указываем исходную кодировку
       .Open
        .WriteText txt$
        .Position = 0
        .Charset = DestCharset$    ' назначаем новую кодировку
       ChangeTextCharset = .ReadText
        .Close
    End With
End Function



а теперь проблема в том, что после срабатывания макросов запросы в рабочих книгах исчезают
т.е. при нажатии на правую кнопку на области, где был запрос, выходит меню Excel-я, а не запроса
и почему то на некоторых ячейках остались куски запроса


решено))...по неизвестной причине команда Sheet.Pictures.Delete удаляла все, хотя в старой версии работала нормально


Последний раз редактировалось jacknk88 Пт, июл 11 2014, 12:27, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Собственный макрос при обновлении рабочей книги
СообщениеДобавлено: Пт, июл 11 2014, 14:17 
Ассистент
Ассистент

Зарегистрирован:
Вт, июл 08 2014, 13:46
Сообщения: 27
есть одна проблема - в старой версии при обновлении вылезало окно с сообщением и ииндикатором, а сейчас в статустной строке внизу окна только выходит и в результате видны все манипуляции, выполняемые макросами


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Собственный макрос при обновлении рабочей книги
СообщениеДобавлено: Пн, июл 14 2014, 15:07 
Ассистент
Ассистент

Зарегистрирован:
Вт, июл 08 2014, 13:46
Сообщения: 27
jacknk88 написал(а):
есть одна проблема - в старой версии при обновлении вылезало окно с сообщением и ииндикатором, а сейчас в статустной строке внизу окна только выходит и в результате видны все манипуляции, выполняемые макросами


Code:
Workbooks.Application.ScreenUpdating = False


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Собственный макрос при обновлении рабочей книги
СообщениеДобавлено: Чт, июл 17 2014, 14:50 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, авг 08 2011, 15:42
Сообщения: 79
Попробуй в макрос вставить, должно работать.

Dim BexParam As Object
Dim BexConn As Object
Set BexConn = Application.Run("BExAnalyzer.xla!GetBEx")
Set BexParam = CreateObject("com.sap.bi.et.analyzer.api.BExParameter")
BexParam.Add "WORKBOOK_NAME", BexConn.Name
BexParam.Add "CMD", "REFRESH_AREA"

Call BexConn.Process(BexParam)
Call BexConn.FrontendUpdate
Call BexConn.Render


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

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


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

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


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

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