如何在Excel VBA中运行Python命令?

时间:2013-10-05 08:26:17

标签: python excel vba

我正在努力从Excel VBA(我熟悉)访问Python。这里有一个非常有用的答案(转载如下)。我非常小心地遵循了这些步骤 - 无论我使用的是Python 3.3还是Python 2.7,都会出现同样的错误。

当我使用命令按钮执行VBA代码时,它在此语句中失败:     PyScript.Language =“python” 错误消息“运行时错误380:无法创建指定语言的脚本引擎”

有什么想法吗?

我正在尝试使用stackoverflow的答案。

请仔细执行以下步骤

  1. 转到Activestate并获取[ActivePython 2.5.7] [1] MSI安装程序 我有2.6.x的DLL地狱问题
  2. 在Windows计算机中安装
  3. 安装完成后打开命令提示符并转到

      

    C:\ Python25 \ lib中\站点包\ win32comext \ axscript \客户端

  4. 执行\> python pyscript.py 你应该看到消息已注册:Python

  5. 转到ms office excel并打开工作表

  6. 转到工具>宏> Visual Basic编辑器
  7. 添加对 Microsoft脚本控件的引用![alt text] [2]
  8. 添加新的用户表单。在UserForm中添加一个CommandButton
  9. 切换到代码编辑器并插入以下代码

      

    Dim WithEvents PyScript As   MSScriptControl.ScriptControl

    Private Sub CommandButton1_Click()
       If PyScript Is Nothing Then
           Set PyScript = New MSScriptControl.ScriptControl
           PyScript.Language = "python"
           PyScript.AddObject "Sheet", Workbooks(1).Sheets(1)
           PyScript.AllowUI = True
       End If
       PyScript.ExecuteStatement "Sheet.cells(1,1).value='Hello'"
    End Sub
    
  10. 执行。根据需要享受和扩展

1 个答案:

答案 0 :(得分:3)

我正在运行32位Excel 2010和Anaconda Python 2.7。我完全按照规定执行了该程序,除了为了简单起见我没有创建用户表单或按钮,并删除了" WithEvents"从昏暗的声明,并使子公开(见下文)。使用Alt-F8从工作表运行宏,它没有问题。

我也在Excel 2013中测试过,没有问题。

Public Sub TestPyScript()
Dim PyScript As MSScriptControl.ScriptControl
   If PyScript Is Nothing Then
       Set PyScript = New MSScriptControl.ScriptControl
       PyScript.Language = "python"
       PyScript.AddObject "Sheet", Workbooks(1).Sheets(1)
       PyScript.AllowUI = True
   End If
   PyScript.ExecuteStatement "Sheet.cells(1,1).value='Hello'"
End Sub