2016-08-25 2 views
1

MDX 데이터베이스에 연결하는 Excel에서 결과를 다시 얻는 데 어려움을 겪고 있습니다. 아래 코드는 내 코드이다. (나는 이것에 대해 매우 신명 적이기 때문에 인내심을 가져라.) 나는 누군가의 에러 코드를 납치 했으므로 그 부분은 내 것이 아니다. 쿼리가 실행되지만 Excel에서 데이터를받지 못합니다. 어떤 도움을 주시면 감사하겠습니다.VBA를 사용하여 MDX 데이터 가져 오기

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 
+1

다차원 ADO 참조를 사용해야한다고 생각합니다. 참조 : https://support.sas.com/documentation/tools/oledb/cs_adomdcellset.htm –

답변

1

다음은 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 
관련 문제