Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 12809|回复: 7

[已解决]怎么更改数据源路径?

[复制链接]
发表于 2012-10-20 16:44 | 显示全部楼层 |阅读模式
大家好!在数据透表同一路径下的多工作薄汇总时,数据源位置改变了怎么办呢?我用了vba代码怎么不行呢?
rivate Sub Workbook_Open()
    Dim strCon As String, iPath As String, i As Integer, iFlag As String, iStr As String
    strCon = ActiveSheet.PivotTables(1).PivotCache.Connection
    Select Case Left(strCon, 5)
    Case "ODBC;"
        iFlag = "DBQ="
    Case "OLEDB"
        iFlag = "Source="
    Case Else
        Exit Sub
    End Select
    iStr = Split(Split(strCon, iFlag)(1), ";")(0)
    iPath = Left(iStr, InStrRev(iStr, "\") - 1)
    With ActiveSheet.PivotTables(1).PivotCache
        .Connection = VBA.Replace(strCon, iPath, ThisWorkbook.Path)
        .CommandText = VBA.Replace(.CommandText, iPath, ThisWorkbook.Path)
    End With
End Sub以前我的文件夹是放在d盘的现在我把它放在桌面上,桌面路径是:D:\我的文档-桌面-收藏夹\桌面\10月运费,还有我手工改了也提示不行 10月运费.rar (200.14 KB, 下载次数: 35)
发表于 2012-10-20 16:58 | 显示全部楼层
  1. Private Sub Workbook_Open()
  2.     Dim strCon As String, iPath As String, i As Integer, iFlag As String, iStr As String
  3.     strCon = Sheet4.PivotTables(1).PivotCache.Connection
  4.     Select Case Left(strCon, 5)
  5.     Case "ODBC;"
  6.         iFlag = "DBQ="
  7.     Case "OLEDB"
  8.         iFlag = "Source="
  9.     Case Else
  10.         Exit Sub
  11.     End Select
  12.     iStr = Split(Split(strCon, iFlag)(1), ";")(0)
  13.     iPath = Left(iStr, InStrRev(iStr, "") - 1)
  14.     With Sheet4.PivotTables(1).PivotCache
  15.         .Connection = VBA.Replace(strCon, iPath, ThisWorkbook.Path)
  16.         .CommandText = VBA.Replace(.CommandText, iPath, ThisWorkbook.Path)
  17.     End With
  18. End Sub
复制代码
回复

使用道具 举报

发表于 2012-10-20 16:58 | 显示全部楼层    本楼为最佳答案   
改成SHEET4,activesheet是sheet1,sheet1里并无数透表。
回复

使用道具 举报

发表于 2012-10-20 17:01 | 显示全部楼层
貌似做在固定的一个表上好点,因为如果双击数透表内数据,会创建新工作表显示明细的。
回复

使用道具 举报

发表于 2012-10-20 17:05 | 显示全部楼层
我是从10月4号的文件里运行的,换了位置也能数透。你试试。
回复

使用道具 举报

发表于 2012-10-20 17:05 | 显示全部楼层
10月4日运费.rar (47.63 KB, 下载次数: 46)
回复

使用道具 举报

 楼主| 发表于 2012-10-20 20:20 | 显示全部楼层
本帖最后由 xiaoni 于 2012-10-20 20:21 编辑

老师如果汇总表是令一个工作薄,并且不和明细表在同一文件夹下,我试过了,就不行了,还有文件夹必须解压不解压也不行,老师请你帮我解释下每句代码的意思好吗?这代码是抄来的,我自己也不明白
回复

使用道具 举报

发表于 2012-10-20 23:17 | 显示全部楼层
那你得加一个变量来指明明细表的位置就成了。
因为代码里全是用的ThisWorkbook.Path
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-17 02:01 , Processed in 0.349082 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表