无法从另一个程序中获取 excel VBA 代码来执行

Can't get excel VBA code to execute from another program

我正在尝试 运行 来自 Solidworks 的宏,其中涉及打开先前创建的 excel sheet 和 运行 为 formatting/organisation.我记录了必要的宏,并试图通过 Solidworks 将其传递到 VBA 编辑器中,但我无法弄清楚如何正确地将代码获取到 运行。当 运行 启用宏时,Excel 运行s 并打开相关的 sheet 但 none 从 Range("A1:C3"). Select 开始的命令有效,它只是不变的数据。有什么我想念的吗?

我选择 运行 来自 SolidWorks 的命令用于 convenience/self-containment,在不同的机器上导入宏比 excel 容易得多。谢谢!

Sub RunExcelMacro()

Dim xlApp As Excel.Application
Set xlApp = New Excel.Application

Dim xlWB As Excel.Workbook
Set xlWB = xlApp.Workbooks.Open("F:\sheet.csv")

Dim objExcel As Object
Set objExcel = CreateObject("Excel.Application")

objExcel.Visible = True
objExcel.Workbooks.Open "F:\sheet.csv"
On Error Resume Next
Excel.Application.Run "F:\sheet.csv"

Range("A1:C3").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = xlMedium
End With
etc...
End Sub

您的代码基于 Excel 作为主机应用程序。针对 Application 对象的 RangeSelection 运行 等顶级命令,如果您已将此代码复制到 SolidWorks,则 Application 对象不再Excel SolidWorks.

您可以像这样使用 Excel 应用程序命令:

With objExcel

    .Run "F:\sheet.csv"
    
    .Range("A1:C3").Select
    .Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    .Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With .Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
End With
etc...

请注意,我添加了前导点以针对 with 块中的应用程序调用这些命令。

第二题

您正在尝试 运行 CSV 文件中的宏。 CSV 文件不能包含宏。您也没有引用宏名称。如果您想 运行 外国工作簿中的宏,您必须首先打开有效的启用宏的工作簿,然后按名称调用宏。

看起来像这样:

objExcel.Run "F:\sheet.xlsm!MyMacroName"

因此 .xlsm 文件必须存在并且它必须包含 MyMacroName 才能工作。