非常不智能的EXCEL引用ACCESS相对路径问题

本想完美解决EXCEL引用ACCESS数据库时的相对/绝对路径问题,结果花了一番功夫才发现并没有完美的解决方案。现在找到的方案是需要使用VB,且不能直接使用,需要根据引用数据的文件名修改一处代码,真不爽……

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.QueryTables(1).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
‘    iFlag = "第一次"
    iStr = Split(Split(strCon, iFlag)(1), "第一次")(0)  ‘在变量strCon中截取文件路径信息
    iPath = ThisWorkbook.Path                ‘获取当前活动工作簿的完全路径
    With ActiveSheet.QueryTables(1)     ‘替换数据透视表中缓存信息中的文件完全路径
        .Connection = VBA.Replace(strCon, iStr, iPath)
        .CommandText = VBA.Replace(.CommandText, iStr, iPath)
    End With

End Sub

加了底色的就是那该死的代码,EXCEL和ACCESS这两个发展了这么多年的软件,居然在引用数据上还搞得这么不智能,真是郁闷。我自己用都嫌烦,何况教给我不大懂电脑的同事呢。

Advertisements

Author: SuperFatCow

I am a human-being.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s