Сохранение листа Excel в текущем каталоге с VBA - PullRequest
15 голосов
/ 21 декабря 2010

Я создал лист в VBA Excel.Я хотел бы сохранить его в текущем каталоге, но не по абсолютному пути, тогда, когда он будет выполняться где-то еще, проблем не будет.

Может кто-нибудь помочь?

Ответы [ 4 ]

16 голосов
/ 21 декабря 2010

Мне не совсем понятно, чего требует ваша ситуация, но следующее может помочь вам начать. Ключ здесь использует ThisWorkbook.Path для получения относительного пути к файлу:

Sub SaveToRelativePath()
    Dim relativePath As String
    relativePath = ThisWorkbook.Path & "\" & ActiveWorkbook.Name
    ActiveWorkbook.SaveAs Filename:=relativePath
End Sub
7 голосов
/ 21 декабря 2010

VBA имеет ключевое слово CurDir, которое будет возвращать «текущий каталог», сохраненный в Excel.Я не уверен, что все, что влияет на текущий каталог, но определенно открытие или сохранение книги изменит его.

MyWorkbook.SaveAs CurDir & Application.PathSeparator & "MySavedWorkbook.xls"

Это предполагает, что лист, который вы хотите сохранить, никогда не был сохранен, и вы хотитеопределить имя файла в коде.

4 голосов
/ 10 июня 2015

Если путь не указан, файл будет автоматически сохранен в текущем каталоге.Попробуйте что-то вроде этого:

ActiveWorkbook.SaveAs "Filename.xslx"

2 голосов
/ 18 июля 2014

Сделав еще один шаг, чтобы сохранить файл в относительном каталоге, вы можете использовать функцию замены. Скажем, у вас есть рабочая книга, сохраненная в: c: \ property \ california \ sacramento \ workbook.xlsx, используйте ее, чтобы переместить свойство в berkley:

workBookPath = Replace(ActiveWorkBook.path, "sacramento", "berkley")
myWorkbook.SaveAs(workBookPath & "\" & "newFileName.xlsx"

Работает только в том случае, если ваша файловая структура содержит один экземпляр текста, используемого для замены. YMMV.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...