Текущее время: Пт, мар 29 2024, 03:11

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


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

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


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

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