0

我想在 Python - COM 中执行以下 Excel VBA 代码的等效操作

Private Declare Function SetDllDirectory Lib "kernel32.dll" Alias "SetDllDirectoryA" ( _
    ByVal lpPathName As String) As Boolean

所以现在在 Excel VBA 中,我可以调用SetDllDirectory(dllPath)

MSDN SetDllDirectory: http: //msdn.microsoft.com/en-gb/library/windows/desktop/ms686203 (v=vs.85).aspx

另一方面,在 Python 中,使用 win32com:

import win32com.client
xlapp = win32com.client.DispatchEx("Excel.Application") 

我该怎么做xlapp.SetDllDirectory(dllPath) (显然这是无效的,因此这个问题)?

我也尝试过ctypes.windll.kernel32.SetDllDirectoryA ,但这只是为 Python 设置 DLL 目录,而不是 xlapp(由 COM 操作的 Excel 实例)。

更多详细信息:本质上,我这样做是因为我尝试将 XLL 动态加载到 Excel (xlapp.RegisterXLL) 中。但是这个特定的 xll 文件需要一个位于特定路径中的 dll。因此,我希望能够设置 DLL 路径。

非常感谢!克里斯

4

1 回答 1

1

假设您的代码使用 PyXLL 在 Excel 中运行,那么使用 os.environ 设置路径应该可以满足您的需要。

os.environ["PATH"] += ";" + dllpath

如果您只是使用 win32com 来获取当前正在运行的 Excel 应用程序,那么更改它的路径不会那么容易,但也许您可以将 dll 依赖项捆绑到与 xll 相同的文件夹中。

于 2014-07-04T15:10:30.047 回答