Excel SmartView vb функция HypConnect не работает / код ошибки 100000

В приведенном ниже коде я пытаюсь автоматизировать извлечение SmartView на нескольких рабочих листах. Кажется, что код работает нормально до того момента, как я создаю соединение перед тем, как запустить цикл. Внутри цикла я хочу использовать HypConnect для использования соединения - но он возвращает код повторной ошибки 100000 и не соединяется. Когда я проверяю некоторые переменные состояния, я вижу, что связь существует, но лист не подключен.

Я скопировал полный файл smartview.bas в другой модуль в той же книге.

В тот момент, когда я вызываю HypConnect, все четыре аргумента определены и имеют правильные значения.

Я не знаю, что еще может быть не так.

Sub Retrieval()

URL = Sheets("Index").Range("E5").Value
Server = Sheets("Index").Range("E6").Value
App = Sheets("Index").Range("E7").Value
Db = Sheets("Index").Range("E8").Value
UserId = Sheets("Index").Range("E10").Value
psw = InputBox("Password")
DSN = "Source"

x = HypDisconnectAll()
If HypConnectionExists(DSN) Then x = HypRemoveConnection(DSN)
x = HypCreateConnection( _
    Empty, _
    UserId, _
    psw, _
    "Essbase", _
    URL, _
    Server, _
    App, _
    Db, _
    DSN, _
    "Connection for retrievals")
x = HypSetConnAliasTable("Source", "Code_and_Desc")
x = HypSetGlobalOption(5, 3)     'turn off warnings
x = HypSetGlobalOption(6, True)  'use thousands separator
x = HypSetGlobalOption(15, True) 'retain formats

For Each Sheet In Worksheets
    Sheet.Activate
    RR = Range("A1").Value
    If RR = "" Then RR = "A1"
    If RR <> "Do not retrieve" Then
        x = HypConnect(Sheet.Name, UserId, psw, DSN)

        x = HypSetSheetOption(Sheet.Name, 5, 0)
        x = HypSetSheetOption(Sheet.Name, 6, False)
        x = HypSetSheetOption(Sheet.Name, 7, False)
        x = HypSetSheetOption(Sheet.Name, 8, False)
        x = HypSetSheetOption(Sheet.Name, 13, "#numericzero")
        x = HypSetSheetOption(Sheet.Name, 16, 2)

        x = HypRetrieveRange(Sheet.Name, RR, DSN)
        End If

    Next Sheet

x = HypSetGlobalOption(5, 2) 'turn warnings back on
x = HypRemoveConnection(DSN)
x = HypDisconnectAll()

MsgBox ("Done")
End Sub

1 ответ

Сколько раз я проверял это вчера, у меня было неправильное имя сервера, и я не мог его найти. Сегодня, с более свежим взглядом, я нашел проблему, и вышеупомянутый код работает отлично. Хотя проблема была на самом деле в строке HypCreateConnection, этот вызов функции вернул код ошибки 0. Затем использование HypConnect с неверным соединением вызвало ошибку - и вернул недокументированный код ошибки.

Другие вопросы по тегам