无法从另一个程序中获取 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
对象的 Range
和 Selection
运行 等顶级命令,如果您已将此代码复制到 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
才能工作。
我正在尝试 运行 来自 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
对象的 Range
和 Selection
运行 等顶级命令,如果您已将此代码复制到 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
才能工作。