【问题标题】:Running Excel using VBA from another program使用 VBA 从另一个程序运行 Excel
【发布时间】:2019-11-10 03:08:33
【问题描述】:

我在 CAD 程序中使用 vba 来导出数据、对数据进行排序和添加数据。下面的宏正是我想要excel做的。但是我相信我仅限于让 CAD 程序通过 VBA 告诉 Excel 要做什么。此宏复制一个公式并将其粘贴到列中它下方的所有已填充单元格中。

宏代码:

Range("B1").Select
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste

iLogic 代码版本:

oBook.WorkSheets(1).Name = "Order List"
oBook.WorkSheets(2).Name = "Cut List"
wSheet1 = oBook.WorkSheets("Order List")
wSheet2 = oBook.WorkSheets("Cut List")

wSheet2.Activate
wSheet2.Range("B1").Select
wSheet2.Selection.Copy
wSheet2.Range(Selection, Selection.End(xlDown)).Select
wSheet2.Selection.Paste

不幸的是,我似乎遗漏了要在 Inventor 和 Excel 之间进行转换的内容,但我什至不知道这是否是问题所在。 非常感谢任何建议,因为我对 VBA 还是很陌生。

【问题讨论】:

  • this post。你想避免SelectActivate。此外,Selection 可能对 Inventor 没有任何意义,如果它确实如此,那么它与Selection 在 Excel 中托管时的意义不同。您需要创建 wSheet2.Application.Selection,或者如果您有对 Excel.Application 的引用(您应该),然后使用该对象变量来限定 Excel 中的所有全局内容。

标签: excel vba


【解决方案1】:

好的。我有一些从论坛上复制的代码,但不了解正在运行的功能。我相信这就是您所说的“应用程序”?

wSheet2.Columns("G:G").select()
oExcelApp.Selection.cut()
wSheet2.Columns("B:B").Select()
oExcelApp.Selection.Insert(Microsoft.Office.Interop.Excel.XlDirection.xlToRight)

虽然我不明白是什么 “(Microsoft.Office.Interop.Excel.XlDirection.xlToRight)”指的是。我了解有关方向和插入位置的部分,只是不了解它之前的内容。

【讨论】:

    【解决方案2】:

    我同意@DisGruntledDraftsman 关于不使用 Select and Activate 的观点。但是,如果您只是想获得一些可以完成工作的工作代码,则可以进行一些简单的调整。当然,这并不理想,但它应该可以工作。

    row_Count = wSheet2.Range("B1048576").End(xlUp).Row
    wSheet2.Activate
    wSheet2.Range("B1").Select
    Selection.AutoFill Destination:=wSheet2.Range("B1:B" & row_Count), Type:=xlFillDefault
    

    【讨论】:

    • wSheet2.Range("B1").AutoFill ... 也可以“完成工作”,没有SelectActivate。几乎没有任何理由可以关闭Selection.. 正如我上面的评论所说,这对 OP 的主机应用程序没有任何意义。如果Selection 存在于 OP 的主机应用程序中,则它不是指 Excel 的 Selection。此代码将不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 2011-10-20
    相关资源
    最近更新 更多