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

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


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

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


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

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