|
楼主 |
发表于 2010-2-23 09:11
|
显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
搜索了下,最终还是没有答案。
下面这个方法是说的同一个工作薄内的多个表之间,但不同工作薄之间的就不行了
http://club.excelhome.net/thread-472788-1-3.html
Private Sub Workbook_Open()
Dim strCon As String, iPath As String, i As Integer, iFlag As String, iStr As String
'定义变量
On Error Resume Next
strCon = ActiveSheet.PivotTables(1).PivotCache.Connection
'将当前活动数据透视表中缓存连接信息赋值给变量strCon
Select Case Left(strCon, 5) 'select case语句,条件为strCon变量中从左侧取5个字符
Case "ODBC;" '用于判断缓存连接信息中的数据连接方式,如果是ODBC方式
iFlag = "DBQ=" '将"DBQ=" 赋值给变量iFlag
Case "OLEDB" '用于判断缓存连接信息中的数据连接方式,如果是OLEDB方式
iFlag = "Source=" '将"DBQ=" 赋值给变量iFlag
Case Else
Exit Sub
End Select
iStr = Split(Split(strCon, iFlag)(1), ";")(0) '在变量strCon中截取文件路径信息
iPath = ActiveWorkbook.FullName '获取当前活动工作簿的完全路径
With ActiveSheet.PivotTables(1).PivotCache '替换数据透视表中缓存信息中的文件完全路径
.Connection = VBA.Replace(strCon, iStr, iPath)
.CommandText = VBA.Replace(.CommandText, iStr, iPath)
End With
End Sub
用了您的方法,很好地解决了同一工作簿中多表进行透视的问题;但如果是跨工作簿透视,好象就不行了。请问一下,跨工作簿的数据透视,能不能也想办法让它自适应路径呢? |
|