在Excel中使用可在任何Matchine中使用的vba的自定义函数

时间:2019-01-07 16:32:05

标签: excel vba excel-formula excel-udf

我已经通过Excel中的vba创建了一个自定义函数。如果我在计算机上使用它,则可以正常工作,但是,如果将文件更改为另一台计算机(该计算机也具有创建的功能),则该文件将不起作用。我必须更改创建函数的路径。有什么方法可以在每次将文件复制到另一台计算机时不更改路径吗?

='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 个答案:

答案 0 :(得分:0)

  1. 解决方案1:您可以在两台计算机上使用公用路径
    (例如:C:\ work,C:\ Work2)
  2. 解决方案2:您可以将所有文件放在同一路径(C:\ work)中,然后只需将文件名放在

    ='BondsTIRMDuration.xlam'!TIrbonds($ A2; F2;'AsBusinessDay.xlam'!asbusinessday('AsBusinessDay.xlam'!PrevBusinessDay(HOY())))* 100

答案 1 :(得分:0)

只需将外接程序保存在每台计算机上的正确路径中即可。

应该是这样的:

C:\Users\YOURNAME\AppData\Roaming\Microsoft\AddIns\

请参见Install and Use Excel Add-ins以确定正确的路径。

如果外接程序安装正确,则应该能够运行用户定义的函数而无需路径。

答案 2 :(得分:-1)

您可以使用应用程序调用特殊文件夹。

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