在xlam Addin中创建xlwings udf / macros

时间:2018-03-29 02:25:25

标签: xlwings

我可以在我的电脑上运行xlwings udf示例。但是,我目前的项目要求我:

  1. 创建一个xlam插件。
  2. 使用xlam addin创建按钮。
  3. 将这些按钮链接到调用python函数的xlwings udf / macros。换句话说,在用户单击这些按钮后,将运行一些VBA代码,其中一些代码将调用由xlwings导入的python udf / macros。
  4. 直觉上,我认为xlam addins只是一种特殊的工作簿,因此我将它们与适当命名的python脚本一起保存在同一个文件夹中。但是,一旦我运行一个调用xlwings udf的测试宏,我会收到类似这样的错误消息(我正在运行" test_udf")。

    Running test_udf

    以下是完整的错误消息:

    "ModuleNotFoundError: No module named 'udf'
      File ""<frozen importlib._bootstrap>"", line 953, in _find_and_load_unlocked
      File ""<frozen importlib._bootstrap>"", line 971, in _find_and_load
      File ""<frozen importlib._bootstrap>"", line 994, in _gcd_import
        return _bootstrap._gcd_import(name[level:], package, level)
      File ""C:\ProgramData\Anaconda3\lib\importlib\__init__.py"", line 126, in import_module
        module = import_module(module_name)
      File ""C:\ProgramData\Anaconda3\lib\site-packages\xlwings\udfs.py"", line 208, in get_udf_module
        module = get_udf_module(module_name)
      File ""C:\ProgramData\Anaconda3\lib\site-packages\xlwings\udfs.py"", line 221, in call_udf
        res = call_udf(script, fname, args, this_workbook, FromVariant(caller))
      File ""C:\ProgramData\Anaconda3\lib\site-packages\xlwings\server.py"", line 190, in CallUDF
        return func(*args)
      File ""C:\ProgramData\Anaconda3\lib\site-packages\win32com\server\policy.py"", line 586, in _invokeex_
        return S_OK, -1, self._invokeex_(dispid, lcid, wFlags, args, None, None)
      File ""C:\ProgramData\Anaconda3\lib\site-packages\win32com\server\policy.py"", line 283, in _invoke_
        return self._invoke_(dispid, lcid, wFlags, args)
      File ""C:\ProgramData\Anaconda3\lib\site-packages\win32com\server\policy.py"", line 278, in _Invoke_"
    

    基本上,我的sub的重要部分只是

    Sub test_udf()
        Debug.Print double_sum(1.1, 2.2)
    End Sub
    

    其中double_sum位于同一模块中。你知道哪里出了问题吗?是因为他们生活在一个xlam插件里面吗?如何解决这个问题?非常感谢!

0 个答案:

没有答案