将绝对路径更改为相对路径VBA
请问我怎样才能改变这个将绝对路径更改为相对路径VBA,vba,excel,Vba,Excel,请问我怎样才能改变这个 Set historyWb=Workbooks.Open(“U:\DB\U DATA\HISTORY\U LOG.xlsx”) 到相对路径?DB\u DATA\HISTORY\u LOG.xlsx 我有两个文件。如果我想将这两个文件复制到不同的位置,我需要两个文件都保持连接 Thx获取帮助如果您使用Activeworkbook.FullName它将为您提供当前活动文件的完整路径。。但是,如果您将它保存在那里,您难道不知道这一点吗?该函数被称为get\u relative,
Set historyWb=Workbooks.Open(“U:\DB\U DATA\HISTORY\U LOG.xlsx”)
到相对路径?DB\u DATA\HISTORY\u LOG.xlsx
我有两个文件。如果我想将这两个文件复制到不同的位置,我需要两个文件都保持连接
Thx获取帮助如果您使用
Activeworkbook.FullName
它将为您提供当前活动文件的完整路径。。但是,如果您将它保存在那里,您难道不知道这一点吗?该函数被称为get\u relative
,它有一个可选值,该值与get相对。如果未设置该值,则该值为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
这里有两种可能的解决方案: i) 您可以使用工作簿生成并更改路径
Dim Path As String
Path = Application.Substitute(ThisWorkbook.FullName, ThisWorkbook.Name, "")
Path = Path & "Subfolder A\"
ii)第二个是您应该能够使用“.”符号(“.”=此文件夹“…”=父文件夹)
我被这段代码弄糊涂了。可以将此应用于
Sub-XFer()将wb作为工作簿,NR作为长集wb=工作簿。打开(“Quotes.xls”)NR=工作表(“Sheet1”)。范围(“A”和Rows.Count)。结束(xlUp)。行+1与此工作簿.Sheets(“结果表”)wb.Sheets(“Sheet1”)。范围(“A”和“NR”)。值=.Range(“B4”).Value End With wb.Close savechanges:=True End Sub
我想用它将一些数据保存到不同的工作簿,但需要连接此工作簿。我找到了保存数据的代码,但没有相对路径。@Nataniell是因为你不知道它是什么驱动器吗?(即,“U:\DB\U DATA\HISTORY\U LOG.xlsx”在其他人的电脑上可能是“T:\DB\U DATA\HISTORY\U LOG.xlsx”),如果是这样,最好使用驱动器名而不是指定的字母(如“drive\U name:\DB\U DATA\HISTORY\U LOG.xlsx”)
Dim Path AS String
Path = ".\Subfolder A\"
Path = "..\..\Subfolder B\"