代码之家  ›  专栏  ›  技术社区  ›  avb

pivotCache.CommandText更改降级pivotCCache.version

  •  0
  • avb  · 技术社区  · 11 年前

    我有以下问题:
    我有一个宏,根据activecell是否是透视表的一部分,它执行以下操作:
    -如果activecell不是透视表的一部分,它将创建一个包含ODBC数据源和windows剪贴板中的sql查询的透视表
    -否则它将PivotCache.CommandText替换为剪贴板中包含的查询。

    这一切都很好,直到我发现了透视切片器,一旦用宏创建了透视表,我就可以添加切片器,它也很好,但当我用新的sql查询替换CommandText属性时,现有的切片器不会刷新,当我尝试添加新的切片器时,我会收到如下错误消息:

    “数据透视表是在早于2007年的excel版本或兼容模式下创建的”
    (我不能直接发布消息,因为我没有使用英文版的excel)

    我发现每当我更改PivotCache.CommandText(或.sql)属性时,PivotCCache.Version都会以编程方式从“xlPivotTableVersion12”更改为“xlPiotTableVersion2000”,这明显早于Excel 2007。属性.Version为readOnly,因此无法更改它。

    问题是,这个问题也出现在我公司广泛使用的一个报告中,其中vba用于构造sql查询(基于用户单击useform的内容),然后将其放入透视表中,而我不能使用切片器。

    有人知道吗?

    1 回复  |  直到 11 年前
        1
  •  0
  •   avb    11 年前

    最终,我找到了一些变通办法,并了解到这只发生在Microsoft Office上运行波兰语版本的计算机上(在Excel 2007和2010的多台计算机上都进行了检查),而在英语版本的Office 2010上不发生(只有一台计算机用于测试)。
    这种担忧正从ODBC转向OLEDB数据源,一旦改为OLEDB,问题就再也没有发生过。
    上面提出的一些问题(加上为什么本地化很重要?)仍然没有答案,但我认为这已经解决了。