问题描述
我的问题所依据的关于 StackOverflow 的参考文章:
Open an existing Excel file and run a macro in that file through MS Project
使用上面的参考,我在 Microsoft Project 中创建了一个新模块并插入了这个例程:
Sub sratest()
Dim xlApp As Object
Dim xlWkb As Object
Set xlApp = CreateObject("Excel.Application")
Set xlWkb = xlApp.Workbooks.Open("C:\export\SRA-text.xlsm")
xlApp.Visible = True
xlApp.Run "'SRA-text.xlsm'!SRA_Run"
End Sub
在excel中,我在Excel的“ThisWorkbook”文件夹中加载了以下代码。该文件已保存为 C:\Export\SRA-text.xlsm。
Option Explicit
Sub SRA_Run()
Dim i As Long
'enter the row Number
activesheet.cells(7+i,1) = 7+i
For i = 1 To 5
AddButton "Sheet11",i
Next i
End Sub
Public Sub AddButton(strSheetName As String,counter As Long)
Dim btn As OLEObject
Dim cLeft,cTop,cWidth,cHeight
With Worksheets(strSheetName).Range("J" & (6 + counter))
cLeft = .Left
cTop = .Top
cWidth = .Width
cHeight = .Height
End With
With Worksheets(strSheetName)
Set btn = .OLEObjects.Add(Classtype:="Forms.commandbutton.1",Link:=True,_
displayAsIcon:=False,Left:=cLeft,Top:=cTop,Width:=cWidth,_
Height:=cHeight)
End With
btn.Object.Caption = ActiveSheet.Cells(6 + counter,1) & "-iter-0"
btnCaption = Left(strSheetName,3) & counter
btn.Name = Left(strSheetName,3) & counter
ActiveSheet.Cells(6 + counter,11) = btn.Name
With ActiveWorkbook.VBProject.VBComponents( _
ActiveWorkbook.Worksheets(strSheetName).CodeName).codemodule
.InsertLines Line:=.CreateEventProc("Click",btn.Name) + 1,_
String:=vbCrLf & _
"MsgBox ""Hello world"""
End With
End Sub
从 excel 中运行该程序,该程序的运行完全符合人们的预期。但是,当我从 Microsoft Project 模块运行该程序时,系统响应说在 excel 上找不到该宏或该宏不存在。它确实打开了 Excel 文件。将行号添加到 Excel 工作表上的第 1 列的代码是这样我最终可以在按钮标题上显示对活动编号的引用。 excel 宏中唯一的变量是代码中的工作表编号。最终应用时,.xlsm excel 文件将始终具有相同的工作表编号,该文件将搜索现有的 OLE 对象,并且对于找到的每个 OLEObject,将创建一个新按钮来覆盖现有的 OLE 对象,并为其创建事件处理程序用于打开 OLEObject 图片的按钮。
对此的一个不雅的解决方案是在此 excel 工作簿中的不可见工作表上放置一个按钮,作为 .xlsm 保存的 excel 文件的一部分,预加载了一个调用 SRA_Run 过程的宏,该宏也将在“ThisWorkbook”vba 模块。我可以使用 DDE 来执行此操作,在隐藏工作表的按钮上创建一个“单击”事件以运行该过程。但是,这也不是我会选择的首选方法。从 Microsoft Project 启动 excel 宏应该不难!
本文开头的参考主题是否仅适用于 excel 到 excel,还是应该也适用于 MS Project 到 Excel?。
我已经包含了包含所有代码的 excel 工作簿。 MS Project 模块中的代码非常简单,所以我没有包含它。我正在使用 MS Project 宏代码来测试 excel 代码并验证我可以创建特定于创建的每个按钮的按钮和事件处理程序。我有完全不同的程序,一旦此程序运行,我将加载到启用了 excel 宏的工作簿中。
我阅读了原始帖子的所有评论,但无法在 MS Project 端获取此宏来启动 Excel 宏。你能提供任何我可以追踪的建议吗?互联网上关于在一个办公应用程序 (MS Project) 上创建宏并让它在另一个办公应用程序 (Excel) 上启动宏的信息很少。这是我完成这个项目的最后一个障碍,所以任何帮助将不胜感激。
我使用的是 MS Project Pro 2019 和 MS Office Excel 2019,版本 2102 内部版本 13801.20266。版本和版本适用于 Project 和 Excel。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)