0

我在 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
4

3 回答 3

0

只需将您的加载项保存在每台计算机上的正确路径中即可。

它应该是这样的:

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

请参阅安装和使用 Excel 加载项以确定正确的路径。

如果您的加载项安装正确,您应该能够在没有路径的情况下运行用户定义的函数。

于 2019-01-08T07:31:38.833 回答
0
  1. 解决方案 1:您可以在两台计算机中使用公共路径
    (例如:C:\work、C:\Work2)
  2. 解决方案2:您可以将所有文件放在同一路径(C:\ work)中,然后您只需要放置文件名

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

于 2019-01-07T18:08:06.477 回答
-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
于 2019-01-08T08:29:02.130 回答