Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 用VBA获取MDX数据_Excel_Vba_Mdx - Fatal编程技术网

Excel 用VBA获取MDX数据

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

我很难在连接到MDX数据库的Excel中恢复结果。下面是我的代码(我在这方面非常新,所以请耐心等待。)我确实劫持了某人的错误代码,所以那部分不是我的。查询已完成,但我在Excel中未收到任何数据。任何帮助都将不胜感激

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引用。见此: