我在vba Excel中创建了一个工作表。我想将它保存在当前目录中,但不是在绝对路径中,那么,当它在其他地方执行时,就没有问题了。
有人可以帮忙吗?
答案 0 :(得分:16)
我不清楚你的情况究竟需要什么,但以下内容可能会让你开始。这里的关键是使用ThisWorkbook.Path
来获取相对文件路径:
Sub SaveToRelativePath()
Dim relativePath As String
relativePath = ThisWorkbook.Path & "\" & ActiveWorkbook.Name
ActiveWorkbook.SaveAs Filename:=relativePath
End Sub
答案 1 :(得分:7)
VBA有一个CurDir关键字,它将返回存储在Excel中的“当前目录”。我不确定影响当前目录的所有事情,但肯定打开或保存工作簿会改变它。
MyWorkbook.SaveAs CurDir & Application.PathSeparator & "MySavedWorkbook.xls"
这假定您要保存的工作表从未保存过,并且您希望在代码中定义文件名。
答案 2 :(得分:4)
如果省略Path,文件将自动保存在当前目录中。 尝试这样的事情:
的 ActiveWorkbook.SaveAs "Filename.xslx"
强> 的
答案 3 :(得分:2)
更进一步,要将文件保存到相对目录,可以使用replace函数。假设您将工作簿保存在:c:\ property \ california \ sacramento \ workbook.xlsx中,使用此属性将属性移动到berkley:
workBookPath = Replace(ActiveWorkBook.path, "sacramento", "berkley")
myWorkbook.SaveAs(workBookPath & "\" & "newFileName.xlsx"
仅当您的文件结构包含用于替换的文本的一个实例时才有效。 YMMV。