VBA копировать себя в другое место - PullRequest
1 голос
/ 21 апреля 2011

У меня есть Excel-макрос в VBA, в который я хочу скопировать файл, из которого выполняется макрос, в другое место.

Я пробовал вот так

Call FileCopy(currentDir & "\" & Filename, _
otherDir & "\" & Filename)

Но я получаю исключение Access restricted, хотя у меня есть полный доступ ко всем задействованным каталогам. Это потому, что я пытаюсь "скопировать себя"? Это возможно? Если нет, могу ли я найти обходной путь?

Ответы [ 2 ]

4 голосов
/ 21 апреля 2011

Попробуйте использовать

ThisWorkbook.SaveCopyAs otherDir & "Test1"

или

ThisWorkbook.SaveAs otherDir & "Test2"

ThisWorkbook относится к книге, содержащей макрос, который вы используете ...

Update : это должно помочь вам создать папку ...

Убедитесь, что вы добавили "Microsoft Scripting Runtime" в меню Инструменты -> Ссылки.

 Dim fso As FileSystemObject
 Set fso = New FileSystemObject
 fso.CreateFolder ("C:\test\test2")
 ThisWorkbook.SaveCopyAs "c:\test\test2\ttt.xlsm"
1 голос
/ 21 апреля 2011

Использование FileCopy у меня тоже не сработало, но использование CopyFile из FileSystemObject, похоже, работает.

Сначала вам нужно добавить ссылку (Меню: Инструменты-> Ссылки) в среду выполнения сценариев Microsoft, а затем использовать FileSystemObject

Dim fso As FileSystemObject
Set fso = New FileSystemObject

fso.CopyFile currentDir & "\" & Filename, otherDir & "\" & Filename, True
''the last parameter decides weather or not you want to overwrite existing files

Set fso = Nothing

Альтернатива: сохранить документ в новом месте назначенияи затем сохраните его обратно.

ThisWorkbook.SaveAs otherDir & "\" & Filename
ThisWorkbook.SaveAs currentDir & "\" & Filename
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...