在下面的代码中,我尝试在多个工作表中自动执行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发布于 2015-03-18 22:22:23
我昨天检查了很多次,发现服务器名称不正确,找不到它。今天,我用更新鲜的眼光发现了问题,上面的代码运行良好。尽管问题实际上出在HypCreateConnection行中,但该函数调用返回了0错误代码。然后,使用带有无效连接的HypConnect会导致错误-并返回一个未记录的错误代码。
https://stackoverflow.com/questions/29110004
复制相似问题