2016-12-13 143 views
-1

請我怎樣才能改變這種更改絕對路徑相對路徑VBA

Set historyWb = Workbooks.Open("U:\DB_DATA\HISTORY_LOG.xlsx")

相對路徑? DB_DATA \ HISTORY_LOG.xlsx

我有兩個文件。如果我想將這兩個文件複製到不同的位置,我需要兩個都連接。

THX的幫助

回答

1

該功能被稱爲get_relative,它有一個可選的值,相對於獲得。如果不設置的值,它是1 因此TESTME模塊將返回以下:

\DB_DATA\HISTORY_LOG.xlsx 
\HISTORY_LOG.xlsx 

這裏談到的代碼:

Option Explicit 

Sub TestMe() 

    Debug.Print get_relative("U:\DB_DATA\HISTORY_LOG.xlsx") 
    Debug.Print get_relative("U:\DB_DATA\HISTORY_LOG.xlsx", 2) 

End Sub 


Public Function get_relative(str_path As String, Optional l_number As Long = 1) As String 

     Dim str_result  As String 
     Dim l_start   As Long 
     Dim l_counter  As Long 

     For l_counter = 1 To l_number 
      l_start = InStr(l_start + 1, str_path, "\") 
     Next l_counter 

     get_relative = Mid(str_path, InStr(l_start, str_path, "\")) 

End Function 
+0

我對此代碼有點困惑。它可能適用於 'Sub XFer() Dim wb As Workbook,NR As Long 設置wb = Workbooks.Open(「Quotes.xls」) NR =表格(「Sheet1」)。Range(「A」 (「Sheet1」).Range.Count).End(xlUp).Row + 1 With ThisWorkbook.Sheets(「Result Sheet」) wb.Sheets(「Sheet1」)。Range(「A」&NR).Value = .Range(「 B4「)。Value End With wb.Close savechanges:= True End Sub' – Nataniell

0

如果使用Activeworkbook.FullName它會給你當前活動的文件的完整路徑..但​​你不知道這一點,如果你反正有保存呢?

+0

我想用它來保存一些數據到不同的工作簿,但需要將此工作簿連接起來。我找到了保存數據的代碼,但沒有找到相對路徑。 – Nataniell

+0

@Nataniell是因爲你不知道它是什麼驅動器? (例如,「U:\ DB_DATA \ HISTORY_LOG.xlsx」可能是其他人的PC上的「T:\ DB_DATA \ HISTORY_LOG.xlsx」)如果是這樣,最好使用驅動器名稱而不是指定的字母(如「 Drive_NAME:\ DB_DATA \ HISTORY_LOG.xlsx「) – Jeremy

0

有兩種可能的解決方案在這裏:

i)您可以使用一個工作簿來生成路徑,並改變它

Dim Path As String 
Path = Application.Substitute(ThisWorkbook.FullName, ThisWorkbook.Name, "") 
Path = Path & "Subfolder A\" 

二)SE cond是你應該能夠使用'。'的。 ('。'=此文件夾,'..'=父文件夾)

Dim Path AS String 
Path = ".\Subfolder A\" 
Path = "..\..\Subfolder B\"