excel - 对 Analysis Services 的 VBA Repitive MDX 查询

标签 excel vba mdx olap

我有一个报告,每周运行相同的 MDX 查询,并将结果粘贴到工作表中,然后生成报告。我知道如何连接到 Excel 中的 OLAP 多维数据集,但我不喜欢操作数据透视表来匹配我的查询。

我想使用 VBA 连接到多维数据集,并以值粘贴或表格的形式返回工作表中特定查询的结果。我可以将 MDX 查询保存在单独的工作表中。这可能吗?我是 VBA 新手,所以我不知道从哪里开始。任何示例代码都会很棒。

最佳答案

我认为上一个问题正是您所需要的:
Any MDX query within Excel vba?

我改编了之前的问答中的代码,只是写了以下内容,它似乎返回了一个数字:

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

如果您查看上一个问题,您会发现获取数据单元格集非常容易,但将其粘贴到工作表中并不是那么简单。为了简单起见并快速检查事情是否按预期工作,我只使用了此 ActiveSheet.Range("A1") = cs(0, 0)。我认为您需要循环遍历单元格集。

注意 - 您需要添加两个引用才能使上述内容正常工作:

  1. Microsoft ActiveX 数据对象 6.1 库
  2. Microsoft ActiveX 数据对象(多维)6.0 库

(或您可用的每个版本的最新版本)

关于excel - 对 Analysis Services 的 VBA Repitive MDX 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31070692/

相关文章:

excel - 查找模式 : Identify the string portion that is common to a group of cells

sql - SSAS MDX 滚动不同日期范围总计

Mdx 查询显示除今年之外的所有年份的年份级别数据

Excel:来自不同工作表的 VLOOKUP

excel - 对具有特定条件的excel表进行排序(vba)

php - 将大型 Excel 工作表转换为 Mysql?

excel - Excel中删除单元格

VBA [Internet Explorer] - 按钮提交(登录)

excel - VBA选择范围然后调整范围大小

ssas - 如何查看 MS SSAS 2005 session 和查询