Лист Excel с формулами Smart View / Hyperion, который был успешно обновлен с помощью HypMenuVRefresh (), копируется в новую книгу, чтобы заменить формулы значениями и привести их в порядок, однако при копировании теряются значения ячеек.
Из онлайн-исследования выясняется, что копия теряет необходимые метаданные SmartView / Hyperion, которые можно повторно импортировать на скопированный лист с помощью HypCopyMetaData () ...... См. Руководство для разработчиков https://docs.oracle.com/cd/E72988_01/DGSMV/ch04s07.html.
После успешного обновления исходного листа я попытался скопировать в одну и ту же wb и другую wb, но оба результата привели к одной и той же ошибке.
Других вызовов API нет.Основная функция реплицирует кнопку ленты (HypMenuVRefresh = Refresh) и работает без необходимости создания подключения Hyperion через VBA, поскольку она принимает учетные данные пользователя.Нужно ли устанавливать соединение для функций, не относящихся к Меню (т. Е. Для любых, не начинающих "HypMenu ....")?
Объявление API VBA 32 & 64bit
#If VBA7 Then
Private Declare PtrSafe Function HypMenuVRefresh Lib "HsAddin" () As Long
Private Declare PtrSafe Function HypCopyMetaData Lib "HsAddin" (ByVal vtSourceSheetName As Variant, ByVal vtDestinationSheetName As Variant) As Long
#Else
Private Declare Function HypMenuVRefresh Lib "HsAddin"() As Long
Private Declare Function HypCopyMetaData Lib "HsAddin" (ByVal vtSourceSheetName As Variant, ByVal vtDestinationSheetName As Variant) As Long
#End If
Основной VBA sub toимпортировать метаданные:
Private Sub sSmartViewAPI_ImportHyperionMetaDataForASheet(ByRef argwb_DestWB As Workbook, ByVal vtSourceSheetName As Variant, ByVal vtDestinationSheetName As Variant)
'The destination sheet MUST be active
argwb_DestWB .Activate
argwb_DestWB .Sheets(vtDestinationSheetName).Activate
'Perform the refresh & capture the status
Dim ll_Status As Long
ll_Status = HypCopyMetaData(vtSourceSheetName, vtDestinationSheetName)
'Display message if status is not 0, all others are errors
If ll_Status <> 0 Then
MsgBox "HYPERION IMPORT METADATA ERROR"
End
End If
End Sub
Код ошибки SmartView / Hyperion -3 «Ошибка инициализации».возвращается, и ошибки формул отображаются в ячейках вместо значений, успешно извлеченных из Hyperion.
Как мы копируем лист, не теряя значения ячеек?