Excel 用VBA获取MDX数据
我很难在连接到MDX数据库的Excel中恢复结果。下面是我的代码(我在这方面非常新,所以请耐心等待。)我确实劫持了某人的错误代码,所以那部分不是我的。查询已完成,但我在Excel中未收到任何数据。任何帮助都将不胜感激Excel 用VBA获取MDX数据,excel,vba,mdx,Excel,Vba,Mdx,我很难在连接到MDX数据库的Excel中恢复结果。下面是我的代码(我在这方面非常新,所以请耐心等待。)我确实劫持了某人的错误代码,所以那部分不是我的。查询已完成,但我在Excel中未收到任何数据。任何帮助都将不胜感激 Sub Test() Sheets("DataDump").Select ActiveSheet.Range("A1").Value = "Department" Set cn = New ADODB.Connection cn.Op
Sub Test()
Sheets("DataDump").Select
ActiveSheet.Range("A1").Value = "Department"
Set cn = New ADODB.Connection
cn.Open "provider=MSOLAP.3;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=XXX;Data Source=XXXXX;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error"
Set rs = New ADODB.Recordset
strSQL = "select [product].[base color] on columns "
strSQL = strSQL & " From XXX "
strSQL = strSQL & " Where [Date].[Fiscal Week].&[2016]&[10] "
rs.Open strSQL, cn
Sheets("DataDump").Range("A2").CopyFromRecordset rs
rs.Close
Set rs = Nothing
Set Lists = Nothing
strSQL = vbNullString
StartDate = 0
EndDate = 0
SeasonYear = vbNullString
PriorYear = vbNullString
TXTYear = 0
With Application
.ScreenUpdating = True
.DisplayAlerts = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
.StatusBar = False
End With
Exit Sub
ErrorHandler:
Sheets("DataDump").Visible = xlVeryHidden
Set Lists = Nothing
strSQL = vbNullString
StartDate = 0
EndDate = 0
SeasonYear = vbNullString
PriorYear = vbNullString
TXTYear = 0
With Application
.ScreenUpdating = True
.DisplayAlerts = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
.StatusBar = False
End With
'Error Message
MsgBox "An Error occurred while retrieving data: " & Err.Description
End Sub
下面是一个通过vba直接访问多维数据集的示例 我使用了这个附加对象
ADOMD.Cellset
来捕获mdx
的结果
Sub getFromCube()
Dim strConn As String
strConn = _
"Provider=MSOLAP.6;" & _
"Data Source=imxxxxxx;" & _ '<<<name of your server here
"Initial Catalog=AdventureWorksDW2012Multidimensional-EE;" & _ '<<<name of your Adv Wrks db here
"Integrated Security=SSPI"
Dim pubConn As ADODB.Connection
Set pubConn = New ADODB.Connection
pubConn.CommandTimeout = 0
pubConn.Open strConn
Dim cs As ADOMD.Cellset
Set cs = New ADOMD.Cellset
Dim myMdx As String
myMdx = _
" SELECT" & _
" NON EMPTY" & _
" [Customer].[Customer Geography].[State-Province].&[AB]&[CA] ON 0," & _
" NON EMPTY" & _
" [Measures].[Internet Sales Amount] ON 1" & _
" FROM [Adventure Works];"
With cs
.Open myMdx, pubConn
ActiveSheet.Range("A1") = cs(0, 0)
.Close
End With
End Sub
子getFromCube()
作为字符串的Dim strConn
strConn=_
“Provider=MSOLAP.6;”&_
“Data Source=imxxxxxx;”&u“我认为您需要使用多维ADO引用。见此: