使用VBA将Excel工作表保存在当前目录中

时间:2010-12-21 09:02:06

标签: excel vba excel-vba

我在vba Excel中创建了一个工作表。我想将它保存在当前目录中,但不是在绝对路径中,那么,当它在其他地方执行时,就没有问题了。

有人可以帮忙吗?

4 个答案:

答案 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。