Я создал лист в vba Excel. Я хотел бы сохранить его в текущем каталоге, но не в абсолютном пути, тогда, когда это будет выполнено где-то в другом месте, проблем не будет.
Может ли кто-нибудь помочь?
Я создал лист в vba Excel. Я хотел бы сохранить его в текущем каталоге, но не в абсолютном пути, тогда, когда это будет выполнено где-то в другом месте, проблем не будет.
Может ли кто-нибудь помочь?
Я не совсем понимаю, что вам требуется для вашей ситуации, но вы можете начать следующее. Ключ здесь используется ThisWorkbook.Path
для получения относительного пути к файлу:
Sub SaveToRelativePath()
Dim relativePath As String
relativePath = ThisWorkbook.Path & "\" & ActiveWorkbook.Name
ActiveWorkbook.SaveAs Filename:=relativePath
End Sub
У VBA есть ключевое слово CurDir, которое вернет "текущий каталог", хранящийся в Excel. Я не уверен, что все, что влияет на текущий каталог, но, безусловно, открытие или сохранение рабочей книги изменят его.
MyWorkbook.SaveAs CurDir & Application.PathSeparator & "MySavedWorkbook.xls"
Это предполагает, что лист, который вы хотите сохранить, никогда не был сохранен, и вы хотите определить имя файла в коде.
Если Путь опущен, файл будет автоматически сохранен в текущем каталоге. Попробуйте что-то вроде этого:
<я > ActiveWorkbook.SaveAs "Filename.xslx"
Снова сделав этот шаг, чтобы сохранить файл в относительном каталоге, вы можете использовать функцию replace. Скажем, у вас есть ваша книга, сохраненная в: c:\property\california\sacramento\workbook.xlsx, используйте это, чтобы переместить свойство в berkley:
workBookPath = Replace(ActiveWorkBook.path, "sacramento", "berkley")
myWorkbook.SaveAs(workBookPath & "\" & "newFileName.xlsx"
Работает только в том случае, если ваша файловая структура содержит один экземпляр текста, который используется для замены. YMMV.