|
楼主 |
发表于 2009-11-5 23:41
|
显示全部楼层
原帖由 penghaifeng 于 2009-11-5 11:10 发表
”推广“?我可不是MS的营销员!~~~
掌握点查询语句可以提高数据处理和分析速度,仅为了大家提高一些效率!~~
呵呵,SQL语句是很不错,之前觉得发给别人,要帮别人改路径,或是要求别人只能放在指定路径下,还觉得不太方便。昨晚又在《数据透视表应用大全》的第269-270页看到,可以用VBA控制它自动更改路径的。VBA代码,在EH论坛上也有,是jssy的贴子,我试了,有效!
http://club.excelhome.net/viewth ... p;extra=&page=1
代码也顺手贴过来吧,呵呵。
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
jssy厉害吧?简直太佩服,太感激他了!
[ 本帖最后由 aliceshum 于 2009-11-5 23:43 编辑 ] |
|