将绝对路径更改为相对路径VBA

  • 本文关键字:路径 相对 VBA vba excel
  • 更新时间 :
  • 英文 :


请如何更改此

Set historyWb = Workbooks.Open("U:DB_DATAHISTORY_LOG.xlsx")

相对路径?db_data history_log.xlsx

我有两个文件。如果我想将这两个文件复制到不同的位置,则需要连接。

thx帮助

该函数称为 get_relative,它具有相对于获取的可选值。如果您不设置该值,则为1。因此,TestMe模块将返回以下内容:

DB_DATAHISTORY_LOG.xlsx
HISTORY_LOG.xlsx

这是代码:

Option Explicit
Sub TestMe()
    Debug.Print get_relative("U:DB_DATAHISTORY_LOG.xlsx")
    Debug.Print get_relative("U:DB_DATAHISTORY_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

如果您使用Activeworkbook.FullName,它将为您提供当前活动文件的完整路径。但是,如果您还是将其保存在那里,您是否知道这一点?

这里有两个可能的解决方案:

i)您可以使用工作簿生成路径并更改路径

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

ii)第二个是您应该能够使用'。符号('。'=此文件夹,'..'= parent文件夹)

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

最新更新