Пользовательская функция в Excel с использованием VBA, которая работает в любом совпадении
Я создал пользовательскую функцию через VBA в Excel. Если я использую его на своем компьютере, он работает нормально, но если я изменю файл на другой компьютер (где этот компьютер также имеет созданную функцию), он не будет работать. Я должен изменить путь созданной функции. Есть ли способ не менять путь каждый раз, когда я копирую файл на другой компьютер?
='C:\Users\Usuario1\Documents\Complementos\BondsTIRMDuration.xlam'!TIrbonds($A2;F2;'C:\Users\Usuario1\Documents\Complementos\AsBusinessDay.xlam'!asbusinessday('C:\Users\Usuario1\Documents\Complementos\AsBusinessDay.xlam'!PrevBusinessDay(HOY())))*100
3 ответа
Просто сохраните вашу надстройку в правильном пути на каждом компьютере.
Это должно быть что-то вроде:
C:\Users\YOURNAME\AppData\Roaming\Microsoft\AddIns\
См. Установка и использование надстроек Excel, чтобы определить правильный путь.
Если ваша надстройка установлена правильно, вы сможете запускать пользовательскую функцию без пути.
- Решение 1: Вы можете использовать общие пути на обоих компьютерах
(например: C:\work, C:\Work2) Решение 2: Вы можете поместить все файлы в один и тот же путь (C:\work), тогда вам нужно только указать имя файла
='BondsTIRMDuration.xlam' TIrbonds! ($A2;F2;'AsBusinessDay.xlam' asbusinessday('AsBusinessDay.xlam' PrevBusinessDay(HOY()))!)*100
Вы можете вызвать специальную папку с приложением.
MsgBox Application.DefaultFilePath
Этот пример будет: C:\Users\Usuario1\Documents
'Here are a few VBA path functions
MsgBox Application.Path
MsgBox Application.DefaultFilePath
MsgBox Application.TemplatesPath
MsgBox Application.StartupPath
MsgBox Application.UserLibraryPath
MsgBox Application.LibraryPath
Вы также можете создать объект wscrit для вызова других путей, например:
MsgBox CreateObject("Wscript.Shell").SpecialFolders("Desktop")
Примеры папок для объекта Wscript.shell:
AllUsersDesktop
AllUsersStartMenu
AllUsersPrograms
AllUsersStartup
Desktop
Favorites
Fonts
MyDocuments
NetHood
PrintHood
Programs
Recent
SendTo
StartMenu
Startup
Templates
И выполните макрос следующим образом (всегда нужно использовать один и тот же каталог):
Sub Macro()
AddIns.Add Filename:=Application.DefaultFilePath & "\Complement.xlam"
AddIns("Complement").Installed = True
End Sub