Текущее время: Сб, апр 20 2024, 01:23

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




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Миграция макросов с 3.5 на 7.х
СообщениеДобавлено: Пт, июл 03 2015, 10:08 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, янв 25 2007, 09:57
Сообщения: 276
Решились мы таки перенести старые книжки в новую версию BEx.
Нашли несколько книжек с древними мега-макросами написанными неизвестными художниками много лет назад.

Часто встречается конструкция типа:
Run "SAPBEX.XLA!SAPBEXcopyFILTERVALUE", filter_val_year, filter_tgt_year

Как я понимаю, в 7-ке я так просто не смогу это просто так скопировать, мне нужно найти соотв.ф-цию из новых функций. И вопрос в том, как найти соответствия старых и новых макросов? Есть где-то такая табличка, хаутушка или что-то подобное?

Далее, раньше можно было использовать конструкцию типа:
Set filter_val_year = Range("SAPBEXqueries!" & "SAPBEXq0025" & "f0FISCYEAR")

т.е. обращаться к области таблицы с данными переменных, фильтров и т.д. А теперь коллекция application.names пустая, адресов никаких нет. Соответственно вопрос, можно ли как-то найти области в которых лежат элементы рабочей книги? Желательно найти в книге же, потому как залезть в САП из экселя без повторной логиновки у меня так и не получилось.

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

Может кто знает?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Миграция макросов с 3.5 на 7.х
СообщениеДобавлено: Пт, июл 03 2015, 10:53 
Почетный гуру
Почетный гуру

Зарегистрирован:
Чт, фев 03 2005, 10:18
Сообщения: 503
sirin написал(а):
узнать какой грид связан с каким дата провайдером

Это в принципе легко.
Ниже процедура, которая выводит на новом листе список Grid-ов с привязанными к ним датапровайдерами и линками на область результатов и отдельно список датапровайдеров. Для ее использования должна быть подключена библиотека BEx Analyzer API.
Code:
Option Explicit
Sub Grid_DP_List()
Dim myBExItem As Object
Dim myDP As Object
Dim locCount As Integer
Dim Link As String
Worksheets.Add
locCount = 1
ActiveSheet.Cells(locCount, 1) = "Grid Name"
ActiveSheet.Cells(locCount, 2) = "Grid DP"
ActiveSheet.Cells(locCount, 3) = "DP Query"
ActiveSheet.Cells(locCount, 4) = "Grid Worksheet"
ActiveSheet.Cells(locCount, 5) = "Grid Range"
For Each myBExItem In BEx.Items
If myBExItem.ToString Like "*BExItemGrid*" Then
locCount = locCount + 1
ActiveSheet.Cells(locCount, 1) = myBExItem.Name
ActiveSheet.Cells(locCount, 2) = myBExItem.DataProvider.Name
ActiveSheet.Cells(locCount, 3) = myBExItem.DataProvider.Query
ActiveSheet.Cells(locCount, 4) = myBExItem.WorksheetName
ActiveSheet.Cells(locCount, 5) = myBExItem.Range.Address
Link = "'" & myBExItem.WorksheetName & "'!" & myBExItem.Range.Address
ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Cells(locCount, 5), Address:="", SubAddress:= _
Link, TextToDisplay:=ActiveSheet.Cells(locCount, 5).Text
End If
Next
locCount = 1
ActiveSheet.Cells(locCount, 8) = "DP Name"
ActiveSheet.Cells(locCount, 9) = "DP Query"
For Each myDP In BEx.DataProviders
locCount = locCount + 1
ActiveSheet.Cells(locCount, 8) = myDP.Name
ActiveSheet.Cells(locCount, 9) = myDP.Query
Next
ActiveSheet.Range("A:I").Columns.AutoFit
End Sub


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Миграция макросов с 3.5 на 7.х
СообщениеДобавлено: Пт, июл 03 2015, 12:12 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, фев 09 2011, 07:19
Сообщения: 752
Откуда: Сибирь
Пол: Мужской
sirin написал(а):
Часто встречается конструкция типа:
Run "SAPBEX.XLA!SAPBEXcopyFILTERVALUE", filter_val_year, filter_tgt_year

Как я понимаю, в 7-ке я так просто не смогу это просто так скопировать, мне нужно найти соотв.ф-цию из новых функций. И вопрос в том, как найти соответствия старых и новых макросов? Есть где-то такая табличка, хаутушка или что-то подобное?

Есть вот такое:
http://scn.sap.com/people/prakash.darji/blog/2006/10/10/migrating-advanced-bex-analyzer-workbooks--what-vba-is-supported
но для SAPBEXcopyFILTERVALUE указано что нет ничего соответствующего...

_________________
Ешьте рыбу, в ней фосфор.
__
Чат в Telegram по SAP BW: http://t.me/BW_SAP


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Миграция макросов с 3.5 на 7.х
СообщениеДобавлено: Вт, июл 07 2015, 18:04 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, янв 25 2007, 09:57
Сообщения: 276
Всем большущее спасибо!
Air_demon, а как создается объект BEx? Он у меня пустой. Надо его как-то определить?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Миграция макросов с 3.5 на 7.х
СообщениеДобавлено: Ср, июл 08 2015, 00:11 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вс, янв 11 2009, 14:41
Сообщения: 902
Откуда: Москва
Пол: Мужской
Так он же написал "Для ее использования должна быть подключена библиотека BEx Analyzer API". То есть через Reference и New (если есть tlb) или же с помощью CreateObject, указав ProgID


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

Зарегистрирован:
Чт, фев 03 2005, 10:18
Сообщения: 503
sirin написал(а):
Всем большущее спасибо!
Air_demon, а как создается объект BEx? Он у меня пустой. Надо его как-то определить?


Public Function BEx() As BExApplication
Set BEx = Application.Run("BExAnalyzer.xla!GetBEx", ThisWorkbook)
End Function
Изображение


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Миграция макросов с 3.5 на 7.х
СообщениеДобавлено: Ср, июл 08 2015, 14:47 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, янв 25 2007, 09:57
Сообщения: 276
Объект все равно равен nothing. :(
При трассировке вижу, что дергает такую вот конструкцию, которая у меня тоже nothing:

Set GetBEx = pAddin.ExcelInterface.WorkbookBExExcelApplication(lName)

Может, надо еще где-то в шаманский бубен стукнуть?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Миграция макросов с 3.5 на 7.х
СообщениеДобавлено: Ср, июл 08 2015, 17:23 
Почетный гуру
Почетный гуру

Зарегистрирован:
Чт, фев 03 2005, 10:18
Сообщения: 503
sirin написал(а):
Может, надо еще где-то в шаманский бубен стукнуть?

Надо сохранить книгу.
В принципе можно обойтись только добавлением функции Public Function BEx() As BExApplication, без включения библиотеки в References.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Миграция макросов с 3.5 на 7.х
СообщениеДобавлено: Чт, июл 23 2015, 15:03 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Пн, апр 16 2012, 16:30
Сообщения: 6
Откуда: Белгород
Пол: Мужской
sirin написал(а):
Всем большущее спасибо!
Air_demon, а как создается объект BEx? Он у меня пустой. Надо его как-то определить?

Для просмотра содержимого необходимо его создать "стандартным" путем - через кнопку "добавить макросы" в настройках рабочей книги.
В таком случае создается модуль "BExInterfaceModule" с подключением объекта "BEx" и его содержимое становится доступным к просмотру. Только, к сожалению, далеко не всё...

_________________
Play the game for more than you can afford to lose... only then will you learn the game.
Winston Churchill


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

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


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

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


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

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