SQL查询自适应路径和文件名更改

excel sql vba

SQL查询自适应路径和文件名更改



Sub SQL适应路径和文件名更改()

Dim strCon As String, iPath As String

Dim i As Integer, j As Integer, iFlag As String, iStr As String

Dim iT As Integer, jT As Integer

Dim sht As Worksheet, Arr, Brr

'定义变量

iPath = ThisWorkbook.FullName '获取本工作簿的完全路径

On Error Resume Next

For Each sht In ThisWorkbook.Worksheets


'SQL查询表的处理

i = sht.QueryTables.Count

If i > 0 Then

For j = 1 To i

strCon = sht.QueryTables(j).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中截取文件路径信息

With sht.QueryTables(j) '替换SQL查询表中缓存信息中的文件完全路径

.Connection = VBA.Replace(strCon, iStr, iPath)

.CommandText = VBA.Replace(.CommandText, iStr, iPath)

End With

Next j

End If


'数据透视表的处理

iT = sht.PivotTables.Count

If iT > 0 Then

For jT = 1 To iT

strCon = sht.PivotTables(jT).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中截取文件路径信息

With sht.PivotTables(jT).PivotCache '替换据透视表缓存信息中的文件完全路径

.Connection = VBA.Replace(strCon, iStr, iPath)

.CommandText = VBA.Replace(.CommandText, iStr, iPath)

End With

Next

End If

Next


'SQL查询表的处理2

For Each Conn In ThisWorkbook.Connections

With Conn.OLEDBConnection

.SourceDataFile = ThisWorkbook.FullName

Arr = .Connection

Brr = VBA.Split(Arr, ";")

For i = 1 To UBound(Brr)

If VBA.InStr(Brr(i), "Provider=SQLOLEDB.1") Then Exit For 'SQL服务器类型不进行更改,直接退出循环

If VBA.InStr(Brr(i), "Data Source") Then

Brr(i) = "Data Source=" & ThisWorkbook.FullName

Exit For

End If

Next

Arr = VBA.Join(Brr, ";")

.Connection = Arr

End With

Next

End Sub


测试附件到完美论坛下载

http://www.excelwm.net/forum.php?mod=viewthread&tid=418&extra=page=1

新浪博客:http://weibo.com/u/1139851561

百度空间:http://hi.baidu.com/335081548

完美论坛:http://w339194.s104.myverydz.com/forum.php

往期精彩在:

腾讯(QQ)微博:http://t.qq.com/huangshifang?preview

更多分享请关注微信号

微信号:Excel335081548 或:

雪山飞狐Excel




相关推荐

  • 安全ccie视频已经更新到29集,大家去下载吧,此次文件名更改了,更好识别。 已经上传到泰克论坛、优酷和土豆网,特别说明,论坛上是高清无压缩的格式,效果最好,大家尽快去下载吧。---------------------------------------------------------------------泰克
  • c#根据绝对路径获取 带后缀文件名、后缀名、文件名 1、c#根据绝对路径获取带后缀文件名、后缀名、文件名。stringstr="F:\test\Default.aspx";stringfilename=System.IO.Path.GetFileName(str);//文件名“Default
  • 生成路径及其目录下文件名的perl脚本 读取一个目录下面的文件名,并将路径及其文件名输出到src.f文件中。`rm-rfsrc.f`;$dirname="/proj/mcu/usr/trunk/common";opendir(DIR,$dirname)||die"Error,tr
  • qt中获取文件路径和文件名 在界面上添加一个textedit和一个pushbutton目的:点击button就可以在文本框中显示文件的路径和文件名称voidMainWindow::on_pushButton_2_clicked(){QStringfile_full,f
  • shell删除和复制文件(带文件名更新) 因为复制的文件复制之后要在文件名后面加上日期,所以在运行shell的时候输入了两个参数。删除的文件和复制的文件都是.war结尾的,第一个参数是去除文件格式(也就是“.war”)的文件名,第二个参数是要添加的日期运行shell的指令是:“./
  • 护卫神文件名还原工具1.0绿色版(文件名还原软件)下载,高速下载 护卫神文件名还原工具1.0绿色版(文件名还原软件)软件标签:护卫神文件名还原工具软件授权:绿色版更新时间:2012-04-0607:37:35软件类型:国产软件软件大小:448KB软件语言:简体中文 应用平台:Win2000/WinXP/W
  • Java的类名与文件名必须一致 1.Java保存的文件名必须与类名一致;2.如果文件中只有一个类,文件名必须与类名一致;3.一个Java文件中只能有一个public类;4.如果文件中不止一个类,文件名必须与public类名一致;5.如果文件中不止一个类,而且没有publi
  • 【ueditor】上传文件中文文件名失败和在线附件看不到的解决办法 后记:中文文件名的文件看不到,但英文文件名的文件可以看到,问题的原因一般都是编码格式不正确。因为windows操作系统编码是GBK2312,网站可能采用utf-8格式。原因分析清楚了,接着就是寻找在哪添加格式转换代码。一、目标利用uedit
  • ::::: 什么是文件名后缀 ::::: :::::什么是文件名后缀:::::    说起来Windows工作界面下的文件名简直是随心所欲,比如:某编辑部的2000年工作计划。文件名即可用中文直接表达,而且长度最长可达256个字符,让人看起来真是一目了然。然而在Windows环境中
  • Shell脚本遍历指定的文件名清单 Shell脚本遍历指定的文件名清单某目录下有以下文件名有规律的文件(如下),现想用shell写一个脚本,实现以下功能:假设用户输入3.log,则列出3.log,4.log,5.log...这些文件名及它们各自的属性1.log2.log3.l
  • PHP文件扩展名获取(文件名和文件地址) PHP中获取文件扩展名的N种方法从网上收罗的,基本上就以下这几种方式:​第1种方法:functionget_extension($file){substr(strrchr($file,'.'),1);}​第2种方法:
  • Linux下查看文件编码,文件编码格式转换和文件名编码转换(转载) Linux下查看文件编码,文件编码格式转换和文件名编码转换如果你需要在Linux中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题。Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8。下

你的评论

就没有什么想说的吗?

最新博客

关于我们 免责声明 移动版

©2017传客网    琼ICP备15003173号-2    

本站部分文章来源于互联网,版权归属于原作者。
本站所有转载文章言论不代表本站观点,如是侵犯了原作者的权利请发邮件联系站长(weishubao@126.com),我们收到后立即删除。
站内所有资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!

X